Can*_*ğlu 0 css animation css-position css-animations
我正在作为开发人员开发一个网站(我没有设计,其他人给了我 HTML/CSS),我们为异步加载组件提供了一个很好的旋转动画。它的永远旋转的动画是由以下 CSS 规则定义的:
animation: spinning 1s infinite linear;(它也有供应商前缀版本,但无关紧要)。
动画spinning定义为:
@keyframes spinning {
0% { transform: rotate(0); }
100% { transform: rotate(360deg); }
}
Run Code Online (Sandbox Code Playgroud)
position: absolute !important我们的设计师为旋转元素添加了一个属性。我试图将它放置在其他元素中,但我认为该属性是不相关的。我一移开position: absolute,旋转器就停止旋转。当我再次添加它时,旋转器再次开始旋转。
我也尝试过其他position值,看起来absolute和fixed工作正常(关于旋转动画),同时relative和static导致动画停止。
为什么 CSS 位置属性会影响旋转动画?
这是重现问题的片段:
@keyframes spinning {
0% { transform: rotate(0); }
100% { transform: rotate(360deg); }
}
Run Code Online (Sandbox Code Playgroud)
@keyframes spinning {
0% { transform: rotate(0); }
100% { transform: rotate(360deg); }
}
#first{
position: absolute;
}
#second{
position: relative; /* or don't specify it at all */
}Run Code Online (Sandbox Code Playgroud)
这是因为 a默认span是 an inline-element,因此不受 影响transforms。
将位置设置为绝对会为跨度赋予块格式。
只需添加display:inline-block:
@keyframes spinning {
0% {
transform: rotate(0);
}
100% {
transform: rotate(360deg);
}
}
div.one {
background: yellow;
width: 400px;
height: 100px;
}
div.two {
background: lime;
width: 400px;
height: 100px;
}
#first {
position: absolute;
animation: spinning 1s infinite linear
}
#second {
position: relative;
/* or don't specify it at all */
animation: spinning 1s infinite linear;
display: inline-block;
}Run Code Online (Sandbox Code Playgroud)
<div class="one">
<span id='first'>hello</span>
</div>
<div class="two">
<span id='second'>hello</span>
</div>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2389 次 |
| 最近记录: |