Bootstrap

前端【4】-炫酷的文字、动画效果实现

CSS过渡动画transition

 案例

帧动画

案例


往期文章:

前端【3】--CSS布局,CSS实现横向布局,盒子模型-CSDN博客

前端【2】html添加样式、CSS选择器-CSDN博客

前端【1】---HTML入门学习_html父子标签-CSDN博客

CSS过渡动画transition

transition 用于元素状态之间的平滑过渡效果。适合处理从一个状态到另一个状态的简单动画。

属性含义示例值
transition-property指定需要应用过渡的 CSS 属性all(全部)或具体属性名,

指定对html哪个元素进行渐变处理

transition-duration设置过渡的持续时间4s, 200ms
transition-timing-function控制动画的过渡速度曲线

linear(匀速)ease(慢-块-慢)

ease-in(慢-块) ease-out(快-慢)

transition-delay设置延迟多久后开始动画2s, 500ms

 案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /*一、 transition过渡动画 A-B*/
        p {
            width: 100px;
            height: 100px;
            background-color: red;
            transition: all 4s linear;
            /*
            transition-property: all 指定对html哪个元素进行渐变处理
            transition-duration: 4s  指定渐变的持续时间
            transition-timing-function:linear  指定渐变的变化函数linear(匀速)ease(慢-块-慢) ease-in(慢-块) ease-out(快-慢)
             */
        
        }
        /* 设置鼠标点击开始样式 */
        p:hover {
            width: 800px;
            height: 300px;
            background: gold;

        }
        
    
    </style>
</head>
<body>
    <p>demo</p>
    
</body>
</html>

帧动画

animation:设置动画名称、时长、缓动函数等。--与keyframs结合使用

animation: [动画名称] [持续时间] [缓动函数] [重复次数] [动画方向];
  • 动画名称:指定关键帧名称(如 aaa)。由keyframs提供
  • 持续时间:动画执行一次的时间(如 1s 表示 1 秒)。
  • 缓动函数
    • ease:从慢到快,再从快到慢。
    • linear:匀速运动。
    • ease-in:慢速开始。
    • ease-out:慢速结束。
  • 重复次数
    • infinite:无限循环。
    • 数字(如 3):循环指定次数。
  • 动画方向
    • normal:每次从头开始播放。
    • alternate:每次交替方向播放(如正向、反向)。
animation: aaa 3s linear 2s infinite;
      /* animation-name: aaa; 
      animation-duration: 3s;
      animation-timing-function:linear;
      animation-delay: 2s;
      animation-iteration-count: 5;
      animation-direction: alternate ; */
animation-name: aaa设置帧动画的名称
animation-duration: 设置动画的持续时间
animation-timing-function 设置动画的变化函数
animation-delay 进入页面延迟多久后有效果
nimation-iteration-count 执行次数 infinite无限执行(开始-结束  开始--结束 开始--结束....
animation-direction: 设置动画执行方向 alternate交替执行(开始-结束 结束-开始 开始-结束....

@keyframes:定义动画的不同阶段状态。

  • @keyframes [动画名称] {
        [百分比或关键字] {
            [样式规则];
        }
    }
    

    百分比:定义动画进行到指定百分比时的样式状态。

    to:等价于 100%from:等价于 0%

  • 示例:动画从文字颜色 plum(紫红色)逐渐变为 palegreen(浅绿色) 
@keyframes aaa {
    50% {
        color: plum;
    }
    to {
        color: palegreen;
        text-shadow: 20px 0 40px palegoldenrod;
    }
}

案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        body {
            background: black;
        }
        div {
            text-align: center;
        }
        /* text-shadow 给文字设置阴影*/
        span {
            color: aqua;
            font-size: 200px;
            font-weight: 600;
            text-shadow: 10px 0 40px palegoldenrod;
            animation: aaa 1s ease infinite alternate;
        }
        /* 给每个文字加一个延迟,达到由I一个个把样式传到U的效果 */
        span:nth-child(2)
        {
            animation-delay: 0.2s;
        }
        span:nth-child(3)
        {
            animation-delay: 0.3s;
        }
        span:nth-child(4)
        {
            animation-delay: 0.4s;
        }
        span:nth-child(5)
        {
            animation-delay: 0.5s;
        }
        span:nth-child(6)
        {
            animation-delay: 0.6s;
        }
        span:nth-child(7)
        {
            animation-delay: 0.8s;
        }
        span:nth-child(8)
        {
            animation-delay: 0.9s;
        }
        @keyframes aaa {
            50% {
                color: plum;
            }
            to {
                color: palegreen;
                text-shadow: 20px 0 40px palegoldenrod;
            }

        }

    </style>
</head>
<body>
    <div>
        <span>I </span>
        <span>L</span>
        <span>O</span>
        <span>V</span>
        <span>E </span>
        <span>Y</span>
        <span>O</span>
        <span>U</span>
    </div>

    
</body>
</html>

;