我想要一个名为“shadow”的div下方的阴影:
#shadow { box-shadow: 1px 1px 1px #000 };
完成?
完全没有。它只在一个浏览器中工作。猜猜哪一个。
对于FF / Chrome,我必须添加不太直观的内容:
-moz-box-shadow: 1px 1px 1px #000;
-webkit-box-shadow: 1px 1px 1px #000;
现在一切都好。此方案适用于许多CSS属性。为什么呢?
幸运的是,没有-webkit-border,moz-font或-ie-backgroundcolor。
PS。是的,没有关于IE的单词。将这个称为浏览器就像将轮椅与摩德纳汽车比较一样。
PS 2.为什么我的帖子下方的Google Chrome标签旁边有徽标?或者为什么没有Opera&的标识? FF?
答案 0 :(得分:3)
这是因为浏览器不希望彼此冲突。除此之外,目前还没有真正的盒子阴影“规范”,因此几个浏览器都有自己的实现。
这种方法允许任何 供应商特定的扩展共存 与任何未来(或当前)CSS 属性没有引起冲突 因为,根据W3C 规范,CSS属性名称 永远不会以破折号或者破折号开头 下划线:
答案 1 :(得分:2)
这是浏览器在CSS Spec完全批准之前发布功能的一种方式。
例如,看看CSS3渐变。 -moz- vs -webkit-完全不同。
background-image: -webkit-gradient(
linear,
left bottom,
left top,
color-stop(0.15, rgb(145,4,88)),
color-stop(0.58, rgb(174,30,115)),
color-stop(0.79, rgb(209,57,150))
);
background-image: -moz-linear-gradient(
center bottom,
rgb(145,4,88) 15%,
rgb(174,30,115) 58%,
rgb(209,57,150) 79%
);
这可能是有意义的:http://www.alistapart.com/articles/prefix-or-posthack/
所以下次你发现自己 抱怨宣布同样的事情 东西四次,每次一次 浏览器,记住痛苦是 临时。这有点像 疫苗 - 射击现在疼,真的,但是 相比之下真的没那么糟糕 对它预防的疾病。并在 这种情况下,你正在接种疫苗 针对多年的坏情况 解析器黑客和浏览器嗅探。 我们经历了长期的瘟疫 曾经。如果使用前缀,将使用前缀 适当地,抵御另一次爆发 很长一段时间。
注意:最好包括不带前缀的版本,以便在完全采用该属性时继续使用网站功能。
答案 2 :(得分:0)
浏览器的功能超出了他们应遵循的标准。在标准发布之前,它们允许您访问过渡期间的能力,然后它们遵循已发布的标准,并提供与时髦外观“webkit ...”格式的后向兼容性。
答案 3 :(得分:0)
基于未完成规范实现的属性具有供应商前缀。同样的事情,如果给定的供应商认为他们的实现没有完成,即使规范是。
答案 4 :(得分:0)
正如其他人已经回答的那样,这是因为他们正在实施一项尚未完成规范的功能,或者其实现尚未完成的功能。
这是故意行为; CSS规范指出这是他们在这种情况下应该做的事情。这条规则的原因如下:
-moz-border-radius
的早期版本与-webkit-border-radius
的工作方式完全不同;它们之间存在显着的语法差异,因此如果它们都只是border-radius
,那么您将无法同时支持它们。