【CSS笔记】CSS动画效果(2d、3d)之渐变色、过渡、变换、平移、缩放、旋转、倾斜、关键帧动画

news2024/9/29 18:37:35

这篇文章,主要介绍CSS动画效果(2d、3d)之渐变色、过渡、变换、平移、缩放、旋转、倾斜、关键帧动画。

目录

一、2d动画

1.1、渐变色

(1)线性渐变色

(2)径向渐变色

(3)重复渐变色

1.2、过渡

1.3、平移

1.4、缩放

1.5、旋转

1.6、倾斜

二、关键帧动画

2.1、关键帧动画使用

2.2、animate动画库

三、3d动画

3.1、平移

3.2、旋转

3.3、缩放


一、2d动画

1.1、渐变色

(1)线性渐变色

线性渐变色,是指从一个方向到另一个方向发送颜色的深浅变化,语法格式:

/**
方向:默认从左到右
to left:从右到左
to right:从左到右
to top:从下到上
to bottom:从上到下
to right bottom:从左上到右下
to left top:从右下到左上
to right top:从左下到右上
to left bottom:从右上到左下
 */
background:linear-gradient(设置方向,颜色1,颜色2[可以多个]...);

案例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>渐变色</title>
    <style>
        body>div {
            overflow: hidden;
            margin-bottom: 20px;
        }
        div>div {
            width: 100px;
            height: 100px;
            float: left;
            margin-right: 20px;
        }
        .box1>div:nth-child(1) {
            background:linear-gradient(to right, red, yellow, green);
        }
        .box1>div:nth-child(2) {
            background:linear-gradient(to left, red, yellow, green);
        }
        .box1>div:nth-child(3) {
            background:linear-gradient(to bottom, red, yellow, green);
        }
        .box1>div:nth-child(4) {
            background:linear-gradient(to top, red, yellow, green);
        }
        .box2>div:nth-child(1) {
            background:linear-gradient(to right bottom, red, yellow, green);
        }
        .box2>div:nth-child(2) {
            background:linear-gradient(to left top, red, yellow, green);
        }
        .box2>div:nth-child(3) {
            background:linear-gradient(to right top, red, yellow, green);
        }
        .box2>div:nth-child(4) {
            background:linear-gradient(to left bottom, red, yellow, green);
        }
    </style>
</head>
<body>
    <div class="box1">
        <div>to right</div>
        <div>to left</div>
        <div>to bottom</div>
        <div>to top</div>
    </div>
    <div class="box2">
        <div>to right bottom</div>
        <div>to left top</div>
        <div>to right top</div>
        <div>to left bottom</div>
    </div>
</body>
</html>

运行效果:

(2)径向渐变色

径向渐变是指:以某个点为圆心,依次向外发生颜色的深浅变化,语法格式:

/**
1、默认是以容器的中心位置为原点,即:50% 50%,可以设置百分比。
2、渐变形式:circle圆形、ellipse椭圆形(默认)
3、渐变尺寸:closet-side 最近边;farthest-side 最远边;closet-corner:最近角;farthest-corner:最远角
 */
background: radial-gradient(原点位置,渐变形状,渐变尺寸,开始颜色,颜色2,颜色3......结束颜色);

/**
	颜色后面的百分比表示渐变的范围
*/
background: radial-gradient(开始颜色 百分比,颜色2 百分比,颜色3 百分比......结束颜色 百分比);

案例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>渐变色</title>
    <style>
        body>div {
            overflow: hidden;
            margin-bottom: 20px;
        }
        div>div {
            width: 100px;
            height: 100px;
            float: left;
            margin-right: 20px;
        }
        .box1>div:nth-child(1) {
            background:radial-gradient(red, yellow, green);
        }
        .box1>div:nth-child(2) {
            /**
            0到40是红色
            40到80是黄色
            80到100是绿色
             */
            background:radial-gradient(red 0%, yellow 40%, green 80%);
        }
        .box1>div:nth-child(3) {
            background:radial-gradient(red 30%, green 30%);
        }
        .box1>div:nth-child(4) {
            background:radial-gradient(red 30%, blue 30%);
        }
    </style>
</head>
<body>
<div class="box1">
    <div>to right</div>
    <div>to left</div>
    <div>to bottom</div>
    <div>to top</div>
</div>
</body>
</html>

运行效果:

(3)重复渐变色

重复渐变色有两种,分别是:重复线性渐变色、重复径向渐变色,语法格式:

/**
重复线性渐变色
 */
background:repeating-linear-gradient();
/**
重复径向渐变色
 */
background:repeating-radial-gradient();

