CSS动画实例:涡旋

设页面中有<div class=" vortex "></div>,若定义. vortex的样式规则和关键帧如下:

.vortex

{

position: relative;

margin: 100px auto;

border-radius: 50%;

width:200px;

height:200px;

border: 4px solid transparent;

animation: rotate 3s linear infinite;

border-top-color: rgba(255, 0, 0, 0.8);

border-bottom-color: rgba(0, 0,255, 0.8);

}

@keyframes rotate

{

0%   { transform: rotate(0deg);  }

50%  { transform: rotate(180deg); }

100% { transform: rotate(360deg); }

}

可在页面中呈现出如图1所示的旋转动画。

图1  相对两段弧的旋转

若在页面中放置9个如图1所示的弧段,并且这个9个弧段所在的圆同圆心,9个圆的半径依次相差10px,定义动画关键帧,使这9个弧段旋转起来,可得到涡旋的动画效果。

编写的HTML文件如下。

<!DOCTYPE html>

<html>

<title>涡旋</title>

<head>

<style>

.container

{

position: relative;

margin: 50px auto;

width: 400px;

height:400px;

background:#d8d8d8;

border: 4px solid rgba(255, 0, 0, 0.9);

border-radius: 10%;

}

.vortex

{

position: relative;

margin: 50px auto;

width: 300px;

height: 300px;

display: block;

overflow: hidden;

}

.vortex div

{

box-sizing: border-box;

border-radius: 50%;

padding: 10px;

height: 100%;

border: 4px solid transparent;

animation: rotate linear 4s infinite;

border-top-color: rgba(255, 0, 0, 0.8);

border-bottom-color: rgba(0, 0,255, 0.8);

}

@keyframes rotate

{

0%   { transform: rotate(0deg);  }

50%  { transform: rotate(180deg); }

100% { transform: rotate(360deg); }

}

div:hover

{

animation-play-state: paused;

}

</style>

</head>

<body>

<div class="container">

<div class='vortex'>

<div><div><div><div><div><div><div><div><div>

</div></div></div></div></div></div></div></div></div>

</div>

</div>

</body>

</html>

在浏览器中打开包含这段HTML代码的html文件,可以呈现出如图2所示的动画效果。

图2  涡旋(1)

在动画运行时,若将鼠标移动到某个弧段对应的<div>上,则该<div>之内的弧段会旋转,之外的弧段暂停旋转,呈现出如图3所示的动画效果。

图3  可暂停旋转的涡旋

若将上面.vortex div样式定义中的语句“border-bottom-color: rgba(0, 0,255, 0.8);”,修改为“border-left-color: rgba(255, 0,0,0.5);”,其余部分保持不变,则红色弧段为一个半圆,此时呈现出如图4所示的动画效果。

图4  涡旋(2)

若再将.vortex div样式定义中的语句“animation: rotate linear 4s infinite;”修改为:

animation: rotate 3s cubic-bezier(0.55, 0.38, 0.21, 0.88) infinite;

则动画的执行过程不再是匀速的,而是按在立方贝塞尔函数中定义速度函数进行运行,此时呈现出如图5所示的动画效果。

图5  涡旋(3)

若只是删除掉.vortex div样式定义中的语句border-bottom-color: rgba(0, 0,255, 0.8);,则蓝色弧段被删掉,只剩下红色弧段,此时呈现出如图6所示的动画效果。

图6  涡旋(4)

若修改.vortex div样式定义如下:

.vortex div

{

box-sizing: border-box;

border-radius: 50%;

padding: 10px;

height: 100%;

border: 4px solid transparent;

animation: rotate 3s linear infinite;

border-top-color: rgba(255, 0, 0, 0.5);

border-left-color: rgba(255,255,0,0.5);

border-right-color: rgba(0,0,255,0.5);

}

此时圆弧由黄色、红色和蓝色三段组成,呈现出如图7所示的动画效果。

图7  涡旋(5)

(0)

相关推荐

  • CSS动画实例:圆与圆的碰撞

    在页面中放置9个<div class=" circle"></div>,定义每个.circle的样式规则,使得9个圆在页面中显示为半径依次相差20px的同心 ...

  • CSS动画实例:SierPinski地毯

    设页面中有<div class="shape"></div>,若定义.shape的样式规则为: .shape { width: 100px; height: ...

  • CSS动画实例:行星和卫星

    设页面中有<div class=" planet "></div>,用来绘制一个行星和卫星图形.这个图形包括三部分:行星.卫星和卫星旋转的轨道.定义. pl ...

  • CSS动画实例:小圆球的海洋

    CSS背景属性用于定义HTML元素的背景,在CSS提供的背景属性中, background-image:指定要使用的一个或多个背景图像: background-color:指定要使用的背景颜色: ba ...

  • CSS动画实例:太极图在旋转

    利用CSS可以构造出图形,然后可以对构造的图形添加动画效果.下面我们通过旋转的太极图.放大的五角星.跳"双人舞"的弯月等实例来体会纯CSS实现动画的方法. 1.旋转的太极图 设页面 ...

  • CSS动画实例:升空的气球

    CSS动画实例:升空的气球

  • CSS动画实例:Loading加载动画效果(三)

    3.小圆型Loading 这类Loading动画的基本思想是:在呈现容器中定义1个或多个子层,再对每个子层进行样式定义,使得其均显示为一个实心圆形,最后编写关键帧动画控制,使得各个实心圆或者大小发生改 ...

  • CSS动画实例:Loading加载动画效果(二)

    2.条状型Loading 这类Loading动画的基本思想是:在呈现容器中定义一个或多个子层,再对每个子层进行样式定义,使得其显示为一个条形或方形,最后编写关键帧动画控制,使得各个条形(或方形)的大小 ...

  • CSS动画实例:Loading加载动画效果(一)

    一些网站或者APP在加载新东西的时候,往往会给出一个好看有趣的Loading图,大部分的Loading样式都可以使用CSS3制作出来,它不仅比直接使用gif图简单方便,还能节省加载时间和空间.下面介绍 ...