为什么浏览器要为 CSS 属性创建供应商前缀?

发布于 2024-12-15 07:07:45 字数 294 浏览 0 评论 0原文

也许这是一个显而易见的答案,但是

到底为什么浏览器会决定为border-radius等创建自己的供应商前缀?

我的意思是:为什么我必须输入:

-moz-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius: 10px;

是因为每个平台都认为“我们很酷,我们会想出一种更好的圆角方法?”一行输入三行似乎完全且莫名其妙地多余。

Maybe it's an obvious answer, but

Why on earth would browsers decide to create their own vendor prefixes for border-radius and the like?

I mean: Why do I have to type:

-moz-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius: 10px;

Is it because each platform thought "We're cool, we'll come up with a better way to do rounded corners?" It seems totally and inexplicably redundant to type three lines for one.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

痴情 2024-12-22 07:07:45

这是因为这些功能是在规范达到最终发布阶段之前由供应商实现的。

供应商前缀确保不与不断变化的功能等发生冲突。

最初,供应商前缀的目的是允许浏览器制造商
开始支持实验性 CSS 声明。

假设 W3C 工作组正在讨论网格声明(其中,
顺便说一句,这并不是一个坏主意)。我们还要再说一下
有些人制定了规范草案,但其他人不同意
一些细节。众所周知,这个过程可能需要很长时间。

我们还可以说,微软作为一项实验决定
实施拟议的网格。此时此刻,微软无法
确保规格不会改变。因此,相反
在将网格添加到其 CSS 中时,它添加了 -ms-grid。

供应商前缀有点像“这是微软的解释”
一个正在进行的提案。”因此,如果网格的最终定义是
不同的是,微软可以在不破坏的情况下添加新的 CSS 属性网格
依赖于 -ms-grid 的页面

的页面。

It's because the features were implemented by vendors before the specification reached its final release stage.

The vendor prefixes ensure that there are no clashes with changing functionality etc.

Originally, the point of vendor prefixes was to allow browser makers
to start supporting experimental CSS declarations.

Let’s say a W3C working group is discussing a grid declaration (which,
incidentally, wouldn’t be such a bad idea). Let’s furthermore say that
some people create a draft specification, but others disagree with
some of the details. As we know, this process may take ages.

Let’s furthermore say that Microsoft as an experiment decides to
implement the proposed grid. At this point in time, Microsoft cannot
be certain that the specification will not change. Therefore, instead
of adding grid to its CSS, it adds -ms-grid.

The vendor prefix kind of says “this is the Microsoft interpretation
of an ongoing proposal.” Thus, if the final definition of grid is
different, Microsoft can add a new CSS property grid without breaking
pages that depend on -ms-grid

Source.

池木 2024-12-22 07:07:45

由于这篇文章很旧,值得一提的是,现在大多数供应商确实明白这些前缀只是创建不必要的重复代码,以及您需要指定 3 种不同的 CSS 规则才能在所有情况下获得一种效果的情况浏览器是一个不需要的浏览器。

正如 本词汇表中提到的,Mozilla 5 月 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;

As this post old, it's important to mention that now most vendors do understand that these prefix are just creating unnecessary duplicate code and the situation where you need to specify 3 different CSS rules to get one effect working in all browser is an unwanted one.

As mentioned in this glossary about Mozilla's view on vendor prefixes on May 3, 2016,

Browser vendors are now trying to get rid of vendor prefix for experimental
features. They noticed that Web developers were using them on
production Web sites, polluting the global space, and making it more
difficult for underdogs to perform well.

For example, just a few years ago, to set a rounded corner on a box you had to write:

-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;

But now that browsers have come to fully support this feature, you really only need the standardized version:

border-radius: 10px 5px;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文