我以前始终都把他搞反,或者是混淆。现在可以稍微小结下。

Transition:CSS3中处理动画的一个样式;只涉及动画起始和终止两个状态。如果涉及到一个动画的各个时间或者状态,那就必须要用到的另外一个样式:Animate。

Transition有四个过渡属性:

transition-property   /*指定动画执行的样式变化*/
transition-duration /*动画需要执行的时间*/
transition-timing-function /*平滑过渡的函数:*/
transition-delay /*延迟多长时间开始动画*/ 

transition-property指定样式变化,如果涉及到元素的位移、旋转、形变、缩小/放大就需要用到Transform属性:

transform:scale(sx,sy);
transform:translate(0px,9px);
transform:rotate(a);
transform:skew(ax,ay);
transform:matrix(a,b,c,d,e,f)

其中martix比较复杂,它可以包含旋转、形变、缩小/放大三者,其实transform的原理是计算机图形学中的2D矩阵变换。

参考:http://www.cnblogs.com/winter-cn/archive/2010/12/29/1919266.html,transition-timing-function需要用到贝塞尔曲线,

首先需要知道几个简单常量:linear ease ease-in ease-out ease-in-out。进一步精化就需要知道什么是贝塞尔曲线。可以参考:

http://www.zhangxinxu.com/wordpress/2013/08/%E8%B4%9D%E5%A1%9E%E5%B0%94%E6%9B%B2%E7%BA%BF-cubic-bezier-css3%E5%8A%A8%E7%94%BB-svg-canvas/,来看一个JS操作transition的例子:

<body class="layout-scroll">
<div id="test"style="background-color: red;width:200px;height: 100px;top:10px;left:10px;position:relative">
<a href="#nolink" id="click" style="bottom: -22px; text-align: center; position:absolute">点击</a>
</div> <script type="text/javascript">
var circular = {
style: 'cubic-bezier(0.1, 0.57, 0.1, 1)', // Not properly "circular" but this looks better, it should be (0.075, 0.82, 0.165, 1)
fn: function (k) {
return Math.sqrt( 1 - ( --k * k ) );
}
};
$('#click').click(function(){
var transformStyle = $('#test')[0].style;
transformStyle["webkitTransitionDuration"] = 0 + 's';
transformStyle["webkitTransitionTimingFunction"] = circular.style;
transformStyle["webkitTransform"] = 'translate(' + 700 + 'px,' + 0 + 'px)'
});
//transitionDuration为0的情况下,不触发TransitionEnd事件
$('#test').on('webkitTransitionEnd',function(){
alert('game over')
},false);
</script>
</body>

来看一个例子,该例子是点击右边的箭头,会撑开下面的文本,箭头会变成向右。撑开的过程采用transition,在transition结束之后,箭头变化!

代码如下:

/*
.mgf-content-list li p {
overflow: hidden; //内容溢出元素框时隐藏。
}
*/
$('ul li h2 .mgf-icon').on('tap',function(){
var transFormDom = $(this).closest('li').find('p')[0];
var transFormStyle = transFormDom.style;
if(transFormStyle.height == '0px') {
transFormStyle.height = $(transFormDom).attr("height")+ 'px';
}else{
transFormStyle.height = 0;
}
transFormStyle.transition = 'height 0.5s linear';
});
//动画结束之后,箭头样式变化。
$('ul li p').on('webkitTransitionEnd',function(){
var Z_dom = $(this).parent('li').find('span');
if(Z_dom.hasClass('mgf-icon-chevron-down')){
Z_dom.removeClass('mgf-icon-chevron-down').addClass('mgf-icon-chevron-right');
}else {
Z_dom.removeClass('mgf-icon-chevron-right').addClass('mgf-icon-chevron-down');
}
});
//页面初始化,先获取p区域的高度。然后把该区域的高度设置为0,
//可以隐藏p区域
$('.mgf-content-list li p').forEach(function(item,index){
$(item).attr("height",$(item).height());
item.style.height = 0;
})

