CSS 动画transition keyframes animation总结

1. CSS transitions

在改变CSS属性的时候,transitions提供给了开发者一共方式去控制动画的速度。

通常来讲,属性改变所产生的影响是立刻生效的,举个例子:

.img {
  width: 200px;
}
.img:hover {
  width: 300px;
}

触发hover的时候,你将看到图片在瞬间被放大,这种突兀的变化会带来很差的用户体验。

而使用CSS transitions就可以展现出变化过程中的过渡段。也就是说,transitions会将整个变化的过程展现出来,而不是简单的始态->末态。

CSS transitions可以让开发者自己决定动画行为。包括动画属性、什么时间开始动画、动画持续时间以及动画的类型。

哪些CSS属性能够使用动画?

以下属性都可以使用动画
在这里插入图片描述
上图中的可用属性集合可能会随着时间推移发生变化,开发者应该时刻关注最新的可用属性。

这里可以看到最新的标准。

使用多个动画属性

.box {
    border-style: solid;
    border-width: 1px;
    display: block;
    width: 100px;
    height: 100px;
    background-color: #0000FF;
    -webkit-transition: width 2s, height 2s, background-color 2s, -webkit-transform 2s;
    transition: width 2s, height 2s, background-color 2s, transform 2s;
}
.box:hover {
    background-color: #FFCCCC;
    width: 200px;
    height: 200px;
    -webkit-transform: rotate(180deg);
    transform: rotate(180deg);
}

用于定义transitions的CSS属性

可以看到上一个例子中,transition属性的值有一大堆,如果动画再复杂一些,这个值就会更长;为了保证程序的可读性,建议使用CSS属性对其进行定义。

transition-property
指定需要应用transition的属性名称,只有被列出的这些属性在动画过程中是连续变化的,未列出的属性保持原来的行为。

上面的例子可以写成如下形式:
transition-duration

transiton-property只指出了需要应用动画的属性,接下来我们要使用transition-duration指定动画的过渡时间。

.box {
  ...
  -webkit-transition-property: width, height, background-color, -webkit-transform;
  transition-property: width, height, background-color, transform;
  
  -webkit-transition-duration: 2s;
  tansition-duration: 2s;
}

上面的程序表示所有属性的变换都经过2s时间,如果我们想要让不同的属性的变换持续时间不同呢?

.box {
  transition-property: width, height, background-color, transform;
  tansition-duration: 2s, 1s, 3s, 5s;
}

这样我们就定义了不同属性的不同持续时间。

如果属性名和持续时间的数量的对应相等的,则属性名和持续时间是一一对应的关系,即上面的程序有如下的变换时间:

  • width: 2s
  • height: 1s
  • background-color: 3s
  • transform: 5s
    如果属性名和持续时间定义的个数不同,则按照如下规则
    如果属性名个数 > 持续时间个数
.box {
  transition-property: width, height, background-color, transform;
  tansition-duration: 2s, 1s;
  
  transition-property: width, height, background-color, transform;
  tansition-duration: 2s, 1s, 2s, 1s;
}

如果属性名个数 < 持续时间个数

.box {
  transition-property: width, height, background-color, transform;
  tansition-duration: 2s, 1s, 3s, 5s, 6s;
  
  transition-property: width, height, background-color, transform;
  tansition-duration: 2s, 1s, 3s, 5s;
}

总结一下就是时间个数少的进行重复,多的截取。

transition-timing-function

用贝塞尔曲线作为动画的过渡函数。它决定了变换的过程是怎样的,是快-慢-快或是慢-快-慢又或者是线性变换等等,通过设置不同的贝塞尔曲线,我们可以得到不同的过渡动画。它只改变转换的过程,但不影响变换最终的结果。

.box {
  transition-timing-function: ease;
  transition-timing-function: linear;
  transition-timing-function: step-end;
  transition-timing-function: steps(4, end);
  ...
}
transition-delay

定义了从属性改变到变换开始之间的间隔时间。

.box {
  transition-delay: 0.5s
}
缩略写法
.box {
  transition:    ;
}
监听transitions的启动和完成
el.addEventListener("transitionstart", func1, true);
el.addEventListener("transitionrun", func2, true);
el.addEventListener("transitionend", func3, true);

TransitionEvent对象除了常规Event对象所包含的属性之外,还包括了两个属性:

  • propertyName
  • elapsedTime
propertyName

表示触发当前事件的属性名

elapsedTime

一个用来表示转换触发了多长时间的浮点数

MDN地址

2.css实现发光效果

// 公用样式
@mixin common-hover {
  &:hover {
    &::before {
      width: 151px;
    }
  }
  &::before {
    content: "";
    width: 0;
    transition: width 1s;
    height: 7px;
    background: #19fcff;
    border-radius: 10px;
    box-shadow: 0 0 8px #ddd;
    position: absolute;
    left: 30.5%;
    box-shadow: 0 0 10px #19fcff;
    bottom: 1px;
    animation-name: shineLuminous;
    animation-duration: 1.5s;
    // 重复执行动画
    animation-iteration-count: infinite;
  }
}
  • 定义动画