案例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>渐变色</title>
    <style>
        body>div {
            overflow: hidden;
            margin-bottom: 20px;
        }
        div>div {
            width: 200px;
            height: 200px;
            float: left;
            margin-right: 20px;
        }
        .box1>div:nth-child(1) {
            background:repeating-linear-gradient(to right, red 0%, yellow 10%, green 20%);
        }
        .box1>div:nth-child(2) {
            background:repeating-radial-gradient(red 0%, yellow 10%, green 20%);
        }
    </style>
</head>
<body>
<div class="box1">
    <div>to right</div>
    <div>to left</div>
</div>
</body>
</html>

运行效果:

1.2、过渡

CSS3中提供了【transition】属性,可以设置属性变化时候的过渡效果,语法格式:

/**
过渡效果:transition: 属性 过渡时间 延迟时间 动画类型;
1、属性:可以指定特定的属性,例如:height、width等,使用 all 表示使用属性
2、过渡时间:单位是秒、毫秒,例如:2s、3s、5000ms
3、延迟时间:单位是秒、毫秒,例如:2s、3s、5000ms
4、动画类型:linear匀速过渡、也可以设置贝塞尔曲线过渡效果
 */
transition: all 2s 0.1s;
transition: all 2s 0.1s linear;

案例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>过渡</title>
    <style>
        .box {
            width: 200px;
            height: 200px;
            background: pink;
            /**
            过渡效果:transition: 属性 过渡时间 延迟时间 动画类型;
            1、属性:可以指定特定的属性,例如:height、width等,使用 all 表示使用属性
            2、过渡时间:单位是秒、毫秒,例如:2s、3s、5000ms
            3、延迟时间:单位是秒、毫秒,例如:2s、3s、5000ms
            4、动画类型:linear匀速过渡、也可以设置贝塞尔曲线过渡效果
             */
            transition: all 2s 0.1s linear;
        }
        .box:hover {
            width: 300px;
            height: 400px;
        }
    </style>
</head>
<body>
    <div class="box"></div>
</body>
</html>

运行效果:

1.3、平移

CSS3中可以设置元素平移效果,可以沿着X轴或者Y轴方向偏移,也可以设置两个轴同时偏移,语法格式:

transform: translateX(平移距离);
transform: translateY(平移距离);
transform: translate(X平移距离,Y平移距离);

案例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>平移效果</title>
    <style>
        body{
            background: skyblue;
        }
        .box,.box1,.box2 {
            width: 100px;
            height: 100px;
            background: pink;
            margin-bottom: 20px;
            transition: all 2s;
        }
        .box:hover {
            transform: translateX(200px);
        }
        .box1:hover {
            transform: translateY(50px);
        }
        .box2:hover {
            transform: translate(150px, 100px);
        }
    </style>
</head>
<body>
    <div class="box"></div>
    <div class="box1"></div>
    <div class="box2"></div>
</body>
</html>

运行效果:

1.4、缩放

CSS3提供了【scale()】方法,用于缩放元素,语法格式:

transform: scaleX(沿着X轴缩放);
transform: scaleY(沿着Y轴缩放);
transform: scale(沿着X、Y轴缩放);

案例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>缩放效果</title>
    <style>
        body>div {
            width: 600px;
            margin: 0 auto;
        }
        .box,.box1,.box2 {
            width: 100px;
            height: 100px;
            background: pink;
            margin-bottom: 20px;
            transition: all 2s;
        }
        body{
            background: skyblue;
        }
        .box:hover {
            transform: scaleX(1.2);
        }
        .box1:hover {
            transform: scaleY(-0.5);
        }
        .box2:hover {
            transform: scale(2);
        }
    </style>
</head>
<body>
    <div>
        <div class="box"></div>
        <div class="box1"></div>
        <div class="box2"></div>
    </div>
</body>
</html>

运行效果:

1.5、旋转

CSS3提供了【rotate()】方法用于设置旋转度数,语法格式:

transform: rotateX(以X轴旋转);
transform: rotateY(以Y轴旋转);
transform: rotate(以中心点进行旋转);

案例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>旋转效果</title>
    <style>
        body>div {
            width: 600px;
            margin: 0 auto;
        }
        .box,.box1,.box2 {
            width: 100px;
            height: 100px;
            background: pink;
            margin-bottom: 20px;
            transition: all 2s;
        }
        body{
            background: skyblue;
        }
        .box:hover {
            transform: rotateX(45deg);
        }
        .box1:hover {
            transform: rotateY(-60deg);
        }
        .box2:hover {
            /**
            以中心点为圆心进行旋转
             */
            transform: rotate(75deg);
        }
    </style>
