回答:
どちらも有効です。それはあなたの選択です。
私はborder:0
それが短いので好む。読みやすいと思います。あなたが見つけるかもしれませんnone
より読みやすくなるあります。私たちは非常に有能なCSSポストプロセッサーの世界に住んでいるので、好きなものを使用して「コンプレッサー」で実行することをお勧めします。ここで戦う価値のある聖なる戦争はありません。
とは言っても、すべての運用CSSを手書きで作成している場合は、コメントで不平を言っているにもかかわらず、帯域幅を意識することに支障はありません。を使用border:0
すると、帯域幅をごくわずかに節約できます。それ自体はほとんど意味がありませんが、すべてのバイトをカウントすると、Webサイトが高速になります。
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;
どちらも機能します。どちらか1つを選んでそれを使用してください。
border: 0;
、有効です。
border: 0
ショートカットではありませんborder-width: 0
。代わりに、ショートバージョンは、常にすべての3つのプロパティを設定しますborder-color
、border-style
とborder-width
。
他の人が言ったように、両方が有効であり、トリックを行います。私はそれらが同一であると100%確信しているわけではありません。何らかのスタイルのカスケードが行われている場合、異なる値を効果的にオーバーライドしているため、理論的には異なる結果が生成される可能性があります。
例えば。「border:none;」と設定した場合 その後、境界線の幅とスタイルをオーバーライドする2つの異なるスタイルがあり、一方は何かを実行し、もう一方はそうしません。
次の例では、IEとfirefoxの両方で、最初の2つのテストdivに境界線がありません。ただし、2番目の2つは異なり、2番目のブロックの最初のdivはプレーンで、2番目のブロックの2番目の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
スタイルの。したがって、一見すると、これら3つのルールは同等に見えます。ただし、他のルールと組み合わせると、動作が異なります。
を使用してテーブルをレンダリングするとborder-collapse: collapse
、レンダリングされた各ボーダーが複数の要素間で共有されます(内側のボーダーは隣接するセルとして共有されます。外側のボーダーはセルとテーブル自体の間で共有されますが、行、行グループ、列、列グループもボーダーを共有します) )。仕様では、境界の競合解決に関するいくつかのルールが定義されています。
国境
border-style
のhidden
他のすべての競合のボーダーオーバーテイク優先。[…]スタイルがのボーダーの
none
優先度が最も低くなります。[…]スタイルが
hidden
1 つもなく、少なくとも1つがそうでないnone
場合は、幅の広いボーダーが優先され、ボーダーが広くなります。[…]境界線のスタイルが色だけが異なる場合、[…]
したがって、テーブルコンテキストでは、border: hidden
(またはborder-style: hidden
)が最も優先され、共有枠は何があっても非表示になります。
優先順位のもう一方の端border: none
(またはborder-style: none
)の優先順位が最も低く、次に幅がゼロの境界が続きます(境界が最も狭いため)。この手段は、こと計算された値のborder-style: none
と計算された値のは、border-width: 0
本質的に同じです。
以来none
と0
異なる特性(影響を与えるborder-style
とのborder-width
)とき、彼らは異なる動作をします、より具体的なルールの定義だけでスタイルや幅だけを。例については、Chrisの回答を参照してください。
これらのすべてのケースを1つのページに表示しますか?ライブデモを開いてください!
Oliから提供された仕様に従って、両方を使用できます。
私はいつも使用していますborder:0 none;
。
これらを個別に指定しても害はありませんが、従来のCSS1プロパティ呼び出しを使用すると、一部のブラウザはCSSをより速く解析します。
けれどもがborder:0;
、通常の境界線スタイルをデフォルトとしますnone
、しかし私は、妙に上書きすることができ、デフォルトの境界線スタイルを強制するいくつかのブラウザに気づきましたborder:0;
。
私が使う:
border: 0;
'境界'
値: [<border-width> || <ボーダースタイル> || <'border-top-color'>] | 受け継ぐ
したがって、どちらの方法でも問題はありません。
まあ、正確に違いを見るためにborder: 0
とborder: none
、私たちはいくつかの実験を行うことができます。
3つのdivを作成してみましょう。1つ目は、幅をゼロに設定することでのみ境界線を無効にでき、2つ目は、スタイルをnoneに設定することでのみ無効化でき、3つ目は、境界線を設定して「無効化」できる透明にする色。次に、次の効果を試してみましょう。
border: 0;
border: none;
border: transparent
ボーダースタイル:ソリッド!重要; border-color:red!important; ボーダー幅:2px!重要; border-color:red!important; ボーダー幅:2px!重要; ボーダースタイル:ソリッド!重要;
私の結果は、FirefoxとChromeの両方で同じでした。
border: 0;
border-widthをに0
、border-styleをnone
に設定しているようですが、border-colorは変更していません。
border: none;
ボーダースタイルを(にnone
)変更するだけのようです。
border: transparent;
border-colorをtransparent
、border-styleをに変更するようnone
です。
私のポイントでは、
border:none
動作していますが、有効なw3c標準ではありません
とても使いやすい border:0;
border: none
。