|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
那么什么是Div+CSS标准?Div+CSS的标准化设计到底有什么好处?
网页制造poluoluo文章简介:你必要晓得的CSS3动画手艺.
译自:你必要晓得的CSS3动画手艺
译自:WhatYouNeedToKnowAboutBehavioralCSS
请尊敬版权,转载须说明本站链接!
译序:本文译自Smashingmagazine,可是原文报告的内容有些浅,也不是很完全,前端察看在翻译的条件下,增添了更多的更体系的内容。若有不敷的地方,接待斧正增补。
跟着收集的开展,扫瞄用具有更强的衬着更初级代码的才能,我们正慢慢完成超过一切平台和扫瞄器的方针。我们不仅能够要消费更少的工夫来确保我们的盒模子在IE6中看起来一般,并且构成了勉励立异、制止hack、重前端剧本的气氛。
收集是一个十分好的情况,也是一个有丰厚的常识来分享的合作社区。我们想要有圆角,我们就完成了它;我们想要多背景图片,我们完成了它;我们想要边框图片,我们也让它完成了。以是需求历来不是成绩,不然,我们大概还都仍旧在利用table来结构页面并且利用过量的代码呢。我们都晓得,收集无所事事。
为收集而生
CSS3的属性好比border-radius、box-shadow和text-shadow在webkit(Safari、Chrome等)和Gecko(Firefox)等先辈的扫瞄器中的利用入手下手呈现增加的势头。它们(这些CSS属性)已为用户创立更轻量的页面和更丰厚的体验,并且它们能够文雅的升级。但是,这些只是CSS3能为我们做的浩瀚事变中的一小部分。
在本文中,我们将走的更远,看一看变形(transformation)、转换(transition)和动画(animation)等更初级的CSS3手艺。我们将触及代码自己、扫瞄器撑持和一些能够准确地展现这些新属性是怎样即提拔你的计划又加强全体用户体验的例子。
CSS变形(Transformation)
CSStransformation是W3C的一个草案。但当我第一次坐上去浏览它的全体特征以懂得一些器材的时分,它并没有让我感应开窍。你能够设想的到,这个文档是用手艺术语的撰写的,并且它更存眷变形的图形(好比画图)元素和矩阵。年夜一进修微积分以后就没有碰过矩阵了,我必需为本章节做良多好的旧扫瞄器测试和推测和查验。
在看完我能找到的每个教程和大批的扫瞄器测试以后,我总结出一些人人都能从中获益的有效的关于CSS变形的信息。
transform
transform属性完成了一些可用SVG完成的一样的功效。它可用于内联(inline)元素和块级(block)元素。它同意我们扭转、缩放和挪动元素——只必要一行CSS代码。
一些前卫计划的最年夜诟病就是笔墨不成选(必需要利用切图的办法完成)。当你纯熟利用transform属性来把持笔墨的时分,这就不再是成绩了,由于这是个纯CSS办法,以是元素内的笔墨会坚持可选。这是CSS相对利用图片(或背景图片)的一个伟大上风。
一些风趣而有效的变形功效:
- rotate
Rotate(扭转)同意你经由过程传送一个度数值来动弹一个工具。
- scale
Scale是一个缩放功效,可让任一元素变的更年夜。它利用负数和正数和小数作为参数。
- translate
Translate就是基于X和Y坐标从头定位元素
- skew
望文生义,skew就是要将工具倾斜,参数是度数
- matrix
transform撑持矩阵变更,就是基于X和Y坐标从头定位元素
让我们更深切的懂得每个功效吧。
Rotate
transform属性有良多用法,个中一个就是translate(扭转)。translate就是基于角度动弹一个工具并可用于内联元素和块级元素,它能够完成很酷的效果。
- #nav{-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-o-transform:rotate(-90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);}
复制代码 请注重在IE8中(非尺度形式)它必要你写成“-ms-filter”而不是“filter”。
扫瞄器撑持
扫瞄器对translate的撑持使人惊异的普遍。在下面的CSS片断中,我们间接加上-webkit-和-moz-前缀然后将#nav元素扭转-90度。
相称复杂吧?独一的成绩是关于一个相称主要的计划元素,假如IE不撑持,良多计划师就会不宁愿利用它。
侥幸的是,IE有这方面的滤镜:图形扭转滤镜。它能够有4个扭转值:0,1,2,和3。你将不会取得和Webkit和Gecko一样的严密把持,可是最少在必定水平上坚持一致(乃至IE6)。固然这个滤镜只撑持4个值,显得有些鸡肋,可是关于IE来讲,聊胜于无吧。
别的,十分值得一提的是,Opera在头几天公布了Opera10.50pre版本,宣称撑持CSS3的transition和transform。只是仍是必要利用公有属性,也就是要利用前缀-o-
scale
scale其实不像你设想的那样事情:复杂的减少和缩小一个元素。缩放功效同时接纳宽和高两个值,这些值能够是负数、正数和小数。
负数值缩小一个元素,正如你希冀的那样,基于指定的宽度和高度。
正数值其实不会减少元素,而是翻转它(好比,笔墨被反转)然后响应的缩放它。但是,你可使用小于1的小数(比方.5)来压缩大概减少一个元素。
- 1234567891011121314151617
复制代码- #nav{/*nav元素的宽和高城市被缩小双倍*/-webkit-transform:scale(2);-moz-transform:scale(2);-o-transform:scale(2);}#nav{/*nav元素的宽会是双倍,而高度坚持稳定*/-webkit-transform:scale(2,1);-moz-transform:scale(2,1);-o-transform:scale(2,1);}#nav{/*nav的宽度将是双倍,而且程度翻转,可是高度坚持稳定*/-webkit-transform:scale(-2,1);-moz-transform:scale(-2,1);-o-transform:scale(-2,1);}
复制代码 扫瞄器撑持
scale属性今朝只要Firefox,Safari/Chrome和opera10.50撑持,到今朝为止没有一个IE版本撑持。缩放一个工具是相称成心义的计划选择。它能够经由过程渐进加强来利用:hover,这能够在你的导航上增加一个小小的兴趣。- #navlia:hover{/*这可让你的导航链接在鼠标经由的时分稍微的缩小*/-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-o-transform:scale(1.1);}
复制代码 translate
这个称号“translate(转化)”有点简单曲解。它现实上是一种利用X和Y坐标值定位元素的办法。
- #nav{/*这会将nav元素向左挪动10像素并向下挪动20像素*/-moz-transform:translate(10px,20px);-webkit-transform:translate(10px,20px);-o-transform:translate(10px,20px);}
复制代码 扫瞄器撑持
translate属性今朝只被Firefox,Safari/Chrome和Oprea10.5撑持,并且还要利用扫瞄器的公有前缀-moz-和-webkit-。
Skew
Skew也是一个很有效的transform功效,它能够将一个工具环绕着x和y轴依照必定的角度倾斜。这和rotate的扭转纷歧样,rotate只是扭转,而不会让元素的外形改动。skew会让一个元素的外形改动。skew有两个参数,分离代表x和y轴的倾斜度数。- #nav{/*这会将nav元素向左挪动10像素并向下挪动20像素*/-moz-transform:skew(30deg,-10deg);-webkit-transform:skew(30deg,-10deg);-o-transform:skew(30deg,-10deg);}
复制代码 扫瞄器撑持
Skew属性今朝只被Firefox,Safari/Chrome和Oprea10.5撑持,并且还要利用扫瞄器的公有前缀-moz-和-webkit-。
Matrix
没错,Matrix就是矩阵,矩阵是初等数学中十分基本的一个东东,而在CSS3中的确一个相称初级的功效,CSS3引进matrix函数,能够十分天真的完成上述的各类效果。它有6个参数(a,b,c,d,e,f),它现实上是一个3*3矩阵,经由该矩阵将旧的参数转换成新值:
|abe|
|cdf|
|001|
假如你有乐趣深切研讨,能够看一下这里http://www.w3.org/TR/SVG/coords.html#TransformMatrixDefined,这是SVG的一个文档,可是关于matrix变更的道理是通用的。
让我们来看一个例子吧:- #nav{-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-o-transform:rotate(-90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);}1
复制代码 扫瞄器撑持
可喜的是,IE撑持matrix滤镜,固然它不撑持年夜部分CSS3变形功效,可是利用它的这个滤镜,基础也能够完成不异的效果,不外,你要先弄分明矩阵运算再说。webkit和Firefox(3.5+)、Opera10.5都撑持该功效。
链式变形
变形经常是独自的,可是假如你想同时用到多种变形,代码也是能够疾速整合的,出格是利用公有扩大。侥幸的是,我们有一些内置的缩写:- #nav{-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-o-transform:rotate(-90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);}2
复制代码- #nav{-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-o-transform:rotate(-90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);}3
复制代码 这些变形能够被链到一同,从而让你的代码更高效:- #nav{-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-o-transform:rotate(-90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);}4
复制代码- #nav{-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-o-transform:rotate(-90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);}5
复制代码 这些属性的真实的能力是兼并到一同。你能够挪动、扭转、缩放并把持任何内联元素和块级元素而不利用JavaScript。一旦这些属性的撑持变的加倍普遍,我们就能够创立更丰厚和更轻量的界面和使用。
transform-origin
transform-origin不是transform的一个子功效,可是和transform干系十分亲切。它能够用来指定transform的出发点,好比,rotate变形的默许出发点是个中间,你能够将出发点设置在左上角,大概左下角,如许rotate变形的了局便可能年夜不不异了。
transform-origin承受两个参数,它们能够是百分比,em,px等详细的值,也能够是left,center,right,大概top,middle,bottom等形貌性参数。几个例子:- #nav{-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-o-transform:rotate(-90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);}6
复制代码- #nav{-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-o-transform:rotate(-90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);}7
复制代码 扫瞄器兼容性
该属性今朝也只要webkit、firefox和Opera10.5撑持,并且必要增加各自的公有前缀。
transition(转换)
一个触及到CSS属性的基础的转换就是界说和挪动一个元素从它的运动形态(好比,深蓝色背景)到它的hover大概激活形态(好比,浅蓝色背景)。
转换能够和变形同时利用(和激发诸如:hover或:focus事务)以创立一些动画。淡出背景致彩,滑动一个元素和让一个工具扭转都能够经由过程CSS转换完成。- #nav{-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-o-transform:rotate(-90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);}8
复制代码- #nav{-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-o-transform:rotate(-90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);}9
复制代码 转换的一些参数
- transition-property
指定转换的CSS属性称号,好比,下面的例子中,将转换使用于background-color属性。
- transition-duration
界说转换消费的工夫(从旧属性换到新属性消费的工夫)
- transition-timing-function
能够了解为过分效果。指定转换过程当中的两头值。能够用cubic-bezier指定。固然有几个经常使用的内置值:ease|linear|ease-in|ease-out|ease-in-out
- transition-delay
这个对照简单了解,就是转换提早的工夫。工夫能够为正整数、负整数和零,非零的时分必需设置单元是s(秒)大概ms(毫秒),为正数的时分,转换的举措会从该工夫点入手下手显现,之前的举措被截断。
注:参数部分为前端察看翻译时增加,原文中没有。
扫瞄器撑持
像transform属性一样酷,可是今朝只要WebKit扫瞄器撑持。Opera10.5pre版本也能够经由过程增加-o-前缀来撑持。-moz-transition已在比来的nightly-build版本的Firefox3.7中可用。你也能够增加-moz-transition到你的CSS中以完成未来的加强。乃至能够增加一个不必公有前缀的属性,以防万一。
Animation
动画是CSS3最有效的中央。你能够将我们在下面会商的一切的元素与动画属性好比animation-duration、animation-name和animation-timing-function整合以创立像Flash动画一样的效果——纯CSS。
http://www.tudou.com/v/YeTPctOy2mo- 12345678910111213141516170
复制代码- 12345678910111213141516171
复制代码 这个梦境的CSS动画代码和在线演示能够在webkit网站看到。该演示能够在任何网站看到,可是动画效果却只能在Macos(雪豹)的WebKit的nightlybuild版本可见。它看起来就像下面的视频中的一样,假如你是在用macos(雪豹版本),我以为安装一个webkit以亲眼看看这个效果是很值得的(它真的很酷)。Windows体系用户临时没法浏览这个效果。
animation的一些参数
animation的参数和translate有些像,以是假如你了解了translate的参数,这里就不难了解了。
- animation-name
动画的称号。
- animation-duration
界说动画播放一次必要的工夫。默许为0;
- animation-timing-function
界说动画播放的体例,参数设置相似transition-timing-function
- animation-delay
界说动画入手下手的工夫
- animation-iteration-count
界说轮回的次数,infinite即为无穷次。默许是1。
- -webkit-animation-direction
动画播放的偏向,两个值,默许为normal,这个时分动画的每次轮回都向前播放。另外一个值是alternate,则第偶数次向前播放,第奇数次向反偏向播放。
扫瞄器撑持
不幸的是,今朝,只要多数扫瞄器撑持CSS动画。2DCSSanimations能够在Safari4(Leopard)、Chrome3、SafariMobile、Shira和别的Webkit扫瞄器中事情。Safari4(SnowLeopard)撑持3D动画
总结
如今,JavaScript能够在CSS3完美之前填补这个差异。遗憾的是,让一切扫瞄器撑持这些很棒的属性大概必要一个很长的历程。不必守候那一天的到来,我们能够先利用一些松散的渐进加强和以来Javascript来加强我们的网站和使用。这不是件好事,最少如今看起来是。
看了比来的IE9的通告,假如IE团队增加这些属性中的一些到这个新的版本的扫瞄器中我不会感应惊奇,他们已入手下手思索整合CSS3了(border-radius)。
web的远景是光亮的,出格是由于这些相似动画的高度实行性的属性。只管良多属性对客户或初级产物事情还不成用,最少他们很风趣!我们都等候着有一天,我们能够撑持一切平台,以创建一些真的很棒的轻量级使用。
参考与资本
- ACrashCourseinAdvancedCSS3Effects
NetTuts公布的一个很酷的关于CSS3效果的视频。
- WebkitAnnouncesSupportforCSS3DTransforms
CSS3.info制造的一个利用CSS3动画的demo,今朝只撑持nightlybuild版的WebKit.
- JonathanSnookonCSSTextRotation
JonathanSnook报告行将到来的CSS3属性.
- DEVCampCSS3Tricks
一份来自DanKurtz的幻灯演示
- W3CSpecon2-DTransformations
关于2-D变更的资本.
- W3CSpecon3-DTransformations
一个关于3-D变更的资本.
- W3CSpeconCSS3Animations
CSSanimations的W3C事情草案
- SafariCSS参考
- MDC:UsingCSStransforms
- MDC:-moz-transform
关于原作者
TimWright是一名网页计划师/开辟工程师和博主。他从2004年就成为一位web尺度和易用性的倡议者。你能够在CSSKarma.com上找到他写的更多文章,大概followTimonTwitter。
</p>
使页面的字体变得更漂亮,更容易编排,使页面真正赏心悦目。 |
|