</head>
<body>
<div>
    <div class="box"></div>
    <div class="box1"></div>
    <div class="box2"></div>
</div>
</body>
</html>

运行效果:

1.6、倾斜

CSS3提供了【skew()】方法用于设置元素的倾斜角度,语法格式:

transform: skewX(X轴的倾斜角度);
transform: skewY(Y轴的倾斜角度);
transform: skew(X轴的倾斜角度,Y轴的倾斜角度);

案例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>倾斜效果</title>
    <style>
        body>div {
            width: 600px;
            margin: 0 auto;
        }
        .box,.box1,.box2 {
            width: 100px;
            height: 100px;
            background: pink;
            margin-bottom: 20px;
            transition: all 2s;
        }
        body{
            background: skyblue;
        }
        .box:hover {
            transform: skewX(30deg);
        }
        .box1:hover {
            transform: skewY(-15deg);
        }
        .box2:hover {
            transform: skew(45deg, 15deg);
        }
    </style>
</head>
<body>
<div>
    <div class="box"></div>
    <div class="box1"></div>
    <div class="box2"></div>
</div>
</body>
</html>

运行效果:

二、关键帧动画

2.1、关键帧动画使用

关键帧动画,使用【animation】和【@keyframes】实现,其中【@keyframes】用于定义动画效果,【animation】用于使用定义好的动画效果,语法格式:

animation: 动画名称 动画持续时间 动画过渡类型 动画延迟时间 动画循环次数 动画是否反向运动;

/**
	mymove:就是我们使用@keyframes定义的动画
	2s:动画持续时间
	ease-in-out:动画过渡类型
	1s:动画延迟时间
	1:动画循环次数,使用 infinite 表示无限次
	alternate:动画是否反向运动
		reverse:动画反向运动
		forwards:保留最后一个显示状态
		backwards:保留第一个显示状态
		none:默认值
*/
animation: mymove 2s ease-in-out 1s 1 alternate;

/**
	from:表示开始动画
	to:表示结束动画
*/
@keyframes 动画名称 {
	from {
		这里写动画属性
	}
	to {
		这里写动画属性
	}
}

/**
	可以使用百分比设置动画
*/
@keyframes 动画名称 {
	0% {
		这里写动画属性
	}
	20% {
		这里写动画属性
	}
	50% {
		这里写动画属性
	}
	100% {
		这里写动画属性
	}
}

案例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>关键帧动画</title>
    <style>
        .box1 {
            width: 100px;
            height: 100px;
            background: pink;
            animation: mymove 2s linear infinite;
        }
        .box2 {
            width: 100px;
            height: 100px;
            background: pink;
            animation: myrun 10s linear 1;
        }

        @keyframes mymove {
            from {
                width: 100px;
                height: 100px;
                background: pink;
            }
            to {
                width: 200px;
                height: 200px;
                background: skyblue;
            }
        }
        @keyframes myrun {
            0% {
                width: 100px;
                height: 100px;
                background: pink;
            }
            30% {
                width: 200px;
                height: 100px;
                background: skyblue;
            }
            60% {
                width: 200px;
                height: 200px;
                background: lightcoral;
            }
            100% {
                transform: translateX(50px);
            }
        }
    </style>
</head>
<body>
    <div class="box1"></div>
    <br>
    <div class="box2"></div>
</body>
</html>

运行效果:

2.2、animate动画库

animate是一个CSS动画库,这个库本质上就是给我们写好了一些动画,再使用的时候,只需要引入相应的class样式即可,它的底层代码其实就是采用【animation】和【@keyframes】相关属性实现的一套动画。使用animate动画库只需要在html中引入样式文件即可。

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css"/>

三、3d动画

3d动画,是以垂直屏幕的方向作为Z轴,形成一个三维坐标系X、Y、Z。在使用3d动画的时候,需要主动到声明当前是3d动画,需要使用下面这个属性:

/* 当前元素下,使用3d动画效果 */
transform-style: preserve-3d;
/* 设置景深,所谓的景深就是指:眼睛到屏幕的距离,不设置就是无限远 */
perspective: 800px;

3.1、平移

3d平移主要有两个函数:【translateX()】、【translateY()】、【translateZ()】和【translate3d(x,y,z)】。

3.2、旋转

3d旋转有这几个函数:【rotateX()】、【rotateY()】、【rotateZ()】、【rotate3d(x,y,z,deg)】。rotate3d(x,y,z,deg)函数表示,x,y,z轴分别旋转对应的deg倍数。

3.3、缩放

