2012-11-04 6 views
10

空であれば何とかspanの幅を保つことはできますか? 何も入っていなくてもspanの幅を維持する

I次のHTML擬似テーブルがあります:CSSで

<p><span class="col1">Day:</span><span class="col2"><?php echo somephp ?></span></p> 
<p><span class="col1">Time:</span><span class="col2"><?php echo somephp ?></span></p> 
<p><span class="col1">Class:</span><span class="col2"><?php echo somephp ?></span></p> 
<p><span class="col1">Teacher:</span><span class="col2"><?php echo somephp ?></span></p> 

span.col1 {width: 100px;float: left;} 
span.col2 {width: 100px;} 

時々、PHP COL2にエコーされ空で、この問題が発生したときCOL2の幅は0とのCOL1ですその下の段落は上記の段落のcol1の横に積み上げられます。

+0

可能な複製:http://stackoverflow.com/questions/4171286/how-to-make-a-div-with-no-content-have-a-width –

答えて

25

col2スパンは、インライン要素であるため、幅を無視しています。それらをインラインブロック要素にする必要があります。

span.col2 { width: 100px; display: inline-block } 

また、あなたそれが表示されます場所に応じて、それに高さを追加する必要があり、またはあなたは100pxに広いが、高い0PXスパンで終わるだろうことに注意してください。

1

デフォルトでは、スパン要素はインライン要素であり、幅は無視されます。

ディスプレイを追加してみてください:スパンにブロックしてください。

span.col1 {width: 100px;float: left; display:block;} 
span.col2 {width: 100px; display:block;} 

希望します。

+1

'display:block;'改行を追加する。 – prageeth

+0

これは間違いありませんが、スパンが空のコンテンツで幅を維持する方法が問題でした。古いブラウザIE8はインラインブロックで動作しないため、ブロックを使用するように提案しました。 –

+1

デフォルトでは、要素がブロックとして表示される場合、古いブラウザは通常、インラインブロックでは機能しません。しかしながら、要素がネイティブにインラインである場合、例えば、 'span'それは正常に動作します。 – Andy

1

デフォルトでは、spanはインラインで表示されます。

display:blockにブロック要素を追加するか、floatを使わずにdisplay:inline-blockを使用して残りのテキストとインラインにしておくこともできます。

関連する問題