CSS过渡,转换与动画

article/2025/3/13 7:56:14

目录

过渡(transition)

转换(transform)

什么是转换

二维坐标系

 移动(translate)

用translate实现居中

旋转(rotate)

设置旋转中心点

缩放(scale)

使用 

设置缩放中心点

动画

用keyframes定义动画

调用动画

动画的属性

实例:

进度条案例

扇子展开


过渡(transition)

        CSS3过度是新增的属性之一,可以让我们不需要使用flash动画或者javascript的情况下,当元素从一种样式变换为另一种样式时,为元素增加效果。

        过度动画指的是一个状态渐渐过渡到另外一个状态,比如从个苹果转变成一个西瓜,过度实现转变之间的平滑切换。

        我们现在经常用:hover一起搭配使用。

语法:transition:要过度的属性 花费时间 运动曲线 何时开始;

  • 属性:指的是元素的宽度,高度,颜色等,如果想全部变换,则写all
  • 花费时间:单位时间为s,写0.5s表示花费0.5秒
  • 运动曲线:默认为ease,(可省略)
  • 何时开始:单位是秒,也就是事件触发的延时时间,默认是0s。(可省略)

读者不妨试试以下例子,实现从蓝色盒子转换成紫色盒子。

<!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>div{width: 200px;height: 200px;background: skyblue;transition: all 2s;}div:hover{ width: 300px;height: 600px;background: purple;}</style>
</head>
<body><div></div>
</body>
</html>

 如果上述不写all,则可以写成。

        div{width: 200px;height: 200px;background: skyblue;transition: height 2s,width 2s,background-color 2s;}

 

转换(transform)

CSS转换是一个非常强势的东西,CSS转换有两种方式,分别是2D转换和3D。

什么是转换

转换(transform)是CSS3中具有颠覆性的特性之一,可以实现元素的位移,旋转,缩放等效果。

也就是实现元素的变形。

二维坐标系

2D转换是改变标签在二维平面上的位置和形状的一种技术,我们先了解一下二维坐标系。

水平方向表示X轴,垂直方向表示Y轴,水平向右,X不断增大,垂直向下,Y不断增大。

 移动(translate)

移动指的是改变元素的位置,与我们之前学过的定位类似。

语法格式:

  • transform:translate(x,y);
  • transform:translateX(n);
  • transform:translateY(n);

我们使用以下案例:

<!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>.translate{width: 100px;height: 100px;background: skyblue;transform:translate(20px,20px);}</style>
</head>
<body><div class="translate"></div>
</body>
</html>

我们增加(x,y)大小

 注意:

  • translate的移动不会影响其他元素的位置
  • 若移动采用百分比单位,百分比是相对于自身元素translate(50%,50%);

用translate实现居中

 

<!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>p{margin: 0;}div{position: relative;width: 200px;height: 200px;background: skyblue;}p{position: absolute;top:50%;left:50%;width:100px;height: 100px;background: purple;transform: translate(-50%, -50%);}</style>
</head>
<body><div><p></p></div>
</body>
</html>

旋转(rotate)

2D旋转指的是让元素2维平面中顺时针或者逆时针旋转。

语法:transform:rotate(度数)

注意:

  • 单位为deg,度数为正表示顺时针旋转,度数为负表示逆时针旋转
  • 默认的旋转中心点为元素的中心点

 

<!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>body {padding:100px;}div{width: 200px;height: 200px;background: skyblue;transform:rotate(45deg);}</style>
</head>
<body><div></div>
</body>
</html>

设置旋转中心点

属性:transform-origin

语法:transform-origin: x y;

默认值为50%,50%,也就是元素中心点,我们可以尝试以下例子:

<!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>body{padding: 100px;}div{width: 100px;height: 100px;background: purple;transition: all 1s;transform-origin: bottom left;}div:hover{transform:rotate(360deg);}</style>
</head>
<body><div></div>
</body>
</html>

缩放(scale)

实现元素的放大和缩小

语法:treansform:scale(x,y);

注意:

  • transform:scale(1,1);宽高都放大1倍等于没有缩放
  • transform:scale(2)等于宽高都放大两倍,如果没有写第二个参数,第二个参数默认与第一个参数大小相同
  • scale的放大缩小不会影响其他盒子

使用 

<!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>div{width: 100px;height: 100px;background: purple;transition: all 1s;margin:100 auto;}div:hover{transform:scale(2,2);}</style>
</head>
<body><div></div>
</body>
</html>

