作者:Jie | 来源:互联网 | 2023-05-28 12:52
我在CSS中创建旋转地球效果.我用CSS创建了globe:
body {
background-color: #111;
}
#earth {
width: 300px;
height: 300px;
background: url(http://www.noirextreme.com/digital/Earth-Color4096.jpg);
border-radius: 50%;
background-size: 610px;
box-shadow: inset 8px 36px 80px 36px rgb(0, 0, 0),
inset -6px 0 12px 4px rgba(255, 255, 255, 0.3);
animation-name: rotate;
animation-duration: 12s;
animation-iteration-count: infinite;
animation-timing-function: linear;
-webkit-animation-name: rotate;
-webkit-animation-duration: 12s;
-webkit-animation-iteration-count: infinite;
-webkit-animation-timing-function: linear;
}
@keyframes rotate {
from { background-position: 0px 0px; }
to { background-position: 500px 0px; }
}
@-webkit-keyframes rotate {
from { background-position: 0px 0px; }
to { background-position: 500px 0px; }
}
但它停止然后图像重置并重新开始.我想让它顺利移动而不会抽搐.非常感谢你!
1> The Pragmati..:
在background-position: 500px 0px;
与610px取代500像素,这是background-size
body {
background-color: #111;
}
#earth {
width: 300px;
height: 300px;
background: url(http://www.noirextreme.com/digital/Earth-Color4096.jpg);
border-radius: 50%;
background-size: 610px;
box-shadow: inset 8px 36px 80px 36px rgb(0, 0, 0), inset -6px 0 12px 4px rgba(255, 255, 255, 0.3);
animation-name: rotate;
animation-duration: 12s;
animation-iteration-count: infinite;
animation-timing-function: linear;
-webkit-animation-name: rotate;
-webkit-animation-duration: 12s;
-webkit-animation-iteration-count: infinite;
-webkit-animation-timing-function: linear;
}
@keyframes rotate {
from {
background-position: 0px 0px;
}
to {
background-position: 610px 0px;
}
}
@-webkit-keyframes rotate {
from {
background-position: 0px 0px;
}
to {
background-position: 610px 0px;
}
}
2> Martijn..:
您的代码中的问题是imagesize(610px)和动画的偏移(500px)不同,并且在动画重置时它跳跃(110px).
我喜欢使用的一个简单技巧,而不是像素中定义动画偏移:以百分比定义它.
我没有告诉它移动610px,而是告诉它移动100%.
100%方法的好处是,如果您能够绘制图片,则不必更改CSS中的所有硬编码值,IMO应该是首选方法.
请注意:似乎从0移动到-100%会产生跳跃.因为我们需要旋转朝正确的方向,我尝试开始100%并将其移动到0,但此时图像不再存在.
@keyframes rotate {
from { background-position: 100% 0; }
to { background-position: 0 0; }
}
这是片段,但是100%而不是像素值:
*请注意:动画仍然跳跃,但我无法测试新代码,因为图像不再存在.逻辑工作,但这种实现似乎没有.以下代码仅是带有TS代码的演示.
body {
background-color: #111;
}
#earth {
width: 300px;
height: 300px;
background: url(http://www.noirextreme.com/digital/Earth-Color4096.jpg);
border-radius: 50%;
background-size: 610px;
box-shadow: inset 8px 36px 80px 36px rgb(0, 0, 0), inset -6px 0 12px 4px rgba(255, 255, 255, 0.3);
animation-name: rotate;
animation-duration: 12s;
animation-iteration-count: infinite;
animation-timing-function: linear;
}
@keyframes rotate {
from { background-position: 100% 0; }
to { background-position: 0 0; }
}