热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在CSS中旋转地球仪

如何解决《在CSS中旋转地球仪》经验,为你挑选了2个好方法。

我在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; }
}

推荐阅读
author-avatar
Jie
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有