transition 过渡

IE10、Firefox、Chrome、Opera 支持 transition 属性。

Safari 需要前缀 -webkit-。

Chrome 25 以及更早版本需要前缀 -webkit-。

IE9 以及更早版本不支持 transition 属性。

过渡属性

【1】transition-property:

规定应用过渡效果的 CSS 属性的名称(当指定的CSS属性改变时,过渡效果开始),其默认值为 all 。

【2】transition-duration:

规定完成过渡效果需要的时间(单位为 s 或 ms),其默认值为 0s ,意味着如果不指定这个属性,将不会呈现过渡效果。

【3】transition-timing-function:

规定过渡效果的时间曲线。

默认 ease :慢速开始,中间变快,慢速结束;相当于 cubic-bezier(0.25, 0.1, 0.25, 1)。

可选 liner:匀速运动;相当于 cubic-bezier(0, 0, 1, 1)。

可选 ease-in:慢速开始;相当于 cubic-bezier(0.42, 0, 1, 1)。

可选 ease-out:慢速结束;相当于 cubic-bezier(0, 0, 0.58, 1)

可选 ease-in-out:慢速开始,慢速结束;相当于 cubic-bezier(0.42, 0, 0.58, 1)

可选 cubic-bezier(n, n, n, n):在 bezier 函数中自定义 0 ~ 1 之间的数值。

贝塞尔时间曲线详解。。。

【4】transition-delay:

规定过渡效果的延迟时间,默认为 0s 。

复合属性

在使用复合属性定义过渡效果时,子属性之间用空格分隔。

transition: width 2s linear;

transition 属性可以指定多个值,当指定多个值时,中间用逗号分隔。

transition: width 2s ease-in-out, height 2s ease-in-out;

过渡阶段

【1】过渡分为两个阶段:前进(forward)和反向(reverse)。

【2】若前进阶段还未完成就进入反向阶段,则反向阶段的初始值为前进阶段结束时的瞬时值。

【3】以 :hover 伪类为例,如果在非 hover 状态下设置了 transition 属性,相当于设置了反向状态,此时前进和反向是一致的。

#test {
width: 100px;
height: 100px;
background-color: cyan;
transition: width 2s, height 2s;
} #test:hover {
width: 300px;
height: 300px;
}

这段代码意味着,当鼠标悬浮时,将 width 变为 300px,将 height 变为300px,过渡时间为 2s;当鼠标离开时,将 width 变为 100px,将 height 变为 100px,过渡时间为 2s。

但是如果在 hover 状态下也设置了 transition 属性,则 hover 状态下的为前进状态,非 hover 状态下的为反向状态。

#test {
width: 100px;
height: 100px;
background-color: cyan;
transition: width 2s, height 2s;
} #test:hover {
width: 300px;
height: 300px;
transition: width 5s, height 5s;
}

这段代码意味着,当鼠标悬浮时,将 width 变为 300px,将 height 变为300px,过渡时间为 5s;当鼠标离开时,将 width 变为 100px,将 height 变为 100px,过渡时间为 2s。

注意:在 hover 状态下设置 transition 属性时,明确哪些属性需要过渡,而哪些属性不需要过渡。

【4】当子元素和父元素过渡属性一致:若触发子元素过渡时,父元素正在过渡,则将父元素过渡的中间态的值作为子元素过渡的初始值;同理,若子元素过渡并未完成就开始父元素的过渡,则将子元素过渡的中间态的值作为父元素过渡的初始值。

#box:hover {
font-size: 48px;
transition: font-size 3s;
} #test:hover {
font-size: 48px;
transition: font-size 10s;
}

需要注意的是:当子元素与父元素过渡属性一致,但是过渡时间不一致的时候,如上面这段代码,子元素的过渡时间为 10 秒,父元素的过渡时间为 3 秒,当鼠标悬浮在子元素上时,呈现的是子元素的过渡效果,但是父元素的过渡时间也在开始计算;当子元素上过渡进行了 2 秒,此时将鼠标移入父元素,进行父元素的过渡时,这个属性的过渡时间就只有 1 秒。

【5】当需要过渡的属性初始值为 auto 时,不会进行过渡。

#test {
width: 100px;
height: 100px;
margin: 30px auto;
background-color: cyan;
} #test:hover {
transition: margin-left 5s;
margin-left: 500px;
}

【6】隐式过渡,是指一个属性的改变引起另一个属性的改变。

#box {
width: 300px;
height: 300px;
border: 1em solid black;
} #box:hover {
font-size: 48px;
transition: font-size 3s;
}

当 font-size 改变时,border 的宽度也会跟着改变。

Firefox 和 IE 支持隐式过渡。

参考:

深入理解 CSS 过渡 transition

