CSS3 Transition

article/2025/9/19 21:34:14

Transition 简介

Transition 可以设置 CSS 属性的过渡效果,它有以下几个属性。

  • transition-property 用于指定应用过渡属性的名称
  • transition-duration 用于指定这个过渡的持续时间
  • transition-delay 用于指定延迟过渡的时间
  • transition-timing-function 用于指定过渡的类型

transition-property

transition-property 用于指定应用过渡的属性名称,可以指定多个属性名称,多个属性名称之间用, 分隔。
默认值为 all 也就是所有的元素都应用过渡效果。
例如,想让容器的宽高有一个过渡的效果,就可以这样写:

<style>.box {width: 200px;height: 200px;background-color: dodgerblue;transition-property: width, height;   /*设置宽高过渡的属性*/}.box:hover {  /*在鼠标移入的时候修改宽高*/width: 400px;height: 400px;}
</style><body><div class="box"></div>
</body>

注意:当只设置了 transition-property 属性而没有设置过渡持续时间的时候,过渡效果不会生效。

transition-duration

transition-duration 用于设置过渡的持续时间,属性值以秒s或毫秒ms为单位,默认值为0
同样可以指定多个时长,多个每个时长会被应用到由 transition-property 指定的对应属性上。
例如:想让容器的宽度有一个5秒的过渡效果,高度有一个3秒的过渡效果,就可以这样写:

<style>.box {width: 200px;height: 200px;background-color: dodgerblue;transition-property: width, height;transition-duration: 5s, 3s;  /*设置与 transition-property 对应的过渡时间*/}.box:hover { /*在鼠标移入的时候修改宽高*/width: 400px;height: 400px;}
</style>
</head><body><div class="box"></div>
</body>

运行效果图:
运行结果图
如果指定的时长个数小于属性个数,那么时长列表会重复。
以下代码的意思是:宽度、高度、背景颜色的过渡时间都是5秒。

<style>.box {width: 200px;height: 200px;background-color: dodgerblue;transition-property: width, height, background-color;  /* 属性列表长一些 */transition-duration: 5s;  /* 如果时长的个数小于属性列表,则时长列表会重复 */}.box:hover {width: 400px;height: 400px;background-color: deeppink;}
</style><body><div class="box"></div>
</body>

运行结果如下:
在这里插入图片描述
如果时长列表更长,那么该列表会被裁减。
两种情况下,属性列表都保持不变。
以下代码的意思是:宽度的过渡时间是5秒,高度3秒,背景颜色2秒

<style>.box {width: 200px;height: 200px;background-color: dodgerblue;transition-property: width, height, background-color;  /* 设置三个属性的过渡效果 */transition-duration: 5s, 3s, 2s, 1s, 0s;  /* 有五个时长,会从第四个开始截断。 */}.box:hover {width: 400px;height: 400px;background-color: deeppink;}
</style><body><div class="box"></div>
</body>

运行结果如下
运行结果

transition-delay

transition-delay 规定了在过渡效果开始作用之前需要等待的时间(延迟时间),值以秒(s)或毫秒(ms)为单位,表明动画过渡效果将在何时开始。取值为正时会延迟一段时间来响应过渡效果;取值为负时会导致过渡立即开始。
可以指定多个延迟时间,每个延迟将会分别作用于你所指定的相符合的css属性transition-property

<style>.box {width: 200px;height: 200px;background-color: dodgerblue;transition-property: width;  /* 设置宽度有过渡效果 */transition-duration: 3s;  /* 设置过渡时间为 3s */transition-delay: 1s;   /* 设置延迟时间为 1s */ }.box:hover {width: 300px;  }
</style><body><div class="box"></div>
</body>

运行结果如下:
在这里插入图片描述

transition-timing-function

transition-timing-function用于指定过渡类型,可选值有 ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier

  • ease 默认值,先加速后减速
<style>.box {width: 200px;height: 200px;background-color: dodgerblue;transition-property: width;transition-duration: 3s;transition-timing-function: ease;  /* 设置过渡类型,默认为 ease(先加速后减速) */}.box:hover {width: 400px;}
</style><body><div class="box"></div>
</body>

运行结果如下:
在这里插入图片描述

  • linear 匀速
transition-timing-function: linear;

运行结果如下:
在这里插入图片描述

  • ease-in 加速
transition-timing-function: ease-in;

运行结果如下:
在这里插入图片描述

  • ease-out 减速
transition-timing-function: ease-out;

运行结果如下:
在这里插入图片描述

  • ease-in-out 先加速后减速,效果比 ease 感觉强烈一些
transition-timing-function: ease-in-out;

运行结果如下:
在这里插入图片描述

  • cubic-bezier 贝塞尔曲线
transition-timing-function: cubic-bezier(.09, .88, .2, .17);

运行结果如下:
在这里插入图片描述

简写属性 transition:

