美文网首页
CSS3动画

CSS3动画

作者: _前端码农_ | 来源:发表于2018-11-22 16:21 被阅读0次

第一部分:CSS Transition

img{
    transition: 1s height, 1s 1s width ease;
    height:15px;
    width:15px;
}

img:hover{
    height: 450px;
    width: 450px;
}

(1)linear:匀速
(2)ease-in:加速
(3)ease-out:减速
(4)cubic-bezier函数:自定义速度模式

transition的优点在于简单易用,但是它有几个很大的局限。
(1)transition需要事件触发,所以没法在网页加载时自动发生。
(2)transition是一次性的,不能重复发生,除非一再触发。
(3)transition只能定义开始状态和结束状态,不能定义中间状态,也就是说只有两个状态。
(4)一条transition规则,只能定义一个属性的变化,不能涉及多个属性。
CSS Animation就是为了解决这些问题而提出的。

第二部分:CSS Animation

首先,CSS Animation需要指定动画一个周期持续的时间,以及动画效果的名称。

div:hover {
  animation: 1s rainbow;
}

@keyframes rainbow {
  0% { background: #c00; }
  50% { background: orange; }
  100% { background: yellowgreen; }
}

默认情况下,动画只播放一次。加入infinite关键字,可以让动画无限次播放。
div:hover {
  animation: 1s rainbow infinite;
}

也可以指定动画具体播放的次数,比如3次。
div:hover {
  animation: 1s rainbow 3;
}

动画结束以后,会立即从结束状态跳回到起始状态。如果想让动画保持在结束状态,需要使用animation-fill-mode属性。
div:hover {
  animation: 1s rainbow forwards;
}

animation-fill-mode还可以使用下列值:
(1)none:默认值,回到动画没开始时的状态。
(2)backwards:让动画回到第一帧的状态。
(3)both: 根据animation-direction(见后)轮流应用forwards和backwards规则。

同transition一样,animation也是一个简写形式。
div:hover {
  animation: 1s 1s rainbow linear 3 forwards normal;
}

div:hover {
  animation-name: rainbow;
  animation-duration: 1s;
  animation-timing-function: linear;
  animation-delay: 1s;
  animation-fill-mode:forwards;
  animation-direction: normal;
  animation-iteration-count: 3;
}

如果想让动画保持突然终止时的状态,就要使用animation-play-state属性。
div {
    animation: spin 1s linear infinite;
    animation-play-state: paused;
}

div:hover {
  animation-play-state: running;
}
image.png

第三部分:3D转换

https://www.zhangxinxu.com/wordpress/2012/09/css3-3d-transform-perspective-animate-transition/

//这句话要添加到要做3D转换元素的父元素上,这样他的子元素就都支持3D转换了
transform-style: preserve-3d;

举个例子,为什么女生自拍要躲在背后呢,因为显得脸小,把手机拿的近一些,屏幕里面的脸就越大,加上自拍杆呢,脸就越小。
假设你拿着手机呢,那么你的眼睛就是视点,你设置的perspective的值就是,你眼睛到手机屏幕的水平距离就是,也就是视点到屏幕的值,当perspective的值设置为0的时候,则不产生近大远小的效果,比较像平行投影。

perspective属性的两种书写,一种用在舞台元素上(动画元素们的共同父辈元素);第二种就是用在当前动画元素上,与transform的其他属性写在一起
.stage {
    perspective: 600px;
}
#stage .box {
    transform: perspective(600px) rotateY(45deg);
}

理解perspective-origin(可以理解为开门的轴)

perspective-origin这个属性超级好理解,表示你那双色迷迷的眼睛看的位置。默认就是所看舞台或元素的中心。有时候,我们对中心的位置是不感兴趣的,希望视线放在其他一些地方


image.png

如果你把相机拿到45度,像这只大象一样仰拍呢,就是调整perspective-origin,相机只能在你面前上下左右的改变角度,而不能从你的背后往前拍,也就是Z坐标固定,可以修改的是相机的X,Y 坐标。

在CSS3的3D世界中,默认情况下,我们是可以看到背后的元素,因此,为了切合实际,我们常常会这样设置,使后面元素不可见:

backface-visibility:hidden;
image.png
image.png
image.png

相关文章

  • 网页高级知识点(三)

    CSS3 transition动画 CSS3 transform变换 CSS3 animation动画

  • 07day

    CSS3动画 CSS3 @keyframes 规则如需在 CSS3 中创建动画,您需要学习 @keyframes ...

  • 08_dayCSS动画

    CSS3新增的功能有:过渡和动画,阴影和圆角 css3过渡动画: css3都有哪些新增的东西 : 过度,动画,阴影...

  • CSS3 动画

    CSS3 动画CSS3,我们可以创建动画,它可以取代许多网页动画图像,Flash动画,和JAVAScripts。 ...

  • CSS3 动画

    动画属性 动画(animation)是CSS3新增的属性,动画属性可以为元素创建动画,CSS3以前在网页上实现动画...

  • css3动画

    css3动画 CSS3 可以创建动画,它可以取代许多网页动画图像、Flash 动画和 JavaScript 实现的...

  • 纯CSS3绘制的逼真,呆萌,超酷的CSS3动画

    纯CSS3人物行走动画 逼真炫酷CSS3动画 CSS3实在是太强大了,今天分享的CSS3动画非常神奇,它可以模拟人...

  • 关于js动画和css3动画的差异性你了解吗?请简单谈一下

    css3动画:css3之后添加了transform动画计算函数,所以实现动画更为简单方便,并且transform矩...

  • 过度动画

    css3过度动画 css3都有哪些新增的东西 : 过度,动画,阴影,圆角; transition : width ...

  • 动画知识点

    css3过度动画 css3都有哪些新增的东西 : 过度,动画,阴影,圆角; transition : width ...

网友评论

      本文标题:CSS3动画

      本文链接:https://www.haomeiwen.com/subject/qomlqqtx.html