原理就是,先定义一个元素 ,然后定义动画XYZ轴偏移。
body > div > div:after {content: ""
position: absolute
top: -5px
box-shadow: 0 0 12px #fff
left: 50%
margin-left: -5px
width: 5px
height: 5px
border-radius: 50%
background-color: #fff
-webkit-animation: particle_ 2s infinite linear
animation: particle_ 2s infinite linear
} body > div:nth-of-type(4) > div, body > div:nth-of-type(4) > div:after {
-webkit-animation-delay: -1.5s
animation-delay: -1.5s
}
body > div > div {
width: 200px
height: 200px
position: relative
-webkit-transform-style: preserve-3d
-webkit-animation: trail_ 2s infinite linear
transform-style: preserve-3d
animation: trail_ 2s infinite linear
}
实施步骤:
建立一个BOX
在BOX中制作一个元素。
CSS动画定义BOX旋转按照你的轨迹。
通过。
-webkit-transform:rotateY( 0deg ) rotateZ( 0deg ) rotateX( 0deg )
-moz-transform:rotateY( 0deg ) rotateZ( 0deg ) rotateX( 0deg )
-o-transform:rotateY( 0deg ) rotateZ( 0deg ) rotateX( 0deg )
transform:rotateY( 0deg ) rotateZ( 0deg ) rotateX( 0deg )
来定义旋转方向,0是不旋转。0-360度是一圈。
-webkit-transition:transform 1s
transition:transform 1s
这是设置动画时间。
一个BOX完成后,复制box,摆在统一中心点后,设置Z轴的数字。
<!DOCTYPE html><html>
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
.redcircle {undefined
position: absolute
margin: 52px 45px
width: 12px
height: 12px
background: #FF0000
border-radius: 50%
border: 1px solid #FF6347
}
.greencircle {undefined
position: absolute
margin: 52px 45px
width: 12px
height: 12px
background: #228B22
border-radius: 50%
border: 1px solid #3CB371
}
</html>
具体css代码如下:$width: 64px
$height: 64px
$dotWidth: 10px
$dotHeight: 10px
$radius: 5px
$offset: 9.37px
@function getLeft( $x ) {
@return ($width/4)*$x
}
@function getTop( $y ) {
@return ($height/4)*$y
}
@keyframes changeOpacity {
from { opacity: 1}
to { opacity: .2}
}
.q-loading {
position: fixed
top: 0
left: 0
right: 0
bottom: 0
.q-loading-overlay {
position: fixed
top: 0
left: 0
right: 0
bottom: 0
background-color: rgba(255, 255, 255, .5)
}
.q-loading-content {
position: absolute
left: 50%
top: 50%
transform: translate(-50%, -50%)
width: $width
height: $height
z-index: 2
}
.dot {
width: 10px
height: 10px
position: absolute
background-color: #0033cc
border-radius: 50% 50%
opacity: 1
animation: changeOpacity 1.04s ease infinite
}
.dot1 {
left: 0
top: 50%
margin-top: -$radius
animation-delay: 0.13s
}
.dot2 {
left: $offset
top: $offset
animation-delay: 0.26s
}
.dot3 {
left: 50%
top: 0
margin-left: -$radius
animation-delay: 0.39s
}
.dot4 {
top: $offset
right: $offset
animation-delay: 0.52s
}
.dot5 {
right: 0
top: 50%
margin-top: -$radius
animation-delay: 0.65s
}
.dot6 {
right: $offset
bottom: $offset
animation-delay: 0.78s
}
.dot7 {
bottom: 0
left: 50%
margin-left: -$radius
animation-delay: 0.91s
}
.dot8 {
bottom: $offset
left: $offset
animation-delay: 1.04s
}
}
代码使用scss定义了大圆和小圆圈的半径,不管改成多大只需要更改变量,下面样式无需改变。