transition是一个简写属性,用于设置 transition-property,transition-duration,transition-timing-function, 和transition-delay
CSS 过渡 由简写属性 transition 定义是最好的方式,可以避免属性值列表长度不一,节省调试时间 。

<style>.box {width: 200px;height: 200px;background-color: dodgerblue;/* transition 简写属性 */transition: 1s width, 2s height;}.box:hover {width: 400px;height: 400px;}
</style><body><div class="box"></div>
</body>

运行结果如下:
在这里插入图片描述
注意:
transition属性中,各个值的书写顺序是很重要的:第一个可以解析为时间的值会被赋值给transition-duration,第二个可以解析为时间的值会被赋值给transition-delay

推荐抒写顺序
过渡时间 过渡样式 过渡形式 延迟时间 [,过渡时间 过渡样式 过渡形式 延迟时间]

兼容性
transition可以不用厂商前缀,不过鉴于标准刚刚稳定,对于基于 Webkit的浏览器仍然需要厂商前缀。如果想兼容旧版本的浏览器那么也需要厂商前缀(例如Firefox 15 及之前版本, Opera 12 及之前版本)

过渡的坑

  1. transition 在元素首次渲染还没有完成的情况下,是不会触发过渡的。
    过渡如果写在js 中,则必须 写在 onload 函数中,否则在页面中的元素还没有渲染完的情况下不会触发过渡!
<style>* {margin: 0;padding: 0;}.box {width: 200px;height: 200px;background-color: deepskyblue;margin: 100px auto;transition: 1s;}
</style>
<script>/* 在元素还没有完全加载的时候是不会触发过渡的 */var box = document.querySelector(".box");box.style.width = "300px";
</script>
</head><body><div class="box"></div>
</body>

解决方法

<script>window.onload = function () {var box = document.querySelector(".box");box.style.width = "300px";};
</script>
  1. transition 在绝大部分变换样式切换时,变换组合的个数或位置不一样时,是没有办法触发过渡的
  2. 过渡只关心元素的初始状态和结束状态,没有方法可以获取到元素在过渡中每一帧的状态

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

相关文章

Gradle依赖项学习总结,dependencies、transitive、force、exclude的使用与依赖冲突解决...

http://www.paincker.com/gradle-dependencies https://docs.gradle.org/current/userguide/dependency_management.html http://www.concretepage.com/build-tools/gradle/gradle-exclude-transitive-dependency-example Gradle是一个非常好用的编译工具&#xff0c;特别是继承…

Gradle依赖项之transitive/exclude/force/(+)