设置缩放中心点

 与旋转变换中心点相同

动画

可以通过多个节点来精确控制一个或者一组动画,常来实现复杂的动画效果,动画与过渡的区别在于,动画能实现更多变化,更多控制等效果。

制作动画分为两个步骤

  • 先定义动画
  • 再调用动画

用keyframes定义动画

@keyframes turnto {0%{transform:translateX(0);}100%{transform:translateX(500px);}
}

动画序列:

  • 0%是动画的开始,100%是动画的结束,这个就是动画序列
  • 通过在@keyframes中规定某项CSS样式,就能创建不同的动画效果
  • 我们可以通过改变任意多的样式设置任意多的动画效果
  • 我们用百分比来规定动画发生的顺序,也可以通过from与to分别代表0%与100%

调用动画

  • animation-name:动画名称
  • animation-duration:动画持续时间
        div{width: 100px;height: 100px;background: purple;margin: 0 auto;/* 调用动画 */animation-name:turnto;/* 动画持续时间 */animation-duration:1s;}

我们通过使用以下案例实现盒子按照正方形路径移动,要注意百分比数字只能为整数。

<!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>div{width: 100px;height: 100px;background: purple;margin: 0 auto;/* 调用动画 */animation-name:move;/* 动画持续时间 */animation-duration:4s;}@keyframes move {0%{transform:translate(0,0);}25%{transform:translate(500px,0);}50%{transform:translate(500px,500px);}75%{transform:translate(0,500px);}100%{transform:translate(0,0);}}</style>
</head>
<body><div></div>
</body>
</html>

动画的属性

属性描述
animation-delay设置延时,即从元素加载完成之后到动画序列开始执行的这段时间。
animation-direction设置动画在每次运行完后是反向运行还是重新回到开始位置重复运行
animation-duration设置动画一个周期的时长。
animation-iteration-count设置动画重复次数,可以指定 infinite 无限次重复动画
animation-play-state允许暂停和恢复动画。
animation-name指定由@keyframes描述的关键帧名称
animation-timing-funciton设置动画的运动曲线
animation-fill-mode动画结束后停留在起始位置或者结束位置

动画属性的使用格式:

        animation{/* 延迟4s开始播放 */animation-delay: 4s;/* 运动曲线,平稳播放 */animation-timing-function: ease;/* 设置动画播放无限循环 count表示次数。infinite表示无限 */animation-iteration-count: infinite;/* 是否反方向播放 alternate表示逆向播放  normal表示默认播放*/animation-direction: alternate;/* 动画结束后停留在起始位置或者结束位置,停在结束位置设置backwards */animation-fill-mode: backwards;/* 规定动画运行或者停止,可以设置鼠标经过时停止 running为运行,pause为停止*/animation-play-state: running;}

实例:

进度条案例

        鼠标经过实现进度条拉满

<!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>.process-bar{width: 450px;height: 30px;border: 1px solid rgb(52, 122, 242);border-radius:15px;}.process-bar-child{width: 50%;height:100%;background: skyblue;border-radius: 15px;transition: all 1s;}.process-bar:hover .process-bar-child{width: 100%;}</style>
</head>
<body><div class="process-bar"><div class="process-bar-child"></div></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>/*TODO:请补充 CSS 代码*/#box{margin: 100px 300px;position: relative;}#box [id^=item]{position: absolute;height: 400px;width: 200px;border-radius: 20px;transform-origin: bottom center;transition: all 2s;}#box div:nth-child(3n){background: pink;}#box div:nth-child(3n+1){background: skyblue;}#box div:nth-child(3n+2){background: purple;}#box:hover #item1 {transform: rotate(-60deg);}#box:hover #item2 {transform: rotate(-50deg);}#box:hover #item3 {transform: rotate(-40deg);}#box:hover #item4 {transform: rotate(-30deg);}#box:hover #item5 {transform: rotate(-20deg);}#box:hover #item6 {transform: rotate(-10deg);}#box:hover #item7 {transform: rotate(10deg);}#box:hover #item8 {transform: rotate(20deg);}#box:hover #item9 {transform: rotate(30deg);}#box:hover #item10 {transform: rotate(40deg);}#box:hover #item11 {transform: rotate(50deg);}#box:hover #item12 {transform: rotate(60deg);}</style>
</head>
<body><div id="box"><div id="item1"></div><div id="item2"></div><div id="item3"></div><div id="item4"></div><div id="item5"></div><div id="item6"></div><div id="item7"></div><div id="item8"></div><div id="item9"></div><div id="item10"></div><div id="item11"></div><div id="item12"></div></div>
</body>
</html>