3d缩放有两个函数:【scaleX()】、【scaleY()】、【scaleZ()】和【scale3d(x,y,z)】。scale3d()函数单独使用没有效果,必须和translate3d()或者rotate3d()函数结合使用。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>3d动画</title>
    <style>
        .box {
            width: 400px;
            height: 400px;
            border: 5px solid black;
            margin: 0 auto;
            display: flex;
            /* 当前元素下,使用3d动画效果 */
            transform-style: preserve-3d;
            /* 设置景深,所谓的景深就是指:眼睛到屏幕的距离,不设置就是无限远 */
            perspective: 800px;
        }
        .box > div {
            width: 100px;
            height: 100px;
            background: pink;
            margin: auto;
            /* 设置3d效果 */
            /* 设置平移:Z轴向前平移100px */
            /*transform: translate3d(0, 0, 100px);*/
            /* 旋转 */
            transform: rotate3d(0,0,4,-30deg);
            /* 设置缩放:Z轴缩放两倍 */
            /*transform: scale3d(1,1,2) rotate3d(0,0,2,30deg);*/
        }
    </style>
</head>
<body>
    <div class="box">
        <div></div>
    </div>
</body>
</html>

到此,CSS3中的动画效果差不多就介绍这么多了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/485480.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot 基础

一、简介 SpringBoot用来简化Spring应用的初始搭建和开发过程&#xff0c; SpringBoot四大核心&#xff1a; 自动配置 起步依赖 Actuator 命令行界面 二、入门案例 1. 基于IDEA创建步骤 ① 创建新模块&#xff0c;选择Spring Initializr&#xff0c;并配置模块相关基础信息…

AI和GPT之间什么关系,GPT怎么推动AI发展

AI&#xff08;人工智能&#xff09;和GPT&#xff08;Generative Pre-trained Transformer&#xff09;都是与计算机技术相关的术语&#xff0c;但它们代表着不同层次的概念。以下是它们之间的区别&#xff1a; 定义&#xff1a; AI是指任何类型的计算机科学&#xff0c;如机…

【AWS入门】AWS Lamda

目录 创建一个Lamda函数用Lamda函数控制启停EC2实例创建一台EC2实例创建角色创建lamda函数 使用Amazon EventBridge计划启停实例创建EventBridge 用户往S3存储桶上传图片文件&#xff0c;触发Lambda函数&#xff0c;将图片压缩并上传至另一个存储桶创建两个存储桶通过Cloudform…

【前端】3.CSS基础知识

系列文章链接 1.背景知识与学习路线 2.HTML基础知识 3.CSS基础知识 4.JavaScript基础知识 文章目录 1. 基本概念1.1 CSS 定义1.2 CSS 用途1.3 CSS 支持的属性举例 2. CSS 基础语法2.1 demo2.2 选择器2.3 CSS创建2.3.1 外部样式表2.3.2 内部样式表2.3.3 内联样式 3. 总结3.1 CSS…

Linux线程:信号量

1. 信号量 &#xff08;1&#xff09;概念 信号量是非负整数计数器&#xff0c;表示当前可使用的公共资源的个数&#xff1b;主要用于进程或线程的同步或互斥。 信号量 > 0&#xff0c;则可访问公共资源&#xff0c;信号量&#xff1b;信号量 < 0&#xff0c;则阻塞。…

dreamer的创作纪念日

先来看看这张图&#xff1a; 创作者dreamer来到CSDN的第1024天 机缘 提示&#xff1a;可以和大家分享最初成为创作者的初心 最初开始写CSDN博客&#xff0c;初衷是为了记录&#xff1a;自己工作或学习中遇到的一些问题&#xff08;就像我的第一篇博客&#xff0c;就是刷Lee…

Windows powershell添加自定义快捷指令(Linux下也有)

