71muke?v=1
在线看书
立即购买

第一章 前言

收起
2024-07-23更新,每天更一篇

第二章 CSS3动画和过渡

收起
2024-07-23更新,每天更一篇

第三章 CSS3变形和3D效果

收起
2024-07-23更新,每天更一篇

第四章 CSS3滤镜和混合模式

收起
2024-07-23更新,每天更一篇

第五章 弹性盒模型

收起
2024-07-23更新,每天更一篇

第六章 网格布局

收起
2024-07-23更新,每天更一篇

第七章 响应式设计

收起
2024-07-23更新,每天更一篇

第八章 71电商响应式开发实战

收起
2024-07-23更新,每天更一篇

CSS3动画效果

CSS3 动画的使用

CSS3 动画是一种通过逐帧改变元素的样式来实现动态效果的技术。使用 CSS3 动画可以让网页更加生动和富有交互性。下面详细介绍 CSS3 动画的使用方法。


1. 基本语法

CSS3 动画主要通过两个属性来实现:@keyframes 和 animation


@keyframes

@keyframes 用于定义动画的关键帧,通过关键帧设置动画的中间步骤。

@keyframes animationName {
    from {
        /* 初始状态的样式 */
    }
    to {
        /* 结束状态的样式 */
    }
    /* 或者使用百分比定义 */
    0% {
        /* 初始状态的样式 */
    }
    100% {
        /* 结束状态的样式 */
    }
}


animation

animation 用于将动画应用到元素上。

.element {
    animation: animationName duration timing-function delay iteration-count direction fill-mode;
}
  • animationName: 动画名称,对应 @keyframes 中定义的名称。

  • duration: 动画持续时间(例如:2s 表示 2 秒)。

  • timing-function: 动画速度曲线(例如:linear、ease、ease-in、ease-out、ease-in-out)。

  • delay: 动画延迟时间。

  • iteration-count: 动画循环次数(例如:infinite 表示无限循环)。

  • direction: 动画播放方向(例如:normal、reverse、alternate、alternate-reverse)。

  • fill-mode: 动画在执行前后如何应用样式(例如:none、forwards、backwards、both)。


2. 示例

简单动画示例

创建一个简单的盒子动画,让其从左到右移动。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Simple CSS3 Animation</title>
    <style>
        .box {
            width: 100px;
            height: 100px;
            background-color: lightblue;
            position: relative;
            animation: moveRight 2s linear infinite;
        }

        @keyframes moveRight {
            0% {
                left: 0;
            }
            100% {
                left: 200px;
            }
        }
    </style>
</head>
<body>
    <div class="box"></div>
</body>
</html>


在这个示例中:

  • 定义了一个 moveRight 动画,让盒子从左移到右。

  • 使用 animation 属性将动画应用到盒子上,设置动画持续时间为 2 秒,并无限循环。


复杂动画示例

创建一个复杂的动画,让盒子改变颜色、大小,并旋转。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Complex CSS3 Animation</title>
    <style>
        .box {
            width: 100px;
            height: 100px;
            background-color: lightblue;
            position: relative;
            animation: complexAnimation 4s ease-in-out infinite alternate;
        }

        @keyframes complexAnimation {
            0% {
                left: 0;
                background-color: lightblue;
                transform: scale(1) rotate(0deg);
            }
            50% {
                left: 100px;
                background-color: lightcoral;
                transform: scale(1.5) rotate(180deg);
            }
            100% {
                left: 200px;
                background-color: lightgreen;
                transform: scale(1) rotate(360deg);
            }
        }
    </style>
</head>
<body>
    <div class="box"></div>
</body>
</html>


在这个示例中:

定义了一个 complexAnimation 动画,包括多个关键帧(0%、50%、100%),在每个关键帧中改变元素的左边距、背景颜色、缩放比例和旋转角度。

使用 animation 属性将动画应用到盒子上,设置动画持续时间为 4 秒,动画曲线为 ease-in-out,无限循环并交替方向。


3. 动画的高级使用

多个动画

可以为一个元素定义多个动画,使用逗号分隔每个动画定义。

.element {
    animation: moveRight 2s linear infinite, changeColor 3s ease-in-out infinite;
}


动画延迟和顺序

可以设置动画的延迟时间,使其按顺序执行。

.element {
    animation: firstAnimation 2s ease-in 1s forwards, secondAnimation 3s ease-out 3s forwards;
}


动画暂停和恢复

通过 animation-play-state 属性控制动画的播放状态。

.element {
    animation: moveRight 2s linear infinite;
    animation-play-state: paused; /* 动画暂停 */
}

/* 恢复动画 */
.element:hover {
    animation-play-state: running;
}


4. 实用建议

  • 性能优化:尽量减少动画的复杂度,避免过多的重绘和重排,以提高页面性能。

  • 渐进增强:为不支持 CSS3 动画的浏览器提供退化效果,保证页面的基本功能和体验。

  • 用户体验:动画效果要适度,过多或过于复杂的动画可能会影响用户体验,适当使用可以提升视觉效果和交互性。




练习题:CSS3 动画

目标:创建一个简单的加载动画,让一个圆形元素在垂直方向上来回移动,并改变其颜色。


要求:

  • 创建一个圆形元素,直径 50px,初始背景色为蓝色。

  • 使用 @keyframes 定义一个动画,让圆形元素在垂直方向上来回移动,移动范围为 100px。

  • 在移动过程中,圆形元素的背景色从蓝色渐变到红色,再回到蓝色。

  • 将动画应用到圆形元素上,动画持续时间为 2 秒,循环播放。


参考答案:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Animation Exercise</title>
    <style>
        .circle {
            width: 50px;
            height: 50px;
            background-color: blue;
            border-radius: 50%;
            position: relative;
            animation: moveUpDown 2s ease-in-out infinite;
        }

        @keyframes moveUpDown {
            0% {
                top: 0;
                background-color: blue;
            }
            50% {
                top: 100px;
                background-color: red;
            }
            100% {
                top: 0;
                background-color: blue;
            }
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>


留言

发布留言

需要购买本课才能留言哦~

{{ item.createtime | dateStr }}
×