// 动画发光效果关键帧
@keyframes shineLuminous {
  from {
    box-shadow: 0 0 10px #bbb;
  }
  50% {
    box-shadow: 0 0 20px #9cf8f9;
  }
  to {
    box-shadow: 0 0 15px #bbb;
  }
}
  • 使用
 .title-img-right {
    @include common-hover;
    position: absolute;
    top: 32%;
    left: 128%;
    width: 335px;
    height: 88px;
    font-size: 35px;
    padding: 5px 10px;
    line-height: 88px;
    text-align: center;
    color: white;
    background: url("/images/home/new-home/home-title-sub-img.png");
  }
  • 实现效果
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CSS3动画是一种非常强大的动画技术,它可以让网页变得更加生动、美丽。本文将为大家详细介绍CSS3动画的各个属性,包括动画名称,持续时间,延迟时间,动画速度曲线,以及动画的执行次数等。 动画名称(animation-name):与CSS中的类似,动画名称是指定CSS3动画所使用的关键帧动画。这个属性用来指定一个已定义的动画名称,以便调用该动画。 持续时间(animation-duration):定义CSS3动画的持续时间。默认值为0,表示没有动画效果。通过使用单位“秒(s)”或“毫秒(ms)”来定义动画的持续时间。 延迟时间(animation-delay):指定动画开始前的等待时长。默认值为0,即动画将立即开始。通过使用单位“秒(s)”或“毫秒(ms)”来定义延迟时间。 动画速度曲线(animation-timing-function):定义动画的速度曲线,可以使动画有更加自然的过渡效果。使用缓动函数可以让动画更具有灵活性,可以在不同的时间点采用不同的速度曲线,从而实现更复杂的动画效果。 动画执行次数(animation-iteration-count):指定动画的执行次数。可以使用数字或者“infinite”关键字来指定动画的执行次数。如果将其设置为“infinite”则表示动画将一直持续执行下去。 动画方向(animation-direction):指定动画是否循环播放,并且指定循环播放的方向。这个属性可以使用以下值:normal,reverse,alternate和alternate-reverse。 动画填充模式(animation-fill-mode):指定动画在开始或结束时对元素的样式应该如何处理。使用这个属性可以让动画具有更加平滑的效果,可以避免由于动画结束时样式的改变而造成的过度影响。 总之,通过使用上述属性,我们可以为网页添加各种丰富的动画效果,让网页更加互动、生动,也更能吸引用户的眼球。 ### 回答2: CSS3动画是网页开发中非常常用的一种技术,通过使用动画属性可以给页面的元素增添动态的效果。本文将详细介绍CSS3动画的各个属性。 1. animation-name 该属性定义要绑定到要执行动画的@keyframes的名称。@keyframes是定义动画的关键帧的规则集合。 2. animation-duration 该属性定义了动画完成所需的时间,以秒或毫秒为单位。 3. animation-timing-function 该属性定义了动画执行的时间曲线。通过使用不同的时序函数,可以使动画更真实,更有质感。 4. animation-delay 该属性定义动画开始之前的延迟时间,以秒或毫秒为单位。 5. animation-iteration-count 该属性定义动画的迭代次数。可以将其设置为有限或无限。 6. animation-direction 该属性定义动画是否反向播放。 7. animation-fill-mode 该属性定义了元素在动画之前和之后的状态。可以设置为none、forwards、backwards或both。 8. animation-play-state 该属性定义动画的运行状态。可以将其设置为paused或running。 9. animation animation属性是所有动画属性的缩写。它接受每个属性的值作为逗号分隔列表。 总结: 上述就是CSS3动画常用属性的详细介绍。CSS3动画可以用来为页面增添动态效果,提高用户的交互体验。在实际开发中,可以通过不同的动画属性以及不同的取值方式,创建出各种不同的动画效果。在制作动画时,需要考虑兼容性问题,如果要兼容IE9及以下版本,我们还需要使用Vendor Prefix前缀来避免浏览器的兼容问题。 ### 回答3: CSS3动画是将元素从一个状态变换到另一个状态的方式,其中使用了一些简单的CSS属性。CSS3动画属性可以通过@keyframe规则或transition属性设置。它们可以用来创造一些很棒的效果,比如向上滚动的标题、浮动的按钮等。下面详细介绍一下CSS3动画涉及的各种属性。 1. animation-name:用来定义动画的名称,这个名称会由animation属性引用。 2. animation-duration:定义动画的持续时间。单位为秒(s)和毫秒(ms)。 3. animation-timing-function:定义动画的速度变化曲线。这个属性定义了过渡的速度,是一个三次贝塞尔函数。可以设置ease、linear、ease-in、ease-out、ease-in-out和cubic-bezier等值。 4. animation-delay:定义动画开始之前的延迟时间。单位为秒(s)和毫秒(ms)。 5. animation-iteration-count:定义动画的重复次数。可以设置为一个具体的数字或infinite表示无限次重复。 6. animation-direction:定义动画结束后是否负向重复播放。可以设置为normal、reverse、alternate和alternate-reverse。 7. animation-play-state:定义动画是运行还是暂停。可以设置为paused和running。 8. animation-fill-mode:定义动画结束后如何应用样式。可以设置为none、forwards、backwards和both。 以上是CSS3动画中涉及的主要属性。其中最重要的要数animation-iteration-count和animation-duration两个属性。animation-iteration-count可以定义动画的重复次数,也可以设置为infinite表示无限次重复。animation-duration用来定义动画的持续时间,如果不设置,默认值为0,此时动画是不会播放的。在设置这两个属性时,需要根据具体情况来确定合适的数值,以达到最佳的动画效果。 总的来说,CSS3动画提供了丰富的效果和属性,可以应用于页面中的各种元素和功能,让页面更加生动、美观、时尚。在开发过程中,合理应用这些属性,可以使前端开发变得更加有趣和富有挑战性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值