【发布时间】:2021-02-16 22:57:36
【问题描述】:
FIRST Run the script below to understand what I'm talking about here
我们在这里拥有什么
嗯,我们有一个盒子和一个容器。
2 秒后,它开始从位置 1 移动到位置 2。
js代码基本是把box的grid-column属性改成替换掉。
问题
我怎样才能让它的运动更顺畅一些?
就像,transition: all 1s 不起作用。有什么想法吗?
setTimeout( () => {
const box = document.getElementById("box");
box.classList.remove("pos-1");
box.classList.add("pos-2");
}, 2000);
.container {
width: 300px;
height: 300px;
display: grid;
grid-template-columns: repeat(6, 1fr);
grid-template-rows: repeat(6, 1fr);
}
#box {
background-color: red
}
.pos-1 {
grid-column: 1;
}
.pos-2 {
grid-column: 4;
}
<div class="container">
<span class="pos-1" id="box"></span>
</div>
【问题讨论】:
-
你可以使用带有过渡移动效果的span,然后当它到达想要的位置时,设置它的显示为none;并在网格中的新位置设置框显示 =)
-
您设置它的方式不会很顺畅。没有明智的过渡坐标,因为您不让它从一个位置移动到另一个位置。你让它从一个单元格跳到另一个单元格,它会跳过中间的所有空间。
-
您不能将过渡应用于
grid-column属性(列位置),只能应用于grid-template-columns属性(列大小)。 -
我认为 html { scroll-behavior: smooth;} 在 html 标签上应该可以缓解这个
-
@NishantShamVispute 怎么会这样?
scroll-behavior: smooth;无法确保顺利过渡。它与手头的问题无关。仅当您使用来自hyper reference的anchor目标时,才会将跳转行为从跳转更改为滚动。这里没有锚,没有超引用或目标。
标签: javascript html css css-transitions css-grid