以上内容如有错误,请大家在评论区指正,谢谢支持,共同进步。 加油!!!
如果你感觉我写的内容对你有一定的帮助,请给我点一个 【赞】作为您对我的鼓励, 感谢! ! !


http://chatgpt.dhexx.cn/article/iHPH13su.shtml

相关文章

CSS过渡-Transitions

目录 过渡三要素 过渡触发 属性&#xff1a; 实例运用&#xff1a; 1.过渡时间曲线动画 2.文字放大效果 3.手风琴 4. 米兔过渡 CSS transitions 可以决定哪些属性发生动画效果 (明确地列出这些属性)&#xff0c;何时开始 (设置 delay&#xff09;&#xff0c;持续多久 …

CSS过渡动画

css中实现动画有两种方式&#xff1a;transition过渡动画、 animation自定义动画。 transition 是 css3 新增的⼀个功能&#xff0c;可以实现元素不同状态间的平滑过渡&#xff08;当元素从⼀个状态进⼊到另⼀个状态时&#xff09;&#xff0c;经常⽤来制作⼀些动画效果。 之…

CSS中过渡效果(transition)

CSS中过渡效果&#xff08;transition&#xff09; 过渡&#xff08;无继承性&#xff09;1、transition-property属性2、transition-duration属性3、transition-timing-function属性4、transition-delay属性5、transition属性 兼容性练习总结 过渡&#xff08;无继承性&#x…

CSS过渡

CSS过渡 1. 什么是过渡2. 可以参与过渡的属性有哪些3. 缓动效果 1. 什么是过渡 在 CSS 中&#xff0c;过渡属性&#xff1a;transition 过渡可以为一个元素在不同样式之间变化自动添加 ”补间动画“ 相比于用 JavaScript 实现过渡&#xff0c;用 CSS 优点&#xff1a;  …

CSS系列之过渡 transition(CSS3)

文章の目录 1、transition1.1、概述1.2、值的组成 2、transition-property2.1、属性值 3、transition-duration3.1、属性值 4、transition-timing-function4.1、属性值 5、transition-delay5.1、属性值 写在最后 过渡&#xff08;transition)是CSS3中具有颠覆性的特征之一&…

CSS transition(过渡效果)详解

CSS transition&#xff08;过渡效果&#xff09;详解 通常当 CSS 的属性值更改后&#xff0c;浏览器会立即更新相应的样式&#xff0c;例如当鼠标悬停在元素上时&#xff0c;通过 :hover 选择器定义的样式会立即应用在元素上。在 CSS3 中加入了一项过渡功能&#xff0c;通过该…

#HTML5-CSS-transition-过渡特效

CSS过渡特效 概述   在CSS中用于设置过渡特效的属性是 transition&#xff0c;该属性允许CSS的属性值在一定的时间区间内平滑地过渡&#xff0c;这就拜托了我们在CSS3版本标准之前对“JavaScript”和“Flash”的依赖&#xff0c;使页面的性能得以提升。这种效果可以在鼠标悬…

Windows系统_ARM处理器无法打开客户端问题解决

问题现象&#xff1a;客户端无法打开 用户环境&#xff1a;Windows系统 ARM处理器 问题定位&#xff1a;兼容性问题 解决方法&#xff1a; 右键客户端&#xff0c;点击“属性”选择“兼容性”&#xff0c;点击“更改所有用户的设置” 选择“更改仿真设置” 勾选设置如下&a…

每日三问之rem与em区别、Vue Set基本用法与使用场景、手写call、apply、bind方法

rem与em区别 在css中单位长度用的最多的是px、em、rem&#xff0c;这三个的区别是&#xff1a; px是固定的像素&#xff0c;一旦设置了就无法因为适应页面大小而改变。em和rem相对于px更具有灵活性&#xff0c;他们是相对长度单位&#xff0c;意思是长度不是定死了的&#xf…

IntelliJ 代码规范检查设置

IntelliJ → Preferences → Code Style → Inspections 在这里可以设置各种文件格式的规范检查 安装了阿里代码规约插件以后就会多出一项 Ali-Check &#xff08;请先安装阿里的代码规约插件 IntelliJ 代码规范检查插件&#xff09; 为了让大家统一规范规则&#xff0c;我们…