Windows Powershell 1.创建并修改Windows Powershell 启动执行文件 echo $PROFILE编辑C:\Users\hongyang.jia\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 2.按照以下格式输入命令 function 别名 { 需要替代的命令 }例如我的Git简写命令 function gs {git sta…

dm5爬虫(selenium)

因为纯requests请求获取不到图片链接,所以用了selenium import requests import os from lxml import etree import re from selenium import webdriverurl https://www.dm5.com/manhua-qiangweishaonv/ # 漫画的url response requests.get(url) # 获取响应 print(response)…

PowerJob客户端连接

本文来说下PowerJob客户端连接 文章目录 启动服务端编写示例代码编写自己的处理器启动示例程序任务配置与运行配置任务创建任务执行结果运行结果问题及解决 本文小结 启动服务端 启动服务端&#xff1a;http://127.0.0.1:7700/#/oms/home 编写示例代码 进入示例工程&#xff08…

RGB-D基准测试工具:绝对轨迹误差 (ATE)、相对位姿误差 (RPE)和从图像生成点云

在估计RGB-D相机轨迹并将其保存到文件中后&#xff0c;我们需要通过将其与地面事实进行比较来评估估计轨迹中的误差。有不同的错误指标。两种突出的方法是绝对轨迹误差&#xff08;ATE&#xff09;和相对姿势误差&#xff08;RPE&#xff09;。ATE非常适合测量可视 SLAM 系统的…

5 map、结构体、方法、面向对象【Go语言教程】

5 map、结构体、方法、面向对象【Go语言教程】 1 map 1.1 概念及声明 ①概念 基本语法&#xff1a;var map 变量名 map[keytype]valuetype key 可以是什么类型&#xff1f; golang 中的 map&#xff0c;的 key 可以是很多种类型&#xff0c;比如 bool, 数字&#xff0c;stri…

OK6410A 中的 irqdomain 之 gpio

文章目录 VIC domain 与 gpio domain 的硬件拓扑语言描述VIC 与 INT_EINTx 的关系INT_EINTx 与 GPIO的关系INT_EINT0INT_EINT1INT_EINT2INT_EINT3INT_EINT4INT_EINT4 与 External interrupt Group1-9 的关系External interrupt Group1External interrupt Group2External interr…

基于Open3D的点云处理2-Open3D的IO与数据转换

三维数据类型 点云 某个坐标系下的点数据集&#xff0c;每个点包括三维坐标X&#xff0c;Y&#xff0c;Z、颜色、分类值、强度值、时间等信息&#xff1b; 储存格式&#xff1a;pts、LAS、PCD、xyz、asc、ply等&#xff1b;Mesh 多边形网格&#xff0c;常见的是三角网格&#…

node快速搭建接口实现登录退出,增删改查功能供前端使用,结尾有完整代码

用node快速搭建接口 环境实现功能具体实现步奏数据库设计用express创建一个服务器实例创建数据库连接池配置跨域请求和解析前端数据登录接口实现验证token的中间件退出接口获取用户信息接口增删改查功能 完整代码 环境 node版本v17.0.0 所用到的依赖 "dependencies"…

量子力学奇妙之旅-从相对论下薛定谔方程到量子场论

专栏目录: 高质量文章导航-持续更新中 1.用于描述一个多粒子体系的波函数 前置:最小的尺度 由于不确定性原理 因此为了测量到更小的空间尺度,我们就需要提高探测粒子的动量

RSA非对称加密(附工具类Util)

文章目录 非对称加密是什么非对称加密通信流程RSA非对称加密算法非对称加密工具类Util及案例演示 之前写过一篇关于DES对称加密的帖子&#xff0c;感兴趣的小伙伴可以去看看&#xff1a;DES对称加密算法 今天主要聊聊什么是非对称加密&#xff0c;以及它是如何实现的。 一、非…

f(x)与|f(x)|,f ‘ (x),F(x)常见关系。

1.f(x)与|f(x)|关系。 1.连续关系。(f(x)在"[a,b]上连续" > |f(x)|在"[a,b]连续") ①如果f(x)在[a,b]上连续。则|f(x)|在[a,b]上连续. &#xff08;因为f(x)在x0的连续点>x0必为|f(x)|的连续点&#xff09; 注&#xff1a;”[a,b]连续“包括&#…

PUBG绝地求生的制作公司计划今年推出NFT元宇宙游戏

欢迎来到Hubbleverse &#x1f30d; 关注我们 关注宇宙新鲜事 &#x1f4cc; 预计阅读时长&#xff1a;5分钟 本文仅代表作者个人观点&#xff0c;不代表平台意见&#xff0c;不构成投资建议。 近年来&#xff0c;元宇宙的概念在游戏界获得了极大的关注。元宇宙指的是一个虚…

武汉大学惯性导航课程合集【2021年秋】2.1 惯导机械编排算法

Vrb是客观存在的&#xff0c;b相对于r的速度&#xff08;从R到b的变化&#xff09;&#xff0c;右上角的b表示投影到p坐标系&#xff0c;只是表达数值的不同。 &#xff08;工程上5-10&#xff0c;50倍&#xff09;奈奎斯特采样率&#xff0c;香农采样定理&#xff0c;又称奈…

Synthesys:语音合成和视频生成平台

【产品介绍】 Synthesys是一个基于人工智能的语音合成和视频生成平台&#xff0c;可以让你用几分钟的时间&#xff0c;就能制作出专业的音频和视频内容&#xff0c;无需花费大量的金钱和时间去雇佣演员、摄像机或音频设备。Synthesys的技术可以把你的文本转换成逼真的人声和人像…