CSS动画:transition触发动画和animation非触发动画

9 篇文章 0 订阅
前言
本篇在讲什么

本章学习通过CSS样式表现动画
本篇适合什么

适合初学H5的小白
适合初学CSS的小白
适合入门的前端程序

本篇需要什么

Htmlcss语法有简单认知
Node.js(博主v18.13.0)的开发环境
Npm(博主v8.19.3)的开发环境
依赖VS code编辑器

本篇的特色

具有全流程的图文教学
重实践,轻理论,快速上手
提供全流程的源码内容


★提高阅读体验★

👉 ♠ 一级标题 👈

👉 ♥ 二级标题 👈

👉 ♣ 三级标题 👈

👉 ♦ 四级标题 👈


♠ 触发型动画

本章节学习通过transition样式执行一些触发型的动画,比如悬停后的变换等


♥ transition动画

css中我们可以通过transition实现一些动画的效果,下面我们看一下怎么使用


♣ transition的属性

字段功能
transition-property变换的CSS属性
transition-duration变换的时间
transition-timing-function变换过程的曲线
transition-delay变换前的延迟

♣ 使用方式

  • 使用方式1
transition :width 0.2s ease-in 1s;

属性+时间+曲线+延迟

  • 使用方式2
transition-property: width;
transition-duration: 1s;
transition-timing-function: ease-out;
transition-delay:1s;

四个属性全部列出来

  • 使用方式3
transition: all 1s ease-in 1s

所有属性都变换,all+时间+曲线+延迟


♣ 使用演示

这一模块我们通过演示示例,来展示transition的用法,首先我们创建一个按钮,在网页中间,代码如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <style>
        .btn{
            width: 200px;
			height: 40px;
            background-color: #4dccc6;
            margin-top: 20%;
            margin-left: 45%;
        }
    </style>
</head>
<body>
    <div>
        <button class="btn">测试按钮</button>
    </div>
</body>
</html>

在这里插入图片描述


♦ 位置变换

通过transform: translate(xx)来设置按钮悬停时候的位置变化

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <style>
        .btn{
            width: 200px;
			height: 40px;
            background-color: #4dccc6;
            margin-top: 20%;
            margin-left: 45%;
        }
        .btn:hover{
            transform: translate(45px);
            transition: all 1s ease;
        }

    </style>
</head>
<body>
    <div>
        <button class="btn">测试按钮</button>
    </div>
</body>
</html>

♦ 角度变换

通过transform: rotate(xx)来设置按钮悬停时候的位置变化

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <style>
        .btn{
            width: 200px;
			height: 40px;
            background-color: #4dccc6;
            margin-top: 20%;
            margin-left: 45%;
        }
        .btn:hover{
            transform: rotate(360deg);
            transition: all 1s ease;
        }

    </style>
</head>
<body>
    <div>
        <button class="btn">测试按钮</button>
    </div>
</body>
</html>

♦ 缩放变换

通过transform: scale(xx)来设置按钮悬停时候的大小变化

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <style>
        .btn{
            width: 200px;
			height: 40px;
            background-color: #4dccc6;
            margin-top: 20%;
            margin-left: 45%;
        }
        .btn:hover{
            transform: scale(0.5);
            transition: all 1s ease;
        }

    </style>
</head>
<body>
    <div>
        <button class="btn">测试按钮</button>
    </div>
</body>
</html>

♦ 颜色变换

通过background-color来设置按钮悬停时候的颜色变化

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <style>
        .btn{
            width: 200px;
			height: 40px;
            background-color: #4dccc6;
            margin-top: 20%;
            margin-left: 45%;
        }
        .btn:hover{
            background-color: #e54611;
            transition: all 1s ease;
        }

    </style>
</head>
<body>
    <div>
        <button class="btn">测试按钮</button>
    </div>
</body>
</html>

很简单也很实用,css的属性都可以通过transition来变换,宽度、颜色等等的


♠ 非触发动画

