<div class="clock">
<div class="space">
<div class="hourhand"></div>
<div class="minutehand"></div>
<div class="sechand" id="secc"></div>
</div>
</div>
function date(){
var d = new Date();
const sec= d.getSeconds();
var x = document.getElementById('secc');
x.style.transform="rotate(sec)";
console.log(sec);
}
setInterval(date, 1000);
我正在用普通的js制作这个简单的时钟(我还没有显示CSS代码)。脚本标记- x.style.transform
中的行不接受sec
作为其输入?那么我应该如何将sec
值传递给它以使其旋转呢?
发布于 2017-02-25 13:02:04
发布于 2017-02-25 13:05:32
旋转语法:
transform: rotateZ(90deg)
这将导致在Z平面上旋转90度,但是在你的例子中,你有一个变量,你需要传递。所以你需要把你的秒转换成度。
${sec \* 6}deg
)对于您的代码:
x.style.transform=`rotateZ(${sec * 6}deg)`;
发布于 2017-02-25 14:17:35
属性用于控制许多不同的转换,您要寻找的是rotate
。
旋转是在deg
(度,0-360),rad
(弧度,0-2*π)或turn
(0-1)中指定的。
在这种情况下,我选择turn
,因为旋转的计算非常直接:now / max
(例如下午3点:15 / 24
)。
简单的例子(注意:我并没有太费心地调整手柄)
setInterval(function() {
var date = new Date(),
positions = [
date.getHours() / 24,
date.getMinutes() / 60,
date.getSeconds() / 60
],
clock = document.querySelector('.clock');
positions.forEach(function(rotation, index) {
clock.children[index].style.transform = 'rotate(' + rotation + 'turn)';
});
}, 1000);
.clock {
position: relative;
width: 200px;
height: 200px;
border-radius: 50%;
border: 1px solid gold;
}
.clock > * {
position: absolute;
bottom: 50%;
left: 50%;
height: 50%;
margin-left: -1px;
border: 2px solid #000;
transform-origin: bottom;
}
.hourhand {
height: 30%;
}
.sechand {
border-color: #f00;
}
<div class="clock">
<div class="hourhand"></div>
<div class="minutehand"></div>
<div class="sechand"></div>
</div>
如果您想要更多的劳力士效应(而不是每秒滴答),您可以设置非常短的间隔(例如,20 on ),并根据getTime
而不是getSeconds
计算二手旋转(getTime
提供自"Unix“(1970-01-01 00:00:00.000
)以来的毫秒数,例如:
date.getTime() / 60000
https://stackoverflow.com/questions/42456329
复制相似问题