macOS借助vmware隔离运行aTrust,实现宿主机“干净”连入局域网

aTrust是深信服原easyconnect的升级产品&#xff0c;重点打造了一个“零信任”的概念&#xff0c;就是这个概念让我头皮发麻&#xff0c;其在官网直接挂着 终端检测深入&#xff1a;支持进程级检测&#xff0c;可发现和阻止终端上非可信应用进程&#xff1b;在登录时、每一次访…

基于云开发的答题活动小程序v2.0-用云开发的聚合能力实现从题库中随机出题功能

项目技术栈 微信原生小程序云开发。为什么选择微信原生小程序进行开发呢&#xff1f;因为能够直接应用它的云开发能力吖。 我这里主要使用了云开发能力中的小程序端SDK&#xff0c;说白了就是在javascript中就能直接操作数据库。 本篇前言 基于云开发的答题活动小程序v2.0的…

国内唯一!腾讯零信任iOA入选全球UEM厂商全景图

近日&#xff0c;国际权威机构Forrester发布《The Unified Endpoint Management Landscape, Q3 2023》&#xff08;以下简称“报告”&#xff09;&#xff0c;对全球24家统一终端管理厂商进行了综合性评估&#xff0c;腾讯安全凭借零信任iOA在DEX&#xff08;数字化员工体验&am…

VMware:速修复这三个严重的 Workspace ONE Assist 软件漏洞

聚焦源代码安全&#xff0c;网罗国内外最新资讯&#xff01; 编译&#xff1a;代码卫士 VMware 修复了影响 Workspace ONE Assist 解决方案中的五个漏洞&#xff0c;其中一些可悲用于绕过认证并获取提升后的权限。 其中三个漏洞CVE-2022-31685、CVE-2022-31686和CVE-2022-31687…

Linux 服务器 OOM 分析

1 服务器告警短信 【监控告警】告警名称:商业业务数字科技中心机器发生oom, 状态:CRITICAL, 环境:xxx-阿里云-生产集群(生产)-生产, 告警内容: log.sys.oom(max,120s) > 0,当前值&#xff1a;1.00, 资源类型:服务器(n9e), 告警对象:10.231.82.xxx, 触发时间:2021-11-02 18:2…

Linux easy_install scrapy 报错 Not a recognized archive type: /tmp/easy_install-uem5ldyz/Twisted-18.9.

(本人用的服务器是CentOS7.3, python版本是3.7.0&#xff0c;自己的服务器用的是root用户&#xff0c;哈哈&#xff01;) 按照正常步骤安装scrapy 1.首先升级yum源 sudo yum update 2.安装依赖包 sudo yum -y install libxslt-devel pyOpenSSL python-lxml python-devel g…

启用Desktop Central Cloud:以SaaS方式拥抱UEM !

Desktop Central是一个全面的统一终端管理(UEM)解决方案&#xff0c;可以动态地保护和管理用户设备&#xff0c;包括台式机、笔记本电脑、智能手机和平板电脑。 KuppingerCole在其2020年领导者指南中将ManageEngine Desktop Central评为统一终端管理(UEM)领导者。 作为UEM领域…

重大福利!优云UEM重磅上线!

“千呼万唤始出来”&#xff0c;万众期待的优云UEM正式与宝宝们见面啦~~~ 今天很多人来问小编&#xff0c;优云Web咋不见了&#xff0c;表急&#xff0c;优云Web并没有消失&#xff0c;而是重磅升级为优云UEM啦&#xff01;&#xff01;&#xff01; 什么是UEM呢&#xff1f;UE…

UEM用户行为了如指掌!

“千呼万唤始出来”&#xff0c;万众期待的UEM正式与宝宝们见面啦~~~ 今天很多人来问小编&#xff0c;Web咋不见了&#xff0c;表急&#xff0c;Web并没有消失&#xff0c;而是重磅升级为UEM啦&#xff01;&#xff01;&#xff01; 什么是UEM呢&#xff1f;UEM全称User Experi…

UEM“探针”技术及用户体验管理

随着互联网产品越来越多&#xff0c;用户群体越来越庞大以及用户品位的多样性增加&#xff0c;我们会发现这样的一个规律&#xff0c;就是相同类型的产品&#xff0c;比如播放器中的QQ影音和暴风影音&#xff0c;再比如小游戏平台中的腾讯游戏和联众等等&#xff0c;他们的功能…