自動幅と100%幅の違い


98

以前はwidth: auto、幅はコンテンツの幅に設定されていると想定していました。これで、親の幅全体が使用されることがわかります。

誰もがこれらの違いを説明できますか?



簡単に言えば、1)auto、親div幅/高さはその子の合計になります。2)100%、その幅/高さはその親になります。記事を参照してくださいここに
アラン・ドン

回答:


141

幅自動

divやpのようなブロックレベル要素の初期幅はautoです。これにより、含まれているブロック内の使用可能なすべての水平スペースを占めるように拡張されます。水平パディングまたは境界線がある場合、それらの幅は要素の合計幅に追加されません。

幅100%

一方、width:100%を指定すると、要素の合計幅は、要素を含むブロックの100%に水平マージン、パディング、境界線を加えたものになります(box-sizing:border-boxを使用した場合を除く)。合計幅の計算方法を変更するために、マージンのみが100%に追加されます)。これはあなたが望むものかもしれませんが、おそらくそうではありません。

違いを視覚化するには、次の図を参照してください。

ここに画像の説明を入力してください

ソース


3
なぜ興味がある人のためにwidth: auto:動作する方法stackoverflow.com/questions/28353625/...
ハシェムQolami

1
これautoと同じことをfill-available
jiggunjer

2
つまり、基本的には要素のコンテンツのサイズとは関係ありませんが、完全に親の幅を参照していますか?
haemse

82
  • width: auto; マージン、パディング、またはボーダーから追加のスペースが追加された場合、エレメントは親コンテナーと同じ幅を維持するように可能な限り努力します。

  • width: 100%;要素を親コンテナと同じ幅にします。親に関係なく、要素のサイズに余分なスペースが追加されます。これは通常問題を引き起こします。

ここに画像の説明を入力してください ここに画像の説明を入力してください


2
@ C-linkと同じですが、グラフィカルインターフェイスが追加されています。so +1
Navin Rauniyar 2014年

8

マージンとボーダーについてです。を使用してwidth: autoからボーダーを追加すると、divはコンテナーより大きくなりません。一方、width: 100%境界線を使用すると、要素の幅は100%+境界線またはマージンになります。詳細情報を参照してくださいこれを


4

widthの値がautoである限り、要素はコンテナよりも広くなることなく水平マージン、パディング、およびボーダーを持つことができます(もちろん、margin-left + border-left-width + padding-left + padding-rightの合計を除く) + border-right-width + margin-rightがコンテナーよりも大きい)。コンテンツボックスの幅は、コンテナの幅からマージン、パディング、ボーダーを差し引いたときの残りになります。

一方、width:100%を指定すると、要素の合計幅は、要素を含むブロックの100%に水平マージン、パディング、境界線を加えたものになります(box-sizing:border-boxを使用した場合を除く)。合計幅の計算方法を変更するために、マージンのみが100%に追加されます)。これはあなたが望むものかもしれませんが、おそらくそうではありません。

ソース:

http://www.456bereastreet.com/archive/201112/the_difference_between_widthauto_and_width100/


3

divやpのようなブロックレベル要素の初期幅はautoです。

明示的に指定された幅を元に戻すには、width:autoを使用します。

width:100%を指定した場合、要素の合計幅は、要素を含むブロックの100%に水平マージン、パディング、境界線を加えたものになります。

したがって、次にブロックレベル要素の幅を100%に設定して、使用可能なすべての幅を占めるようにした場合は、本当に自動に設定することを検討してください。


3

幅100%:100%で コンテンツを作成します。マージン、ボーダー、パディングがこの幅に追加され、これらのいずれかが追加されると要素がオーバーフローします。

幅自動: マージン、ボーダー、パディングを含む利用可能なスペースに要素を合わせます。マージン+パディング+ボーダーを調整した後に残っているスペースは、幅/高さとして使用できます。

幅100%+ボックスのサイズ:境界ボックス: 境界、パディングを含む利用可能なスペースに要素を合わせます(マージンはコンテナーをオーバーフローさせます)。


1

幅の使用:自動; +表示:インラインブロック; CSSで素晴らしい効果をもたらします。

width : auto;
display: inline-block;

2
これは、100&とautoの違いの質問には答えません。
JoeTidee 2017

1
はい、わかっていますが、ここではについて説明します:autoおよびdisplay:inline-block。ブロックレベルの要素の幅を自動的に増やしたい場合は、これを使用できます。100%と自動の違い
Mohammed Javed 2017

0

私たちが言うとき

width:auto;

幅は親要素の合計幅を超えることはありません。最大幅は親の幅です。ボーダー、パディング、マージンを追加しても、ボーダー、パディング、マージンのためのスペースを確保するため、要素自体の内容は小さくなります。ボーダー+パディング+マージンに必要なスペースが親要素の合計幅より大きい場合、コンテンツの幅はゼロになります。

私たちが言うとき

width:100%;

要素のコンテンツの幅は親要素の100%になり、ボーダー、パディング、またはマージンを追加すると、子要素が親要素の幅を超え、親要素からオーバーフローし始めます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.