动画animation的三个应用(漂浮的白云、旋转的星球、正方体合成)

×

目录

[1]漂浮的白云 [2]旋转的星球 [3]正方体合成

前面的话

  前面介绍过动画animation的详细用法,本文主要介绍动画animation的三个效果

漂浮的白云

【效果演示】

【简要介绍】

  漂浮的白云主要通过远景白云和近景白云来实现立体漂浮效果。远景和近景分别使用两张背景图片,通过改变其背景定位来实现白云移动效果,通过设置不同的动画持续时间来实现交错漂浮的效果

【主要代码】

.box{
    position: relative;
    height: 300px;
    width: 500px;
}
.in1,.in2{
    position: absolute;
    height: 100%;
    width: 100%;
    background-size:cover;
    animation: move 100s infinite linear alternate;
}
@keyframes move{
    100%{background-position: 500% 0;}
}
.in1{
    background-image: url(‘http://sandbox.runjs.cn/uploads/rs/26/ddzmgynp/cloud.png‘);
}
.in2{
    background-image: url(‘http://sandbox.runjs.cn/uploads/rs/26/ddzmgynp/cloud1.png‘);
    animation-duration: 10s;
}
<div class="box">
    <div class="in1"></div>
    <div class="in2"></div>
</div>

源码查看

旋转的星球

【效果演示】

【简要介绍】

  旋转的星球主要通过rotate()旋转函数来实现。实际上,蓝色的地球和黑色的月球并没有发生旋转,只是其父级旋转形成的视觉上的旋转效果

【代码演示】

.box{
    transform: scale(0.5);
    position: relative;
    padding: 1px;
    height: 300px;
    width: 300px;
}
.sunline{
    position:relative;
    height: 400px;
    width: 400px;
    border: 2px solid black;
    border-radius: 50%;
    margin: 50px 0 0 50px;
    display: flex;
    animation: rotate 10s infinite linear;
}
.sun{
    height: 100px;
    width: 100px;
    margin: auto;
    background-color: red;
    border-radius: 50%;
    box-shadow: 5px 5px 10px red,-5px -5px 10px red,5px -5px 10px red,-5px 5px 10px red;
}
.earthline{
    position: absolute;
    right: 0;
    top: 50%;
    height: 200px;
    width: 200px;
    margin: -100px -100px 0 0;
    border: 1px solid black;
    border-radius: 50%;
    display: flex;
    animation: rotate 2s infinite linear;
}
.earth{
    margin: auto;
    height: 50px;
    width: 50px;
    background-color: blue;
    border-radius: 50%;
}
.moon{
    position: absolute;
    left: 0;
    top: 50%;
    height: 20px;
    width: 20px;
    margin: -10px 0 0 -10px;
    background-color: black;
    border-radius: 50%;
}
@keyframes rotate{
    100%{transform:rotate(360deg);}
}
<div class="box">
    <div class="sunline">
        <div class="sun"></div>
        <div class="earthline">
            <div class="earth"></div>
            <div class="moon"></div>
        </div>
    </div>
</div>

源码查看

正方体合成

【效果演示】

【简要介绍】

  该效果主要通过设置计算后的延迟时间来达到正方体的各个边顺序动画的效果。一次动画结束后,通过触发animationend事件重置animation-name来实现重复动画的效果

【代码演示】

ul{
    margin: 0;
    padding: 0;
    list-style: none;
}
.box{
    height: 100px;
    width: 100px;
    perspective: 500px;
    margin: 50px 0 0 50px;
}
.list{
    position: relative;
    height: 100px;
    width: 100px;
    background-color: blue;
    transform-style: preserve-3d;
    transform-origin: 0 0 0;
    animation: rotate 1s  10s 3 both linear;
}
.in{
    position: absolute;
    height: 100px;
    width: 100px;
}
.list .in:nth-child(6){
    background-color: pink;
    transform-origin: top;
    animation: in6 2s both;
}
.list .in:nth-child(5){
    background-color: lightgreen;
    transform-origin: right;
    animation: in5 2s 2s both;
}
.list .in:nth-child(4){
    background-color: lightblue;
    transform-origin: bottom;
    animation: in4 2s 4s both;
}
.list .in:nth-child(3){
    background-color: lightcoral;
    transform-origin: left;
    animation: in3 2s 6s both;
}
.list .in:nth-child(2){
    background-color: lightcyan;
    animation: in2 2s 8s both;
}
.list .in:nth-child(1){background-color: lightsalmon;}
.box:hover .list{animation-play-state: paused;}
.box:hover .in{animation-play-state: paused;}
@keyframes in6{100%{transform: rotateX(90deg);}}
@keyframes in5{100%{transform: rotateY(90deg);}}
@keyframes in4{100%{transform: rotateX(-90deg);}}
@keyframes in3{100%{transform: rotateY(-90deg);}}
@keyframes in2{100%{transform: translateZ(100px);}}
@keyframes rotate{100%{transform: rotate3d(1,1,1,360deg);}}
<div class="box">
    <ul class="list" id="list">
        <li class="in"></li>
        <li class="in"></li>
        <li class="in"></li>
        <li class="in"></li>
        <li class="in"></li>
        <li class="in"></li>
    </ul>
</div>
list.addEventListener(‘animationend‘,function(e){
    e = e || event;
    var target = e.target || e.srcElement;
    if(target.nodeName == ‘UL‘){
        list.style.animationName = ‘none‘;
        var children = list.getElementsByTagName(‘li‘);
        for(var i = 0; i < children.length;i++){
            children[i].style.animationName = ‘none‘;
        }
        setTimeout(function(){
            list.style.animationName = ‘rotate‘;
            var children = list.getElementsByTagName(‘li‘);
            for(var i = 0; i < children.length;i++){
                children[i].style.animationName = ‘in‘ + (i+1);
            }
        },100);
    }
},false);

源码查看

时间: 2024-10-13 14:40:58

动画animation的三个应用(漂浮的白云、旋转的星球、正方体合成)的相关文章

CSS3的变形transform、过渡transition、动画animation学习

学习CSS3动画animation得先了解一些关于变形transform.过渡transition的知识 这些新属性大多在新版浏览器得到了支持,有些需要添加浏览器前缀(-webkit-.-moz-.-ms-.-o-),本文为简化内容,直接使用了原版属性 根据不同属性的支持度,在实际使用的时候需要添加相应的浏览器前缀支持 目录: 变形transform 过渡transition 动画animation 一.变形transform 变形有rotate旋转.scale缩放.translate位移.sk

css3中的变形(transform)、过渡(transtion)、动画(animation)

Transform字面上就是变形,改变的意思.在CSS3中transform主要包括以下几种:旋转rotate.扭曲skew.缩放scale和移动translate以及矩阵变形matrix.下面我们一起来看看CSS3中transform的旋转rotate.扭曲skew.缩放scale和移动translate具体如何实现,老样子,我们就从transform的语法开始吧.是构成transtion和animation的基础. 语法: transform : none | <transform-func

css3 动画(animation)-简单入门

css3之动画(animation) css3中我们可以使用动画,由于取代以前的gif图片,flash动画,以及部分javascript代码(相信有很多同学都用过jquery中的animate方法来做一些动画).具体如何使用呢??? 首先定义一个动画,然后引用动画. 定义一个动画要使用@keyframes,然后跟上你要定义的动画的名字.关键字"from"表示开始, "to"表示结束,等同于0% 和 100%.最好使用百分比来表示变化发生的时间,这样的话还可以定义从开

《The CG Tutorial》阅读笔记——动画 Animation

这段时间阅读了英文版的NVidia官方的<The CG Tutorial>,通过它来学习基本的图形学知识和着色器编程. 在此做一个阅读记录. 动画 Animation 一.基于时间的运动 Movement in Time 实现动画渲染,需要应用程序对时间进行监测,并将它作为一个全局变量传递给着色器. 尽量在GPU上使用顶点着色器执行动画计算是一种高效的动画实现方式,它能够释放CPU,让CPU处理更多的复杂计算,比如碰撞检测,人工智能与游戏玩法. 二.一个做脉冲运动的对象 A Pulsating

cocos2dx动画Animation介绍

 一.帧动画 你能够通过一系列图片文件,像例如以下这样,创建一个动画: [cpp] CCAnimation *animation = CCAnimation::create(); //从本地文件系统中载入图片文件到CCSpriteFrame中区,然后加入到CCAnimation中 for (int i = 1; i < 15; i++) { char szImageFileName[128] = {0}; sprintf(szImageFileName, "Images/grossin

CSS3动画属性:动画(animation)

一:动画(animation)的参数详解 由于上面用到了animation动画,这里详细介绍下这个animation的参数. 简介 CSS动画(Animations)简单说就是在一段固定的动画时间内暗中在某一频率内改变其CSS某个或某些值,从而达到视觉上的转换动画效果.Animations的很多方面都是可以控制的,包括动画运行时间,开始值和结束值,还有动画的暂停和延迟其开始时间等. 语法 <single-animation> = <single-animation-name> ||

精灵动画Animation对话框组成Idle动画的各精灵

精灵动画Animation对话框组成Idle动画的各精灵 1.3  精灵动画 场景中已经添加了精灵,现在是时候让让它动起来了.读者也许已经从精灵图集中,各精灵的命名中看出来了,这个精灵一共有两种动画状态:Idle(空闲)和Walking(走).本节将讲解使用Unity自带的工具,创建精灵动画,并实现简单动画控制的方法本文选自Unity 2D游戏开发快速入门. 1.3.1  Animation 要将精灵图集中的多个精灵的动作,组合成一个动画,可以使用Unity提供的Animation工具.具体的说

css3 动画 animation transform

<!DOCTYPE html><!-- saved from url=(0073)http://www.w2bc.com/demo/201504/2015-04-27-jquery-tecent-focus/index.html --><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <m

CSS3(4)---动画(animation)

CSS3(4)---动画(animation) 之前有写过过渡:CSS3(2)--- 过渡(transition) 个人理解两者不同点在于 过渡 只能指定属性的 开始值 与 结束值,然后在这两个属性值之间进行平滑过渡来实现动画效果,因此只能实现简单的动画效果. 动画 除了定义 开始值 和 结束值,在这之间还可以定义多个关键帧以及定义每个关键帧中元素的属性值来实现复杂的动画效果. 一.动画语法 1.属性语法 语法格式 animation:动画名称 动画时间 运动曲线 何时开始 播放次数 是否反方向