Answers:
两者均有效。这是你的选择。
我喜欢,border:0
因为它更短。我觉得这更容易阅读。您可能会发现none
更清晰。我们生活在功能强大的CSS后处理器世界中,因此我建议您使用您喜欢的任何东西,然后通过“压缩机”运行它。这里没有值得战斗的圣战。
综上所述,如果您要手写所有生产CSS,尽管注释中有抱怨,但我坚持认为,意识到带宽是没有害处的。使用border:0
将节省无限量的带宽。它本身只占很少的部分,但是如果您将每个字节都计算在内,则可以使您的网站更快。
CSS2规范在这里。这些在CSS3中进行了扩展,但与此无关。
'border'
Value: [ <border-width> || <border-style> || <'border-top-color'> ] | inherit
Initial: see individual properties
Applies to: all elements
Inherited: no
Percentages: N/A
Media: visual
Computed value: see individual properties
您可以使用宽度,样式和颜色的任意组合。
在这里, 0
设置宽度,none
样式。它们具有相同的渲染结果:未显示任何内容。
border:none
更好,但是将其用作推理是错误的。
他们是等价的效果,指向不同的快捷方式:
border: 0;
//short for..
border-width: 0;
和另一个..
border: none;
//short for...
border-style: none;
两者都可以,只需选择一个然后就可以了:)
border: 0;
有效。
正如其他人所说,两者都是有效的,而且会成功的。我不是100%确信它们是相同的。如果您正在进行某种样式层叠,那么它们在理论上可能会产生不同的结果,因为它们有效地覆盖了不同的值。
例如。如果设置为“ border:无;” 然后再使用两种不同的样式来覆盖边框的宽度和样式,那么一种将起作用,而另一种则不会。
在IE和firefox上的以下示例中,前两个测试div都没有边框。但是,第二个和第二个不同,第二个块中的第一个div是普通的,第二个块中的第二个div具有中等宽度的虚线边框。
因此,尽管它们都是有效的,但是如果它们级联很多(例如我认为的那样),则可能需要注意您的样式。
<html>
<head>
<style>
div {border: 1px solid black; margin: 1em;}
.zerotest div {border: 0;}
.nonetest div {border: none;}
div.setwidth {border-width: 3px;}
div.setstyle {border-style: dashed;}
</style>
</head>
<body>
<div class="zerotest">
<div class="setwidth">
"Border: 0" and "border-width: 3px"
</div>
<div class="setstyle">
"Border: 0" and "border-style: dashed"
</div>
</div>
<div class="nonetest">
<div class="setwidth">
"Border: none" and "border-width: 3px"
</div>
<div class="setstyle">
"Border: none" and "border-style: dashed"
</div>
</div>
</body>
</html>
border: none
代替border: 0
。
(注意:此答案已于2014-08-01更新,使其更详细,更准确,并添加了实时演示)
根据W3C CSS2.1规范(“忽略的值设置为其初始值”),以下属性是等效的:
border: hidden; border-style: hidden;
border-width: medium;
border-color: <the same as 'color' property>
border: none; border-style: none;
border-width: medium;
border-color: <the same as 'color' property>
border: 0; border-style: none;
border-width: 0;
border-color: <the same as 'color' property>
如果这些规则是应用于元素边框的最具体的规则,则由于零宽度或hidden
/ none
样式,因此不会显示边框。因此,乍看之下,这三个规则是等效的。但是,当与其他规则结合使用时,它们的行为方式会有所不同。
当使用渲染表格时border-collapse: collapse
,每个渲染的边框都在多个元素之间共享(内部边框在相邻单元格之间共享;外部边框在单元格和表格本身之间共享;但行,行组,列和列组也共享边框) )。该规范定义了一些解决边界冲突的规则:
与国界
border-style
的hidden
优先于所有其他冲突的边框。[…]具有样式的边框
none
的优先级最低。[…]如果所有样式都不是
hidden
,并且至少其中一种不是none
,则放弃较窄的边框,而采用较宽的边框。[…]如果边框样式仅在颜色上有所不同,则[…]
因此,在表上下文中,border: hidden
(或border-style: hidden
)将具有最高优先级,并且无论如何都将隐藏共享边框。
在优先级的另一端,border: none
(或border-style: none
)优先级最低,后跟零宽度边框(因为这是最窄的边框)。这意味着,一个计算值的border-style: none
和计算出的值的border-width: 0
基本上是相同的。
由于none
和0
影响不同的属性(border-style
和border-width
),因此当更具体的规则仅定义样式或宽度时,它们的行为将有所不同。有关示例,请参见克里斯的答案。
是否想在一个页面中查看所有这些情况?打开现场演示!
您可以根据Oli提供的规范简单地使用两者。
我总是用border:0 none;
。
尽管单独指定它们没有什么害处,但是如果您确实使用旧版CSS1属性调用,则某些浏览器会更快地解析CSS。
尽管border:0;
通常将默认边框样式设置为默认样式none
,但是我注意到一些浏览器会强制使用其默认边框样式,这可能会被奇怪地覆盖border:0;
。
我用:
border: 0;
'边界'
值: [<border-width> || <border-style> || <'border-top-color'>] | 继承
所以您的任何一种方法看起来都不错。
好吧,要精确了解两者之间的区别border: 0
,border: none
我们可以做一些实验。
让我们创建三个div,第一个div只能通过将宽度设置为零来禁用边框,第二个只能通过将样式设置为none来禁用边框,第三个div只能通过设置其边框来“禁用”边框颜色变为透明。然后让我们尝试以下效果:
border: 0;
border: none;
border: transparent
边框样式:扎实!重要;边框颜色:红色!重要; border-width:2px!important; 边框颜色:红色!重要; border-width:2px!important; 边框样式:扎实!重要;
在Firefox和chrome中,我的结果是相同的:
border: 0;
似乎将border-width设置为0
border-style none
,但未更改border-color;
border: none;
似乎只更改边框样式(至none
);
border: transparent;
似乎将border-color更改为transparent
border-style none
;
我们应该使用BORDER 0
根据我的意见和经验,我建议您使用Border:0; 有一个很好的很好的理由,因为每当我们使用border时:无,我理解它可以工作,但考虑一下我们使用的是border,1px,2px,3px等。我的意思是我们给边框赋予的值是... px / em / rem对,所以我们需要使用border:0; 用于删除边框值,因为我们知道使用背景时:这意味着我们正在删除背景,而不是其他值。
谢谢