CSS transitions深入理解
到底css transition是什么,我们来看w3c的解释:
CSS Transitions allow property changes in CSS values to occur smoothly over a specified duration. This smoothing animates the changing of a CSS value when triggered by a mouse click, focus or active state, or any changes to the element (including even a change on the element’s class attribute).
翻译为中文就是:css transition允许css属性值的变化在一个时间段内平滑完成,变化的快慢可以有对应的函数来指定。这个平滑展现css值的变化过程可以由很多事件来触发,比如鼠标点击,focus,hover等。
a.foo {
padding: 5px 10px;
background: #9c3;
-webkit-transition-property: background;
-webkit-transition-duration: 0.3s;
-webkit-transition-timing-function: ease;
}
a.foo:hover {
background: #690;
}
从上面的代码中,我们可以看到和transition相关的几个属性:
transition-property: 指定对哪个属性值的变更来执行对应transition动画过程;
transition-duration: 这个transition动画从开始到完成的时间段落
transition-timing-function:指定transition经由时间轴变更的节奏快慢(ease, linear, ease-in, ease-out,ease-in-out, cubic-bezier)
所有可以被transtion的css属性列表:
| background-color | as color |
| background-position | as repeatable list of simple list of length, percentage, or calc |
| border-bottom-color | as color |
| border-bottom-width | as length |
| border-left-color | as color |
| border-left-width | as length |
| border-right-color | as color |
| border-right-width | as length |
| border-spacing | as simple list of length |
| border-top-color | as color |
| border-top-width | as length |
| bottom | as length, percentage, or calc |
| clip | as rectangle |
| color | as color |
| font-size | as length |
| font-weight | as font weight |
| height | as length, percentage, or calc |
| left | as length, percentage, or calc |
| letter-spacing | as length |
| line-height | as either number or length |
| margin-bottom | as length |
| margin-left | as length |
| margin-right | as length |
| margin-top | as length |
| max-height | as length, percentage, or calc |
| max-width | as length, percentage, or calc |
| min-height | as length, percentage, or calc |
| min-width | as length, percentage, or calc |
| opacity | as number |
| outline-color | as color |
| outline-width | as length |
| padding-bottom | as length |
| padding-left | as length |
| padding-right | as length |
| padding-top | as length |
| right | as length, percentage, or calc |
| text-indent | as length, percentage, or calc |
| text-shadow | as shadow list |
| top | as length, percentage, or calc |
| vertical-align | as length |
| visibility | as visibility |
| width | as length, percentage, or calc |
| word-spacing | as length |
| z-index | as integer |
通过程序动态添加class来触发transition
在上面的例子中,我们都是通过在元素class中设置transition属性,在sudo class中设置变更的属性值来实现的。有的时候,我们不光需要sudo class能够实现transition的触发,有什么办法吗?
这时我们可以通过javascript来动态地增加或者删除class来实现transition的触发:
/* CSS */
.element {
opacity: 0.0;
transform: scale(0.95) translate3d(0,100%,0);
transition: transform 400ms ease, opacity 400ms ease;
} .element.active {
opacity: 1.0;
transform: scale(1.0) translate3d(0,0,0);
} .element.inactive {
opacity: 0.0;
transform: scale(1) translate3d(0,0,0);
} // JS with jQuery
var active = function(){
$('.element').removeClass('inactive').addClass('active');
}; var inactive = function(){
$('.element').removeClass('active').addClass('inactive');
};
看上面的代码,我们将获得两种不同的transitions, 元素当activated的时候slide up,而当deactivated时fade out.所有javascript干的活儿就是切换了两个class: active和inactive
hardware acceleration
transition一些属性,比如left, margin会使得浏览器在每一个frame时都重新计算styles,这是非常昂贵的计算,会导致不必要的re-paints,特别是如果在屏幕上有非常多的元素时更是如此。一个可行的方案是使用GPU。
transform: translate3d(0,0,0);
CSS transitions深入理解的更多相关文章
- <转>HTML+CSS总结/深入理解CSS盒子模型
原文地址:http://www.chinaz.com/design/2010/1229/151993.shtml 前言:前阵子在做一个项目时,在页面布局方面遇到了一点小问题,于是上stackoverf ...
- css基础--深入理解opacity和rgba的区别
欢迎访问我的个人博客:http://www.xiaolongwu.cn 前言 首先这两个都与透明度有关,那么他们之间有什么具体的区别呢?在实际工作中我们需要注意什么呢?请您接着往下看 语法 1. rg ...
- CSS: transitions
CSS Transitions CSS transitions allows you to change property values smoothly (from one value to ano ...
- [React] Use CSS Transitions to Avoid a Flash of Loading State
Based on research at Facebook, we know that if a user sees a flash of loading state, they perceive t ...
- 关于CSS的个人理解
CSS的个人理解 一.概念 层叠样式表,主要由属性和属性值(value)组成.(虽然HTML.CSS对代码大小写不敏感,但是属性和属性值对代码大小写是敏感的) 二.工作方式 1.工作原理 由浏览器将C ...
- css 盒子模型理解
盒子模型是html+css中最核心的基础知识,理解了这个重要的概念才能更好的排版,进行页面布局.下面是自己积累和总结的关于css盒子模型的知识^_^,希望对初学者有用. 一.css盒子模型概念 CSS ...
- CSS定位深入理解 完全掌握CSS定位 相对定位和绝对定位
其实前面的标准流和浮动流都很理解,就是定位不太好理解,特别是相对定位和绝对定位,很多刚开始学的同学不好区分.因此这里,小强老师和大家一起分享CSS定位的学习. 通过我们前面的学习,我们网页布局方法: ...
- css基础--深入理解弹性盒flex布局
欢迎访问我的个人博客:http://www.xiaolongwu.cn 1. 前言 flex弹性盒,是一种布局方式,当页面需要适应不同的屏幕大小以及设备类型时,它依然能确保元素 拥有更恰当的排布行为, ...
- CSS中正确理解浮动以及clear:both的关系
要注意以下几点: 1. 浮动元素会被自动设置成块级元素,相当于给元素设置了display:block(块级元素能设置宽和高,而行内元素则不可以). 2. 浮动元素后边的非浮动元素显示问题. 3. 多个 ...
随机推荐
- (转)Oracle与DB2在数据库高可用技术上的相同与差异探讨
原文:http://www.talkwithtrend.com/Article/178339 数据库建设过程中,高可用是每一个企业数据中心数据库建设过程中至关重要的一个关注点,直接关系到业务连续性和稳 ...
- (转)Db2 备份恢复性能问题诊断与调优
原文:https://www.ibm.com/developerworks/cn/analytics/library/ba-lo-backup-restore-performance-issue-ju ...
- MD5 工具类
package com.payease.chains.risk.utils; /** * md5密码加密工具类 * Created by liuxiaoming on 2017/8/28. */ pu ...
- java反射机制_读取properties
代码: import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /** * 反射特点: ...
- GitHub与Git指令入门
GitHub入门 创建账户 之前做代码版本控制都是在bitbucket上面的私有仓库.现在开源社区挺火的,想在github找些开源的工程学习一下,于是加入了github,这里记录一下入门的经历. 首先 ...
- PHP之string之addcslashes()函数使用
addcslashes (PHP 4, PHP 5, PHP 7) addcslashes - Quote string with slashes in a C style addcslashes - ...
- 传统网络栈与InfiniBand栈对比图
熟悉传统网络协议栈但对InfiniBand协议栈好奇的朋友可以通过下图有一个宏观上的印象. IB实现了"高带宽,低延时"的网络互联,最大的魅力就是支持RDMA,而RDMA就其本质, ...
- 我与ARM的那些事儿2JINLK烧录nor flash
前言 最近在研究mini2440的友善之臂,但是我拿着的是实验室早期买的开发板,在做裸机开发的过程中老是不能很好地使用最新版的minitools进行烧录,因而各种不爽,因为生成了bin文件不能很好地传 ...
- linux运维人员成长
原文地址:https://blog.csdn.net/kwame211/article/details/78059331 初级篇 linux运维人员常用工具拓扑详见: 1rsync工具 很多地方经常会 ...
- nodejs搭建简易的rpc服务
这里主要使用的是jayson包,使用jayson实现rpc server端十分简单,如下: var jayson = require('jayson') // create a server var ...