css3 中的transition和transform的更多相关文章

  1. css3中动画(transition)和过渡(animation)详析

    css3中动画(transition)和过渡(animation)详析

  2. CSS3中的变形处理(transform)属性

    在CSS3中,可以利用transform功能来实现文字或图像的旋转.扭曲.缩放.位移.矩阵.原点这六种类型的变形处理,下面将详细讲解transform的使用. 变形--旋转 rotate() div. ...

  3. 在CSS3中,可以利用transform功能来实现文字或图像的旋转、缩放、倾斜、移动这四种类型的变形处理

    CSS3中的变形处理(transform)属 transform的功能分类 1.旋转 transform:rotate(45deg); 该语句使div元素顺时针旋转45度.deg是CSS 3的“Val ...

  4. css3中的变形(transform)、过渡(transtion)、动画(animation)

    Transform字面上就是变形,改变的意思.在CSS3中transform主要包括以下几种:旋转rotate.扭曲skew.缩放scale和移动translate以及矩阵变形matrix.下面我们一 ...

  5. CSS3中的transition

    W3C标准中对CSS3的transition是这样描述的: CSS的transition允许CSS的属性值在一定的时间区间内平滑地过渡.这种效果可以在鼠标单击,获得焦点,被点击或对元素任何改变中触发, ...

  6. CSS3中的Transition属性详解

    w3c标准中对CSS3的transition这是样描述的:“CSS的transition允许CSS的属性值在一定的时间区间内平滑地过渡.这种效果可以在鼠标单击.获得焦点.被点击或对元素任何改变中触发, ...

  7. CSS3中的Transition属性详解(贝赛尔曲线)

    transition语法: transition : [<'transition-property'> || <'transition-duration'> || <'t ...

  8. CSS3的transition和transform

    CSS3中的transition和transform是制作HTML5动画一定要使用到的两个属性. 注:这篇文章不考虑兼容性,只讨论webkit核心的浏览器.所以本文的所有例子请用chrome,safa ...

  9. CSS3特效之转化(transform)和过渡(transition)

    CSS3特效之转化(transform)和过渡(transition) 在对动画深入之前,我们需要先了解它的一些特性,CSS3的转化(transform)和过渡(transition).有人可能会有疑 ...

随机推荐

  1. PHP 解析 ElasticSearch 的 json 方法,有關遍歷所有 json 元素

    以下是eleasticsearch返回的json資料:{"took" : 12,"timed_out" : false,"_shards" ...

  2. Shell命令_Cron使用

    chkconfig crond on d表示damon,后台进程 chkconfig --list | grep crond crontab [选项] 选项: -e: 编辑crontab定时任务 -l ...

  3. 【BZOJ 4636】蒟蒻的数列

    http://www.lydsy.com/JudgeOnline/problem.php?id=4636 DCrusher贡献的题目 看了他的博客,有两种做法,动态开点线段树和离线操作离散化区间线段树 ...

  4. 【BZOJ 3053】The Closest M Points

    KDTree模板,在m维空间中找最近的k个点,用的是欧几里德距离. 理解了好久,昨晚始终不明白那些“估价函数”,后来才知道分情况讨论,≤k还是=k,在当前这一维度距离过线还是不过线,过线则要继续搜索另 ...

  5. 【codevs 1565】【SDOI 2011】计算器 快速幂+拓展欧几里得+BSGS算法

    BSGS算法是meet in the middle思想的一种应用,参考Yveh的博客我学会了BSGS的模版和hash表模板,,, 现在才会hash是不是太弱了,,, #include<cmath ...

  6. hdu4725最短路变形 添加点

    The Shortest Path in Nya Graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  7. 【LintCode】转换字符串到整数

    问题描述: 实现atoi这个函数,将一个字符串转换为整数.如果没有合法的整数,返回0.如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-21 ...

  8. Java多线程与并发库高级应用-传统线程互斥技术

     线程安全问题: 多个线程操作同一份数据的时候,有可能会出现线程安全问题.可以用银行转账来解释. 模拟线程安全问题 /** * 启动两个线程分别打印两个名字,名字按照字符一个一个打印 * * @aut ...

  9. 【BZOJ-4423】Bytehattan 并查集 + 平面图转对偶图

    4423: [AMPPZ2013]Bytehattan Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 144  Solved: 103[Submit][ ...

  10. C语言之socket获取网页源码

    写爬虫也许你用的是python,类似urlopen(url).read()即可获得普通的网页的源码,或者用的java的网络库加上流操作,或者其他高级语言.但你有没有想过使用C语言来实现呢?我曾经以为用 ...