我正在添加一个新的正确答案。因为它确实是的事,尤其是对于flexbox。你指出的最后两个例子并不是最新到今天所需的最终语法,并且需要被丢弃。
就像尼克拉斯说的那样,你总是希望官方的W3C标准前置属性最后。理由是CSS会一个接一个地解析所有的规则。相同(或类似)属性的最后一条规则总是优先于先前规则。由于三种不同类型的规则和规格,flexbox的情况是特殊的。
首先,忽略给定的MDN和波旁规则集,它们不是最新的。
来自MDN示例的规则display: -moz-flex;
是可悲的错误。 Firefox确实(并且不)正式支持它。 Firefox官方仅支持-moz-box
或flex
。我将编辑修改-moz-box
替代文章。
box
参考波旁不再准确。你不需要它。一些演示可能包含它的原因是,官方的“flexbox”标准财产在当时(2009年)成为box
。 flex
在这一点上不存在。语法是flex
在2013年晚些时候作为最终推荐。
而在IE10之间实现了-ms-flexbox
中间2011-2012 draft spec。
所以对于flex规则集来说,首先声明较老的属性是非常重要的,在正确给定的CSS技巧顺序中。你可以找到规则集here, with additional explanations on full browser support。
这两个规则可以交换任何一种方式没有太大的影响是-webkit-box
和-moz-box
。
请注意,Firefox和Edge必须别名较旧的属性或webkit前缀规则,以尝试解决各种bugs occuring due to inaccurate order和/或缺少Web上的属性。
因此从这个意义上说,使用完整的current flexbox rule set非常重要。
如果官方版本的最后版本很重要,我还会认为以供应商为前缀的版本按照时间顺序排列是非常重要的。例如,只要'-webkit-box'在'-webkit-flex'之前,并且(独立)'-moz-box'在'-moz-flex'之前。那是对的吗? –
正如您的问题中发布的示例所示,供应商前缀的顺序并不重要。让自己变得容易,使用这个工具:[** autoprefixer **](https://autoprefixer.github.io/)。 –
我知道这个工具,但我认为你误解了我。如果你的浏览器理解了'-prefix-box'和'-prefix-flexbox',而不是'-prefix-flex'或'flex',如果你有'--prefix-flex',前缀-Flexbox'在'-prefix-box'之前,你会得到'-prefix-box'行为(或者我假设)。因此,订单(独立于其他供应商)非常重要。 –