CSS transition 过渡 详解的更多相关文章

  1. [转]CSS hack大全&详解

    转自:CSS hack大全&详解 1.什么是CSS hack? CSS hack是通过在CSS样式中加入一些特殊的符号,让不同的浏览器识别不同的符号(什么样的浏览器识别什么样的符号是有标准的, ...

  2. div+css定位position详解

    div+css定位position详解 1.div+css中的定位position 最主要的两个属性:属性 absolute(绝对定位) relative(相对定位),有他们才造就了div+css布局 ...

  3. [转]CSS vertical-align属性详解 作者:黄映焜

      CSS vertical-align属性详解 posted @ 2014-08-26 17:44 黄映焜   前言:关于vertical-align属性. 实践出真知. 垂直居中. 第二种用法. ...

  4. CSS绝对定位absolute详解

    转:https://www.jianshu.com/p/a3da5e27d22b     之前介绍过CSS浮动float详解,本篇介绍的绝对定位absolute和浮动float有部分相似性.如果能理解 ...

  5. CSS3过渡详解-遁地龙卷风

    第二版 0.环境准备 (1)过渡需要浏览器的支持,使用这些属性要加上浏览器厂商的前缀,我用的chrome49已经不需要前缀了, -o- Opera -webkit- Safari.Chrome -mo ...

  6. css 12-CSS3属性详解:动画详解

    12-CSS3属性详解:动画详解 #前言 本文主要内容: 过渡:transition 2D 转换 transform 3D 转换 transform 动画:animation #过渡:transiti ...

  7. 第97天:CSS3渐变和过渡详解

    一.渐变 渐变是CSS3当中比较丰富多彩的一个特性,通过渐变我们可以实现许多炫丽的效果,有效的减少图片的使用数量,并且具有很强的适应性和可扩展性. 可分为线性渐变.径向渐变 1. 线性渐变 (grad ...

  8. css文本格式详解

    一.css文本主体内容: 二.css文本详解:  1.文本缩进 语法: text-indent:<length>|<percentage> 默认值为0. 属性值详解: < ...

  9. css学习--inline-block详解及dispaly:inline inline-block block 三者区别精要概括

    *知识储备: 内联元素:是不可以控制宽和高.margin等:并且在同一行显示,不换行. 块级元素:是可以控制宽和高.margin等,并且会换行. 1.inline-block 详解 (1)一句话就是在 ...

随机推荐

  1. ls -F一种非常有用的ls格式

    ls -F一种非常有用的ls格式  tz/y/yupeng > ls -F#q#           News/         doc/          images/       mbox ...

  2. [CareerCup] 3.4 Towers of Hanoi 汉诺塔

    3.4 In the classic problem of the Towers of Hanoi, you have 3 towers and N disks of different sizes ...

  3. Linux(12.1-12.6)学习笔记

    第十二章 并发编程 如果逻辑控制流在时间上重叠,那么他们就是并发的.应用级并发在以下情况中发挥作用: 访问慢速I/O设备. 与人交互. 通过推迟工作以降低延迟. 服务多个网络客户端. 在多核机器上进行 ...

  4. 20135231 —— Linux 基础入门学习

    20135231 何佳 学习计时:共12小时 读书:5 代码:2 作业:2 博客:3 一.学习目标 1. 能够独立安装Linux操作系统 2. 能够熟练使用Linux系统的基本命令 3. 熟练使用Li ...

  5. 点击事件touches与ios的手势UIGestureRecognizer

    .h文件 @property (weak,nonatomic) IBOutlet UILabel *messageLabel;@property (weak,nonatomic) IBOutlet U ...

  6. Opencv step by step - 配置文件

    有时候,我们需要用配置文件存储一些图像或者视频的信息. 先来一个简单的例子: #include <cv.h> #include <highgui.h> int main(int ...

  7. 20145215《Java程序设计》第5周学习总结

    20145215<Java程序设计>第五周学习总结 教材学习内容总结 异常处理 语法与继承架构 异常就是程序在运行时出现不正常情况,异常的由来是因为Java把出现的问题封装成了对象,换句话 ...

  8. 【Win 10应用开发】如何知道当前APP在哪个平台设备上运行

    在做Win10开发的时候,我们可能经常会需要获得当前程序在在哪个平台设备上运行,用于UI和相关API的调用,那么可以通过什么方式知道当前APP运行的平台呢? 今天这里提供两个方法给大家做参考: 方法一 ...

  9. 自编基于jQuery实现分页插件

    $(function(){ }); /** * @params dataUrl:请求数据url地址 * @params countUrl:请求数据总数url地址 * @params pageSize: ...

  10. cocos2d-x 3.6 mac下的试用(粒子,触摸事件,图片)

    戏说 虽然公司再如何如何,咱程序员在干好课外学习的情况下也是要努力做好本职工作的. 工作中的lua也写多了,深入了解Cocos2d-x当然还是要倒腾倒腾C++,对于一个C#用了这么多年,工作用lua的 ...