css3 动画篇

小实例

1.涟漪效果
要点

  • 涟漪效果需要两个span,大小与闪烁的容器外围一般大
  • 两个span的位置与外围容器重合
  • 层级外围层级要高于两个span的层级,但是span层级要高于当前总体容器
  • 涟漪效果是一个透明度变换的过程从 1到0再到1的过程

html

  <div class="live">
    <img src="../../assets/png/11.jpeg" alt="">
    <span class="outSpan"></span>
    <span class="innerSpan"></span>
  </div>

css部分

.live{
    position: relative;
    width: 100px;
    height: 100px;
  }
  .live img{
      width: 100px;
      height: 100px;
      z-index: 0;
    }


  .live span{
            position: absolute;
            /*display: inline-block;*/
            width: 100px;
            height: 100px;
            left: 0;
            bottom: 0;
            background: #fff;
            border-radius: 50%;
            -webkit-animation: living 3s linear infinite;
            z-index: 1;
          }
  .innerSpan{
              -webkit-animation-delay: 1.5s; /*第二个span动画延迟1.5秒*/
            }

css动画部分

  @keyframes living {
    0%{
    transform: scale(1);
    opacity: 0.5;
  }
    50%{
      transform: scale(1.5);
      opacity: 0;   /*圆形放大的同时,透明度逐渐减小为0*/
    }
    100%{
        transform: scale(1);
        opacity: 0.5;
      }
  }

动画0% - 100% 表示关键帧即form - to

2.缓缓下拉效果

 .big{
    width: 100px;
    height: 50px;
    background: #6492ff;
    transition: height 2s;
    &:hover{
      height: 300px;
    }
  }

anmation参数详解

animation: name duration timing-function delay iteration-count direction fill-mode play-state;
  • name 定义的动画名字

  • duration 动画完成需要的时间

  • timing-function动画以什么速度完成
    - linear 动画从头到尾的速度是相同的。
    - ease 慢 -> 快 -> 慢
    - ease-in 动画以低速开始。
    - ease-out 动画以低速结束。
    - ease-in-out 动画以低速开始和结束。
    - cubic-bezier(n,n,n,n) 贝塞尔曲线,上述五个属性其实都是固定值的贝塞尔曲线

  • delay 设置动画在启动前的延迟间隔。可以理解为动画开始之前的广告,需要几秒广告后动画才会开始(每次只会在第一次加载的时候才有有延迟)

  • iteration-count 定义动画的播放次数

  • direction是否会轮流反方向播放动画, 即1,2,3,4然后就是4,3,2,1接着在1,2,3,4 => 4,3,2,1。。
    属性值可以控制方向,也可以控制基数时正向播放,偶数时反向播放,或者反过来

  • fill-mode 属性规定当动画不播放时(当动画完成时,或当动画有一个延迟未开始播放时),要应用到元素的样式。
    动画可以分为三张状态第一种是开始之前的等待,第二个是正在运动,第三种状态时结束
    -none:这是默认值,正是这个值,使得动画不会对动画等待和动画完成的元素样式产生改变;
    -backwards:如果设置为这个值,那么在动画等待的那段时间内,元素的样式将设置为动画第一帧的样式;
    -forwards:如果设置为这个值,那么在动画结束后,元素的样式将设置为动画的最后一帧的样式;

both:相当于同时配置了backwards和forwards,意味着在动画等待和动画结束状态,元素将分别应用动画第一帧和最后一帧的样式。

  • play-state 动画的状态
    -paused 挂起
    -running 正在运行

关于贝塞尔曲线

  • 动画的速度几个值全部是有别塞尔曲线来的(timeing-function)

1 ease: cubic-bezier(0.25, 0.1, 0.25, 1.0)
2 linear: cubic-bezier(0.0, 0.0, 1.0, 1.0)
3 ease-in: cubic-bezier(0.42, 0, 1.0, 1.0)
4 ease-out: cubic-bezier(0, 0, 0.58, 1.0)
5 ease-in-out: cubic-bezier(0.42, 0, 0.58, 1.0)

  • 什么是贝塞尔曲线

这里讲的贝塞尔曲线通过四个点来定义一条平滑的曲线。这四个值描述了控制点的位置p1,p2,(x1,y1,x2,y2),值得范围在0-1之间,其他两个点永远是p0(0,0)p3(1,1)


image.png

贝塞尔曲线的展示效果是由4个点控制的,如上图我们把p0,p1,p2,p3四个点用虚线分别连接在一起,然后我们拉动p1或者p2这个时候,贝塞尔曲线就会像皮筋一样,改变展现的方式

(0,0)、(x1,y1)、(x2,y2)、(1,1)四个点形成了运动速度曲线图即贝塞尔曲线:可以分为以下这个五种情况

情况1:x∈[0,0.5]时y<x; x∈[0.5,1]时 y>x。那么大致的曲线是这个样子的
image.png
情况2:x∈[0,0.5]时y>x; x∈[0.5,1]时 y<x。那么大致的曲线是这个样子的
image.png

情况3:x∈[0,1]时 y>x; 那么大致的曲线是这个样子的


image.png

情况4:x∈[0,1]时 y<x; 那么大致的曲线是这个样子的


image.png

情况5:x1 = y1,x2=y2;那么曲线一定是这个样子的
image.png

动画运用中可能要比这复杂一点,但是动画运动的速率都是由贝塞尔曲线演化过来的,掌握好这五种情况就够用了

anmation与 transition的区别

  • 某个元素定义了transition,当这个元素的某个属性发生改变时,会按照transition实现过渡效果,动画就产生了,但是不能自行触发,需要通过事件触发,”只能平滑改变css值“(不能在动画开始后改变动画速度)
  • animation也是指定某一个属性在两个值实现过渡效果时产生动画,animation可以通过keyframe显式控制当前帧的属性值,而transition只能隐式的进行,相对而言比较灵活,因为比transition多了几个参数定义动画的播放次数 ,规定动画的播放方向,动画的状态,动画应用的元素样式
总结一下

区别:

1.触发条件不同。transition通常和hover等事件配合使用,由事件触发。animation则立即播放
2.循环。 animation可以设定循环次数。
3.精确性。 animation可以设定每一帧的样式和时间。tranistion 只能设定头尾。 animation中可以设置每一帧需要单独变化的样式属性, transition中所有样式属性都要一起变化。
4.与javascript的交互。animation与js的交互不是很紧密。tranistion和js的结合更强大。js设定要变化的样式,transition负责动画效果,天作之合,比之前只能用js时方便太多。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,761评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,953评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,998评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,248评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,130评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,145评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,550评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,236评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,510评论 1 291
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,601评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,376评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,247评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,613评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,911评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,191评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,532评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,739评论 2 335