我尝试transition在Firefox 15上使用,即使它在其他版本的Firefox和其他浏览器(例如Chrome和Safari)上也无法使用。
transition
当我使用Firefox的检查器查看属性时,将transition被删除并显示错误“无效的属性值”。MDN和caniuse表示Firefox 4及更高版本支持该功能!
#mydiv { transition: width 1s; /* Did I do this wrong? */ background: #f00; width: 100px; height: 100px; } #mydiv:hover { width: 200px }
怎么会有时性能喜欢transition和animation一些浏览器的工作和在其他无效?
animation
免责声明 :这是所有问题的规范重复,可通过添加供应商前缀来完全解决。堆栈溢出的问题应该 不会 是这个广泛除非元,随后创建了一个规范的答案讨论这样一个为。
虽然它并非总是如此,最常见的原因,就像一个属性的一个transition或animation工作在某些浏览器,而不是其他人是因为 供应商前缀 。
在引入Firefox第4版时,CSS过渡模块规范是“工作草案”。在规范最终定稿之前(实际上,这是达到候选推荐标准的时间),浏览器供应 商 在属性,值和@ -rules中添加了 供应商前缀 ,以防止在规范更改时出现兼容性问题。
供应商前缀正是它们的名称所描述的- 属性或值的特定于供应商的(供应商是指开发浏览器的公司)前缀。它们通常以每种浏览器的特定方式实现,因为属性或值仍处于“候选推荐”阶段之前的许多实验阶段之一,在“候选推荐阶段”中,它们被认为已准备好实现。
最常见的是-moz-(Mozilla Firefox),-webkit-(Chrome,Safari等)和-ms-(MicrosoftInternet Explorer),但还有更多。
-moz-
-webkit-
-ms-
这完全取决于您要提供的浏览器,使用的属性和值以及开发网站的时间。有些网站试图保留最新列表,但它们并不总是准确或保持最新状态。
以下是一些最常见的前缀属性和值。如果您的项目不支持该属性右侧的注释中提到的浏览器,则无需将其包含在CSS中。
无前缀属性有时带有前缀等价物-webkit-transition。
-webkit-transition
为了获得完整的浏览器支持,必须执行以下操作:
.foo { -webkit-transition: <transition shorthand value>; /* Safari 3.1-6, Chrome 1-25, Old Android browser, Old Mobile Safari, Blackberry browser */ -moz-transition: <transition shorthand value>; /* Firefox 4-15 */ -o-transition: <transition shorthand value>; /* Old opera */ transition: <transition shorthand value>; /* Modern browsers */ }
请注意,-ms-存在的前缀transition,但是仅由不再起作用的IE10的预发布版本实现,因此不再需要它。它在IE10 RTM和更高版本中没有前缀实现。
.foo { -webkit-transform: <transform-list>; /* Chrome 21-35, Safari, iOS Safari, Opera 22, many mobile browsers */ -ms-transform: <transform-list>; /* IE9 */ transform: <transform-list>; }
动画需要有前缀属性 和 前缀,像这样相应的关键帧:
.foo { -webkit-animation: bar; /* Safari 4+ */ -moz-animation: bar; /* Fx 5+ */ -o-animation: bar; /* Opera 12+ */ animation: bar; /* IE 10+, Fx 16+ */ } @-webkit-keyframes bar { /* Keyframes syntax */ } @-moz-keyframes bar { /* Keyframes syntax */ } @-o-keyframes bar { /* Keyframes syntax */ } @keyframes bar { /* Keyframes syntax */ }
值也可以加上前缀,例如flexbox。注:为了获得最大的浏览器兼容性,具体Flexbox的-属性,如ordinal-group,flex-flow,flex-direction,order,box-orient,等需要在某些浏览器作为前缀 ,除了 以下几点:
ordinal-group
flex-flow
flex-direction
order
box-orient
.foo { display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */ display: -moz-box; /* OLD - Firefox 19- (buggy but mostly works) */ display: -ms-flexbox; /* TWEENER - IE 10 */ display: -webkit-flex; /* NEW - Chrome */ display: flex; /* NEW, Spec - Opera 12.1, Firefox 20+ */ -webkit-box-flex: <flex shorthand value>; -moz-box-flex: <flex shorthand value>; -webkit-flex: <flex shorthand value>; -ms-flex: <flex shorthand value>; flex: <flex shorthand value>; }
.foo { width: -webkit-calc(<mathematical expression>); /* Chrome 21, Safari 6, Blackberry browser */ width: -moz-calc(<mathematical expression>); /* Firefox <16 */ width: calc(<mathematical expression>); /* Modern browsers */ }
有关更多信息,请参见CSS技巧上的CSS渐变。
.foo { background-color: <color>; /* Fallback (could use .jpg/.png alternatively) */ background-image: url(bar.svg); /* SVG fallback for IE 9 (could be data URI, or could use filter) */ background-image: -webkit-gradient(linear, left top, right top, from(<color-stop>), to(<color-stop>)); /* Safari 4, Chrome 1-9, iOS 3.2-4.3, Android 2.1-3.0 */ background-image: -webkit-linear-gradient(left, <color-stop>, <color-stop>); /* Safari 5.1, iOS 5.0-6.1, Chrome 10-25, Android 4.0-4.3 */ background-image: -moz-linear-gradient(left, <color-stop>, <color-stop>); /* Firefox 3.6 - 15 */ background-image: -o-linear-gradient(left, <color-stop>, <color-stop>); /* Opera 11.1 - 12 */ background-image: linear-gradient(to right, <color-stop>, <color-stop>); /* Opera 15+, Chrome 25+, IE 10+, Firefox 16+, Safari 6.1+, iOS 7+, Android 4.4+ */ }
注意,left和to right代表同一个方向,左到右的,因此left与to left点 相反 的方式。
left
to right
to left
.foo { -webkit-border-radius: <length | percentage>; /* or iOS 3.2 */ -moz-border-radius: <length | percentage>; /* Firefox 3.6 and lower */ border-radius: <length | percentage>; }
.foo { -webkit-box-shadow: <box-shadow shorthand value>; /* iOS 4.3 and Safari 5.0 */ -moz-box-shadow: <box-shadow shorthand value>; /* Firefox 3.6 and lower */ box-shadow: <box-shadow shorthand value>; }
要在JavaScript中访问带前缀的属性和事件,请使用与CSS前缀等效的camelCase。同样对于事件侦听器foo.addEventListener('webkitAnimationIteration',bar )(foo也是DOM对象document.getElementsById('foo'))也是如此。
foo.addEventListener('webkitAnimationIteration',bar )
foo
document.getElementsById('foo')
foo.style.webkitAnimation = '<animation shorthand value>'; foo.style.mozAnimation = '<animation shorthand value>'; foo.style.oAnimation = '<animation shorthand value>';