有这样的代码
let wW = $(window).width(),
wH = $(window).height(),
mS = 50; // длина "движения" блока (px)
function Start() {
let pX = Math.floor(Math.random() * wW),
pY = Math.floor(Math.random() * wH),
dR = Math.floor(Math.random() * 360);
$('.el').css({
'left': pX+'px',
'top': pY+'px',
'transform': `rotate(${dR}deg)`
});
} Start();
.el {
width: 20px;
height: 20px;
background: red;
position: fixed;
}
.el::after {
content: '';
display: block;
width: 2px;
height: 10px;
background: black;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -100%);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="el"></div>
此代码设置元素的随机位置和旋转角度。
问题是:
mS
如何使块相对于给定方向(变量)移动第 n 个像素(变量dR
)?
您可以在 CSS 中添加多个转换。例如,
transfom: translateX(10px) rotate(10deg) translateY(5px);
- 将依次执行转换。我将举一个相当笨拙的例子,然后是这样的:
如果你只需要做一次动作,那么你可以不循环。并且要小心中间的破折号,因为它我坐了 20 分钟,却不明白为什么正方形不会那样旋转)