我有一个简单的菜单,它当前正在使用我想要动画的 CSS 网格。但是,grid-template-columns不能流畅地动画。我现在正在做完全不同的菜单,但是在我寻找解决方案的过程中,我遇到了一些我无法弄清楚的事情。我的第一个想法是,虽然它可能根本不是一个好主意,并且可能不是关键帧动画的合适替代方案,但我的第一个想法是在 while 循环中更新样式以使项目的大小增加动画。它不起作用。
相关的JS:
$('#select-oak').hover(function () {
let start = new Date().getTime();
let elapsed = 0;
while (elapsed <= 1000) {
elapsed = new Date().getTime() - start;
let val = elapsed / 1000;
if (elapsed % 100 === 0) {
$('.selector-block').css('grid-template-columns', `${1.0 + val}fr 1fr 1fr 1fr`);
console.log(1 + val);
console.log(elapsed);
}
}
}
CSS:
.selector-block {
position: relative;
overflow: hidden;
top: -32.5vh;
background-color: white;
gap: 5px;
width: 100vw;
height: 90vh;
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr;
clip-path: polygon(0 36%, 100% 0, 100% 60%, 0% 100%);
z-index: 3;
}
#select-oak {
position: relative;
overflow: hidden;
text-align: center;
background-color: rgb(94, 80, 21);
top: 21.5%;
width: 100%;
height: 200%;
}
#select-oak img {
position: relative;
left: -10vw;
transform: scale(1.06);
filter: blur(5px);
}
#select-oak img:hover {
filter: none;
transform: scale(1.1);
transition: ease-in-out 0.5s;
}
这似乎是一种非常规的方法,所以我对它不起作用并不感到惊讶,但由于我对 CSS、JS 和 JQuery 相对较新,我很好奇是什么阻止了它的工作,只是为了帮助我理解使用 JQuery 和 CSS。这是结果。如您所见,即使打印出正确的值,它也不会更新,直到循环中的最后一次传递。
所以我有两个问题:
这是我的代码有问题,还是您不能做的事情?
如果可以更新这样的样式,这是一种不好的做法,为什么?
子衿沉夜
潇湘沐
相关分类