我们经常需要组件自动去做一些动画效果,为此我们需要用到animtion动画,animation动画是通过定义特殊字段@keyframes书写的动作结构,再通过animation限定的结构执行的


♥ animation动画

css中我们可以通过animation实现一些自动执行的动画效果,下面我们看一下怎么使用


♣ animation的属性

字段功能
animation-name@keyframes定义的动画名
animation-duration执行事件
animation-timing-function执行的缓动曲线
animation-delay执行前的延迟
animation-iteration-count动画的播放次数
animation-direction执行方式
animation-play-state执行状态
animation-fill-mode填充模式

♦ animation-iteration-count类型
  • 默认:1
  • infinite:无限循环

♦ animation-direction类型
  • normal:默认,正常

  • reverse:反向运动

  • alternate:正反轮播

  • alternate-reverse:反向播放后,恢复到初始状态


♦ animation-play-state类型
  • running:默认,正常运行

  • paused:暂停动画


♦ animation-fill-mode类型
  • none:默认,执行后恢复到原状态

  • forwards:执行完保持结束状态

  • backwards:延时前永远保持动画初始状态


♦ animation-timing-function类型
描述
linear动画从头到尾的速度是相同的。
ease默认。动画以低速开始,然后加快,在结束前变慢。
ease-in动画以低速开始。
ease-out动画以低速结束。
ease-in-out动画以低速开始和结束
cubic-bezier(n,n,n,n)在 cubic-bezier 函数中自己的值。可能的值是从 0 到 1 的数值

♣ 使用方式

♦ @keyframes
  • @keyframes方式1
@keyframes test1{
    from{
        transform: rotate(60deg)
    }
    to{
        transform: rotate(360deg)
    }
}

关键字@keyframes+动画名
对象from下写css的属性,意味初始状态
对象to下写css的属性,意味结束状态

  • @keyframes方式2
@keyframes test2{
    0% {
        transform: rotate(60deg)
    }
    50% {
        transform: rotate(160deg)
    }
    100% {
        transform: rotate(260deg)
    }
}

关键字@keyframes+动画名
百分数指动画的执行进度,50%在动画执行一半时达到的状态

  • @keyframes方式3
@keyframes test3{
    0% {
        transform: rotate(60deg)
    }
    50% {
        transform: rotate(160deg)
    }
    to{
        transform: rotate(360deg)
    }
}

方式1和方式2可以混用

  • animation执行方式1
animation-name: test1;
animation-duration: 2s;
animation-dela:1s;
animation-iteration-count: infinite;

animation属性字段+参数

  • animation执行方式2
animation: test1 2s 1s infinite;

animation:参数


♣ 使用演示

以下我们通过代码和演示制作几个可以自动执行的动画


♦ 自动旋转

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <style>
        .btn{
            width: 200px;
			height: 40px;
            background-color: #4dccc6;
            margin-top: 20%;
            margin-left: 45%;
            animation: test 2s infinite;
        }
        @keyframes test{
            0% {
                transform: rotate(0deg)
            }
            50% {
                transform: rotate(160deg)
            }
            100% {
                transform: rotate(360deg)
            }
        }

    </style>
</head>
<body>
    <div>
        <button class="btn">测试按钮</button>
    </div>
</body>
</html>

♦ 透明闪烁

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <style>
        .btn{
            width: 200px;
			height: 40px;
            background-color: #4dccc6;
            margin-top: 20%;
            margin-left: 45%;
            animation: test 1s infinite;
        }
        @keyframes test{
            0% {
			    opacity:0;
            }
            50% {
                opacity:1;
            }
            100% {
                opacity:0;
            }
        }

    </style>
</head>
<body>
    <div>
        <button class="btn">测试按钮</button>
    </div>
</body>
</html>

♠ 推送

  • Github
https://github.com/KingSun5

♠ 结语

若是觉得博主的文章写的不错,不妨关注一下博主,点赞一下博文,另博主能力有限,若文中有出现什么错误的地方,欢迎各位评论指摘。

👉 本文属于原创文章,转载请评论留言,并在转载文章头部著名作者出处👈
  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值