什么是-moz-和-webkit-?
以 -webkit-、-moz-、-ms- 或 -o- 开头的 CSS 属性称为供应商前缀。
为什么不同的浏览器会为相同的效果添加不同的前缀?
QuirksMode 的 Peter-Paul Koch 对供应商前缀进行了很好的解释:
最初,供应商前缀的目的是允许浏览器制造商
开始支持实验性 CSS 声明。
假设一个 W3C 工作组正在讨论一个网格声明(其中,
顺便说一句,这不是一个坏主意)。让我们进一步说
有些人创建规范草案,但其他人不同意
一些细节。我们知道,这个过程可能需要很长时间。
让我们进一步说,作为一个实验,微软决定
实施建议的网格。目前,微软无法
确保规格不会改变。因此,改为
将网格添加到其 CSS 中,它添加了-ms-grid。
供应商前缀的意思是“这是微软的解释
正在进行的提案。”因此,如果网格的最终定义是
不同的是,微软可以在不中断的情况下添加新的 CSS 属性网格
依赖于 -ms-grid 的页面。
2016 年最新情况
这篇文章已经发布了 3 年,重要的是要提一下,现在大多数供应商都明白这些前缀只是创建了不必要的重复代码,并且需要指定三个不同的 CSS 规则的情况在所有浏览器中获得一种效果是不需要的。
正如this 词汇表中提到的,关于 Mozilla 对Vendor Prefix 的看法May 3, 2016,
浏览器供应商现在正试图摆脱供应商前缀以进行实验
特征。他们注意到 Web 开发人员正在使用它们
生产网站,污染全球空间并使其更加
弱者很难表现出色。
例如,就在几年前,要在一个盒子上设置一个圆角,您必须这样写:
-moz-border-radius: 10px 5px;
-webkit-border-top-left-radius: 10px;
-webkit-border-top-right-radius: 5px;
-webkit-border-bottom-right-radius: 10px;
-webkit-border-bottom-left-radius: 5px;
border-radius: 10px 5px;
但是现在浏览器已经完全支持这个功能,你真的只需要标准化版本:
border-radius: 10px 5px;
为所有浏览器找到正确的规则
由于仍然没有适用于所有浏览器的通用 CSS 规则的标准,您可以使用 caniuse.com 等工具来检查所有主流浏览器对规则的支持。
您也可以使用pleeease.iamvdo.me/play/。 Pleeease 是一个 Node.js 应用程序,可以轻松处理您的 CSS。它简化了预处理器的使用,并将它们与最好的后处理器相结合。它有助于创建干净的样式表、支持旧版浏览器并提供更好的可维护性。
输入:
a {
column-count: 3;
column-gap: 10px;
column-fill: auto;
}
输出:
a {
-webkit-column-count: 3;
-moz-column-count: 3;
column-count: 3;
-webkit-column-gap: 10px;
-moz-column-gap: 10px;
column-gap: 10px;
-webkit-column-fill: auto;
-moz-column-fill: auto;
column-fill: auto;
}