美文网首页
用css实现一个元素宽度渐变的动画

用css实现一个元素宽度渐变的动画

作者: 不会潜水的猫小喵 | 来源:发表于2019-04-10 16:01 被阅读0次

假设需求是鼠标移动到一个宽度为100px的div上时宽度渐变为200px,变化过程持续2s。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>test</title>
    <style>
    .box {
        width: 100px;
        height: 100px;
        background-color: pink;
    }
    </style>
</head>
<body>
    <div class="box"></div>
</body>
</html>

1.用transition实现

.box {
    transition: width 2s;
    -webkit-transition: width 2s;
}
.box:hover {
    width: 200px;
} 

transition过渡指的是元素从一种样式逐渐改变为另一种的效果。它的典型事件是鼠标指针位于元素上时。它有4个过渡属性:

  • transition-property(规定设置过渡效果的 CSS 属性的名称。)
  • transition-duration(规定完成过渡效果需要多少秒或毫秒。)
  • transition-timing-function(规定速度效果的速度曲线。)
  • transition-delay(定义过渡效果何时开始。)

可以简写成transition: property duration timing-function delay;的形式。其中的属性名称和效果时长是必须要写的;也可以给它添加多个样式的过渡效果,写的时候要用逗号隔开。例如:

.box {
    transition: width 2s, height 2s, background-color, 2s;
    -webkit-transition: width 2s, height 2s, background-color, 2s;
}
.box:hover {
    width: 200px;
    height: 200px;
    background-color: green;   
} 

2.用animation实现

.box:hover {
    animation: changeStyle 2s;
    -webkit-animation: changeStyle 2s;
}
@keyframes changeStyle {
    0% {width: 100px}
    100% {width: 200px}
}
@-webkit-keyframes changeStyle {
    0% {width: 100px}
    100% {width: 200px}
}

animation用来给元素创建动画。它有8个属性:

  • animation-property( 规定 @keyframes 动画的名称。)
  • animation-duration(规定动画完成一个周期所花费的秒或毫秒。默认是 0。)
  • animation-timing-function(规定动画的速度曲线。默认是 "ease"。)
  • animation-delay(规定动画何时开始。默认是 0。)
  • animation-iteration-count(规定动画被播放的次数。默认是 1。)
  • animation-direction(规定动画是否在下一周期逆向地播放。默认是 "normal"。)
  • animation-play-state(规定动画是否正在运行或暂停。默认是 "running"。)
  • animation-fill-mode(规定对象动画时间之外的状态。)
    以上属性可以简写成animation: name duration timing-function delay iteration-count direction play-state fill-mode;的形式。其中@keyframes 动画名称和动画时长是必须要写的;也可以给它添加多个样式的动画效果,写法如下:
.box:hover {
    animation: changeStyle 2s;
    -webkit-animation: changeStyle 2s;
}
@keyframes changeStyle {
    0% {width: 100px; height: 100px; background-color: pink;}
    100% {width: 200px; height: 200px; background-color: green;}
}
@-webkit-keyframes changeStyle {
    0% {width: 100px; height: 100px; background-color: pink;}
    100% {width: 200px; height: 200px; background-color: green;}
}

3.transition和animation的区别

  • transition一般用来实现比较简单的动画效果,比如本文最开始说得这种需求。animation属性可以像Flash制作动画一样,通过控制关键帧来控制动画的每一步,实现更为复杂的动画效果。
  • transition需要触发一个事件才会随着时间改变其css属性;animation在不需要触发任何事件的情况下,也可以显式的随时间变化来改变元素css属性,达到一种动画的效果。

相关文章

  • 用css实现一个元素宽度渐变的动画

    假设需求是鼠标移动到一个宽度为100px的div上时宽度渐变为200px,变化过程持续2s。 1.用transit...

  • CSS布局&居中&媒体查询

    1.CSS布局 实现一个两栏布局,右侧固定宽度200px,左侧自适应宽度 浮动元素 + 普通元素margin 实现...

  • css布局

    1.CSS布局 实现一个两栏布局,右侧固定宽度200px,左侧自适应宽度 浮动元素 + 普通元素margin 实现...

  • css3实现动画有几种方式?

    这是一个考验面试者对css的基础知识。 css实现动画主要有3种方式,第一种是:transition实现渐变动画,...

  • CSS秀起来真没JS什么事

    发现了一个纯CSS实现,具有渐变倒影和3D旋转效果的栅栏动画,他的实现方式是:利用10个 元素创建10个栅条,接着...

  • 用CSS画三角形和提示框

    CSS也可以实现一些好玩的东西,比如我们用CSS实现一个三角形。原理:需要把元素的宽度、高度设置为0,然后为其设置...

  • CSS3 动画

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

  • css实现高度height随宽度width变化保持比例不变

    如何通过CSS实现高度 height 随宽度 width 变化而变化,保持长宽比例不变,宽度是根据父元素宽度变化的...

  • 动画使用库,总结

    导航过渡、动画和转换(2D/3D)【relative】、渐变html元素隐藏的几种方式与动画 一、用到的css动画...

  • 绝对定位元素实现垂直居中的三种方法

    css实现居中需要提前知道元素的宽度和高度:width: 600px; height: 400px; css3实现...

网友评论

      本文标题:用css实现一个元素宽度渐变的动画

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