- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
为了覆盖最广泛的浏览器和版本,为这个 CSS 添加前缀的正确方法是什么?
版本 1:
-webkit-transition: -webkit-transform .3s ease-in-out;
-moz-transition: -moz-transform .3s ease-in-out;
-ms-transition: -ms-transform .3s ease-in-out;
-o-transition: -o-transform .3s ease-in-out;
transition: transform .3s ease-in-out;
-webkit-transform: rotateX(-30deg);
-moz-transform: rotateX(-30deg);
-ms-transform: rotateX(-30deg);
-o-transform: rotateX(-30deg);
transform: rotateX(-30deg);
或版本 2:
-webkit-transition: transform .3s ease-in-out;
-moz-transition: transform .3s ease-in-out;
-ms-transition: transform .3s ease-in-out;
-o-transition: transform .3s ease-in-out;
transition transform .3s ease-in-out;
-webkit-transform: rotateX(-30deg);
-moz-transform: rotateX(-30deg);
-ms-transform: rotateX(-30deg);
-o-transform: rotateX(-30deg);
transform: rotateX(-30deg);
在我看来,当在过渡属性上使用供应商前缀时,我还应该以我想要过渡的供应商前缀属性为目标。
我真的找不到任何结束。
最佳答案
正如我在 very similar question 中提到的...
This is one of those cases where vendor prefixes for standardized features become extremely problematic, because you need to account for all the different prefixed and/or unprefixed implementations of different features in different versions of different browsers.
What a mouthful. And then you have to combine various permutations of these. What a handful.
In short, you need to figure out which versions of each browser requires a prefix for each of the individual properties, and unless you don't mind the bloat, you will need to apply the prefixes differently for individual browsers.
链接的问题指的是动画而不是过渡,这会导致明显不同的符号,但是这两个功能都经历了类似的取消前缀过程 AFAIK。话虽这么说,这里是来自 caniuse.com 的 2D transforms 的兼容性表。和 transitions .
换句话说,仅仅因为一个功能在一个浏览器的一个版本中有前缀并不意味着另一个功能在同一浏览器的同一版本中也一定有前缀。例如,Chrome 无前缀转换在无前缀转换 (36) 之前至少转换了十个主要版本 (26),而 Safari 仍然需要转换前缀。因此,您肯定必须拥有此声明:
transition: -webkit-transform .3s ease-in-out;
如果你绝对需要,你将不得不用以下内容覆盖更旧的版本:
-webkit-transition: -webkit-transform .3s ease-in-out;
其他浏览器奇迹般地能够同时取消转换和转换(以及动画)的前缀,这使事情变得容易得多:
-ms-transition
仅供 IE10 的预发布版本使用,该版本早已过期。没有其他版本的 IE 使用带前缀的转换,因此您应该删除该特定的转换前缀。
-ms-transform
仅供IE9使用; IE10 及更高版本附带无前缀转换。但是出于优雅降级的目的,您可能希望保留您的 -ms-transform: rotateX(-30deg);
声明——请记住它不能被转换,因为 IE9 不支持 CSS 转换或动画。
-moz-transition
和 -moz-transform
被 Firefox 使用到并包括 15,然后在 16 中取消了前缀。
-o-transition
和 -o-transform
被 Opera 使用到 12.00,包括 12.00,然后在 12.10 中取消前缀,然后重新前缀为 -webkit-
在其移动到 Blink 的后续版本中。
总而言之,根据 caniuse.com 提供的信息(我相信大部分信息都是最新且准确的),这里是您需要的所有前缀:
-webkit-transition: -webkit-transform .3s ease-in-out; /* Chrome < 26, Safari < 7 */
-moz-transition: -moz-transform .3s ease-in-out; /* Firefox < 16 */
-o-transition: -o-transform .3s ease-in-out; /* Opera < 12.10 */
transition: -webkit-transform .3s ease-in-out; /* Chrome 26-35, Safari, Opera 15-23 */
transition: transform .3s ease-in-out; /* IE10+, Firefox 16+, Chrome 36+, Opera 12.10 */
-webkit-transform: rotateX(-30deg);
-moz-transform: rotateX(-30deg);
-ms-transform: rotateX(-30deg); /* Only for graceful degradation in IE9, cannot be transitioned */
-o-transform: rotateX(-30deg);
transform: rotateX(-30deg);
在撰写本文时,您至少需要支持每个浏览器的最新版本:
transition: -webkit-transform .3s ease-in-out; /* Chrome 26-35, Safari, Opera 15-23 */
transition: transform .3s ease-in-out; /* IE10+, Firefox 16+, Chrome 36+, Opera 12.10 */
-webkit-transform: rotateX(-30deg);
transform: rotateX(-30deg);
如评论中所述,您可以使用 Autoprefixer 等工具根据您需要的浏览器支持级别为您自动执行此操作。然而,对于那些喜欢手动编写 CSS 的人,或者对于那些只是想知道哪些浏览器到底需要哪些前缀的人来说,就是这样。
最后一点:注意到上面示例中的两个未加前缀的 transition
声明了吗?现在,您可能认为将它们组合成一个单独的声明就足够简单了:
transition: -webkit-transform .3s ease-in-out, transform .3s ease-in-out;
但是,不幸的是,Chrome will erroneously completely ignore this declaration ,而其他浏览器会很好地应用它。
关于css - 什么是 CSS 过渡和转换前缀的正确组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29806730/
我有一个 mysql 表,其中包含一些随机数字组合。为简单起见,以下表为例: index|n1|n2|n3 1 1 2 3 2 4 10 32 3 3 10 4 4
我有以下代码: SELECT sdd.sd_doc_classification, sdd.sd_title, sdd.sd_desc, sdr.sd_upl
如果我有两个要合并的数据框 Date RollingSTD 01/06/2012 0.16 01/07/2012 0.18 01/08/2012 0.17 01/09/20
我知道可以使用 lein ring war 创建一个 war 文件,但它似乎仍然包含码头依赖项。当我构建 war (并在 tomcat 上部署)时,有没有办法排除码头依赖项? 如果我根本不能做这件事,
维基百科关于封装的文章指出: “封装还通过防止用户将组件的内部数据设置为无效或不一致的状态来保护组件的完整性” 我在一个论坛上开始讨论封装,在那里我问你是否应该始终在 setter 和/或 gette
对于我使用的组合框内的复选框: AOEDComboAssociationName = new Ext.form.ComboBox({ id: 'AOEDComboAssociationName',
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: How do I combine LINQ expressions into one? public boo
如何在 rust 中找到排列或组合的数量? 例如C(10,6) = 210 我在标准库中找不到这个函数,也找不到那里的阶乘运算符(这就足够了)。 最佳答案 以@vallentin 的回答为基础,可以进
我有一个复杂的泛型类型用例,已在下面进行了简化 trait A class AB extends A{ val v = 10 } trait X[T<:A]{ def request: T }
如何使用 Hibernate 限制来实现此目的? (((A='X') and (B in('X',Y))) or ((A='Y') and (B='Z'))) 最佳答案 思考有效 Criteria c
我一定会在我的一个项目中使用谷歌图表。我需要的是,显示一个条形图,并且在条形图中,与每个条形相交的线代表另一个值。如果您查看下面的 jsfiddle,您会发现折线图仅与中间的条形图相交,并继续向其他条
只是一个简单的问题,我也很想得到答案,因为我不能百分百理解 Javascript 示例:假设您提示用户输入名称。够简单吧?但是你有一个数组,上面写着一些名字(其中之一就是),基本上就是我到目前为止所说
我试图通过 Haskell 理解函数式编程,但在处理函数组合时遇到了很多麻烦。 其实我有这两个功能: add:: Integer -> Integer -> Integer add x y = x
我正在寻找一种在 Realm 查询中组合 AND 和 OR 的方法。 这是我的课: class Event extends RealmObject { String id; String
例如,我有一个包含 5 个元素的哈希: my_hash = {a: 'qwe', b: 'zcx', c: 'dss', d: 'ccc', e: 'www' } 我的目标是每次循环哈希时都返回,但没
我是Combine 的新手,我想得到一个看似简单的东西。假设我有一个整数集合,例如: let myCollection = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 我想以例如 0
关于“优先组合而不是继承”的问题,我的老师是这样说的: 组合:现有类成为新类的组件 转发:新类中的每个实例方法,在现有类的包含实例上调用相应的方法并返回结果 包装器:新类封装了现有的 这三个概念我不是
我正在尝试将单个整数从 ASCII 值转换为 0 和 1。相关代码如下所示: int num1 = bin.charAt(0); int num2 = bin.charAt(1);
这个问题已经有答案了: What is a NullPointerException, and how do I fix it? (12 个回答) 已关闭 7 年前。 我经常看到“嵌套”类中的非静态变
我尝试合并两个数据集(DataFrame),如下所示: D1 = pd.DataFrame({'Village':['Ampil','Ampil','Ampil','Bachey','Bachey',
我是一名优秀的程序员,十分优秀!