CSS前缀是过去时代的遗物。
开发者曾手动输入像这样的代码:
1 | .round { |
这种繁琐的体验被流行的构建工具Autoprefixer
自动化解决了。
作为标准化过程的一部分,浏览器需要测试不稳定的新功能并收集开发者反馈。如今,开发者可以通过在其网络浏览器设置中启用实验性功能标志,或者使用Chrome Canary
、Firefox Nightly
或Safari Technology Preview
等浏览器来尝试尚未完全标准化的功能。在产线上没有人使用这些功能,因为它们对你的用户没有作用。在早期阶段,供应商前缀被用作浏览器尝试实验性功能的一种方式。开发者开始在面向用户的生产网站上使用这些前缀,浏览器团队后来意识到它们是个坏主意。
大约在2016年,浏览器停止使用供应商前缀来支持新的CSS
属性,并开始消除许多旧的CSS属性之前需要的前缀。这是一个渐进而缓慢的过程,浏览器逐个取消前缀的CSS属性。
在2013年,Autoprefixer
发布时,有53个CSS
功能需要前缀。现在情况如何?
哪些CSS属性仍然需要前缀?
仍然需要前缀的CSS属性有:
- backdrop-filter
- user-select
- initial-letter
- text-decoration(有时)
- text-stroke
- text-fill-color
- line-clamp
- background-clip: text(临时)
- mask(临时)
在Safari
中,backdrop-filter
、user-select
和initial-letter
仍然需要在前面加上-webkit-
前缀。
Safari
支持text-decoration-color
、text-decoration-line
和text-decoration-style
,而不需要前缀。text-decoration
属性旨在作为这三个属性的简写。但是在Safari
中,text-decoration
只能设置text-decoration-line
。text-decoration: underline;
有效,但text-decoration: underline orange wavy;
则无效。当设置所有三个属性时,-webkit-text-decoration
可以正确工作。
text-stroke
和text-fill-color
从未标准化,但-webkit-text-stroke
和-webkit-text-fill-color
在所有浏览器中都有效。
同样,line-clamp
仍然没有被标准化。目前在任何浏览器中都没有实现line-clamp
属性,只有-webkit-line-clamp
,它只能与另外两个有前缀的非标准属性一起使用:
1 | .clamp { |
box-orient
或display: box
永远不会有非前缀的标准化版本。Chrome
似乎正在实现一个改进的非前缀line-clamp
,它不依赖于设置任何其他陈旧的奇特属性。
background-clip: text
和mask
在Samsung Internet
中仍然需要前缀,但该浏览器将在即将推出的版本中与Chromium
保持同步。`