传递(transitive)排除(exclude)强制(force)动态版本() implementation(com.xxx:xxx:1.0.0aar) {transitive truechanging trueforce trueexclude group: com.xxx, module: xxx}强制使用指定版本号 configurations.all {resolutionStrategy {force com.github.bumptech.glid…

mptcp on mininet

这篇文章主要记录mptcp在mininet上的仿真实验。mininet中的网络实验&#xff0c;数据包走的是内核协议栈。这样得出的结果&#xff0c;好处就是实际网络协议栈的性能。缺点就是&#xff0c;要验证新的想法&#xff0c;需要修改内核协议栈。而且关于内核中的数据&#xff0c;比如…

mininet操作

mn:启动mininet sudo mn -- topo single , 3 -- mac -- switch ovsk -- controller remote &#xff08;1&#xff09;--topo:指定openflow网络拓扑&#xff0c;四种类型的openflow网络拓扑&#xff1a;tree&#xff0c;single&#xff0c;linear&#xff0c;minimal ①缺省情…

mininet 主机双网关拓扑设计

这次的拓扑是一个主机拥有两个接口&#xff0c;两个接口分别有不同的网关&#xff0c;拓扑图如下&#xff0c;拓扑可以通过前两篇中提到的miniedit.py去生成&#xff1a; 主要配置指令如下&#xff1a; 截得不全直接看代码吧 #!/usr/bin/pythonfrom mininet.net import Minine…

Mininet笔记-基本命令

命令详解 拓扑构建命令 –topo  单一&#xff08;single&#xff09;拓扑&#xff0c;永远只有一个交换机&#xff0c;主机&#xff08;host&#xff09;可以有N个  线形&#xff08;linear&#xff09;拓扑&#xff0c;可以有多个交换机和主机&#xff0c;每个交换机只连接…

mininet基本操作

mininet是由斯坦福大学基于Linux Container架构开发的一个进程虚拟化网络仿真工具&#xff0c;可以创建一个包含主机&#xff0c;交换机&#xff0c;控制器和链路的虚拟网络&#xff0c;其交换机支持OpenFlow&#xff0c;具备高度灵活的自定义软件定义网络。 在ubuntu系统中安…

mininet编程

代码 区分constructor and object #!/usr/bin/python from mininet.topo import Topo from mininet.net import Mininet from mininet.util import dumpNodeConnections from mininet.log import …

mininet实验部分总结

一、Mininet简介 Mininet是一个可以在有限资源的普通电脑上快速建立大规模SDN原型系统的网络仿真工具。该系统由虚拟的终端节点&#xff08;End-Host&#xff09;、OpenFlow交换机、控制器&#xff08;也支持远程控制器&#xff09;组成&#xff0c;这使得它可以模拟真实网络&…

Mininet应用实践

安装&#xff1a; 参考 &#xff1a; https://www.cnblogs.com/cotyb/p/5042072.html https://blog.csdn.net/Mr_Wanderer/article/details/107028267 https://blog.csdn.net/qq_19696893/article/details/123747960 开启ovsdb-server配置数据库&#xff1a;有两种方式&#x…

【学习笔记】Mininet 入门

【学习笔记】Mininet入门实战 课程介绍 Mininet是由一些虚拟的终端节点、交换机、路由器连接而成的一个网络仿真器&#xff0c;它采用轻量级的虚拟化技术使得系统可以和真实网络相媲美。 Mininet可以很方便地创建一个支持SDN的网络&#xff1a;host就像真实的电脑一样工作&…

【Mininet】基础篇:Mininet创建简单网络拓扑及简单网络拓扑脚本编写

大家好&#xff0c;我是文思月&#xff01; 每文一言&#xff1a;不要假装努力&#xff0c;结果不会陪你演戏&#xff01; 本篇文章&#xff1a; 使用Mininet创建简单的网络拓扑&#xff0c;并创建网络拓扑脚本。 正文如下&#xff1a; 1. 最小网络拓朴 创建最小的网络拓扑…

【Mininet】安装篇:安装Mininet

大家好&#xff0c;我是皮皮猫吖&#xff01; 每文一言&#xff1a;改变你的生活&#xff0c;现在或者从不 本篇文章&#xff1a; 本文是安装 mininet 的简单过程。 正文如下&#xff1a; 一、Mininet的安装 第一步&#xff1a;安装git apt install git 第二步&#xff…

mininet基础

mininet介绍 一、Mininet是什么 Mininet是由斯坦福大学基于Linux Container架构开发的一个进程虚拟化网络仿真工具&#xff0c;可以创建一个包含主机&#xff0c;交换机&#xff0c;控制器和链路的虚拟网络&#xff0c;其交换机支持OpenFlow&#xff0c;具备高度灵活的自定义…

第一讲——mininet的安装和使用

第一讲——mininet的安装和使用 1.调出字符界面。 2.进入root。 3.直接安装git&#xff0c;发现无法安装&#xff0c;原因是没有安装源。 4.更新安装源。 5.再次安装git&#xff0c;发现可以安装。 6.下载mininet。 7.安装mininet。 8.查看mininet安装情况和创建线性网络拓扑。…

距离(distance)算法小结

18种和“距离(distance)”、“相似度(similarity)”相关的量的小结 在计算机人工智能领域&#xff0c;距离(distance)、相似度(similarity)是经常出现的基本概念&#xff0c;它们在自然语言处理、计算机视觉等子领域有重要的应用&#xff0c;而这些概念又大多源于数学领域的度…

概率论 联合分布

作者&#xff1a;Vamei 出处&#xff1a;http://www.cnblogs.com/vamei 欢迎转载&#xff0c;也请保留这段声明。谢谢&#xff01; 我之前一直专注于单一的随机变量及其概率分布。我们自然的会想将以前的结论推广到多个随机变量。联合分布(joint distribution)描述了多个随机变…

推荐 :联合概率和条件概率的区别和联系

联合概率P(A∩B) 两个事件一起&#xff08;或依次&#xff09;发生的概率。 例如&#xff1a;掷硬币的概率是 ⁄₂ 50%&#xff0c;翻转 2 个公平硬币的概率是 ⁄₂ ⁄₂ ⁄₄ 25%&#xff08;这也可以理解为 50% 的 50%&#xff09; P(A ∩ B) P(A) ⋅ P(B) 对于 2 个硬币…

【概率论】五分钟搞懂概率论联合密度函数与概率之间的计算

【例题】 设X和Y的联合密度函数为&#xff1a; f ( x , y ) { 2 0 < x < ∞ , 0 < y < ∞ 0 其 他 区 域 f(x,y)\left\{ \begin{array}{rcl} 2 && {0<x<\infty,0<y<\infty}\\ 0 && 其他区域 \end{array} \right. f(x,y){20​​0<…

python3 联合概率,边缘概率,贝叶斯定理(含详细推导)

1、贝叶斯原理 假设有两个随机变量X&#xff1b;Y&#xff08;下方左图&#xff09;&#xff1b; X的取值为 {}&#xff0c;其中 i1,...,M(M个特征&#xff09;&#xff1b; Y的取值为 {}&#xff0c;&#xff0c;其中 j1,...,L&#xff08;L个类&#xff09;&#xff0c;如…