我正在 js 课程中进行练习,根据作业,我需要使用时间参数创建一个进度函数,该函数会在给定时间内更改 div 的大小,使用scaleX,在页面上显示百分比。我现在这样做了,但是当我添加 div 的百分比时,它开始填充得更快并且超出了页面。告诉我出了什么问题。
/* Добавлено для визуализации в сниппете */
const div = document.querySelector('.progress-bar');
const timeEl = document.getElementById('time');
/* ===================================== */
function progress(time) {
let startPoint = 0;
div.style.transform = 'scaleX(0)';
let speed = time / 31;
let timer = setInterval(() => {
if (startPoint > 31) {
clearInterval(timer);
} else {
div.style.transform = `scaleX(${startPoint})`;
timeEl.textContent = `${(startPoint / 31) * 100} %`;
}
startPoint++;
}, speed);
}
/* запуск */
progress(time);
*,
*::after,
*::before {
box-sizing: border-box;
}
html,
body {
width: 100%;
height: 100%;
}
body {
margin: 0;
background-color: rgb(227, 227, 207);
}
.container {
width: 100%;
height: 100%;
display: grid;
align-items: center;
justify-content: center;
padding: 20px;
}
.progress-bar {
max-width: 500px;
height: 20px;
padding: 5px;
background-color: rgb(128, 128, 195);
transition: transform ease-in-out .5s;
transform-origin: left;
}
<div class="container">
<div class="progress-bar"></div>
<span id="time"></span>
</div>
scaleX
为了使对象具有设定的尺寸,它必须不超过 1。代码应该是这样的:div.style.transform =
scaleX(${startPoint / 31});
但我会关注用于构建进度的想法。它使用像 inlineSize 这样的属性