スパンまたはdivを水平に配置するにはどうすればよいですか?


87

私の唯一の問題は、それらを3つに並べ、等間隔にすることです。どうやら、スパンは幅を持つことができず、div(およびdisplay:blockのあるスパン)は横に並べて表示されません。提案?

<div style='width:30%; text-align:center; float:left; clear:both;'> 私が今持っているものです。


2
なぜテーブルを使いたくないのですか?
DOK

63
データが表形式ではないためです。
Thomas Owens、

10
以下の回答は適切ですが、テーブルを使用すると、事態が複雑になる場合でも頭痛の種が少なくなることを考慮してください。作業が簡単になる場合は、テーブルを使用してもかまいません。実用的に!:-)
ラフル

5
真剣に、テーブルを使用しないでください。このようなことは、CSSでは簡単です。
Sam Murray-Sutton、

26
「それがあなたの仕事をより簡単にするならば、それはテーブルを使うことは問題ありません。」ある絶対にひどいアドバイス。無視してください!:)
ボビージャック

回答:


77

divをfloat: left;属性とともに使用して、横に並べて表示することができますが、重複しないように次の要素をクリアする必要がある場合があります。


17
実際には、だけを設定できますoverflow: hidden。参照:stackoverflow.com/questions/323599/...
デヴィッドWolever

1
これにより、後続のdivのレイアウトが壊れることがあります。たとえば、私があなたのソリューションを使用し、それからpadding-left右側のdivで試そうとすると、それは無視されます。
Sebastian Mach

2
考え過ぎる理由はありません。問題なく<div style="display: in-line"></div><div style="display: in-line"></div>動作するはずです。
zoltar

floatを使用すると、新しい問題がたくさん発生します。overflow: hidden最高のソリューションです。
saran3h

39

使用できます

.floatybox {
     display: inline-block;
     width: 123px;
}

インラインブロックをサポートするブラウザのみをサポートする必要がある場合。インラインブロックは幅を持つことができますが、ボタン要素のようにインラインです。

ああ、あなたは垂直配置を追加したいと思うかもしれません:物事が整列することを確認するために要素の上に


1
垂直方向の整列は、ブロックレベルの要素では機能しません。ここでは、表示がインラインブロックに設定されている要素について説明します。
runeh 2008年

1
インラインブロックは、IE6 / 7を除くすべてのAグレードのブラウザーでサポートされるようになりましたが、インラインブロックをIE6 / 7で機能させるためのハックがあります。
Alexander Bird、

12

私の答え:

<style>
 #whatever div {
  display: inline;
  margin: 0 1em 0 1em;
  width: 30%;
}
</style>

<div id="whatever">
 <div>content</div>
 <div>content</div>
 <div>content</div>
</div>

どうして?

技術的には、Spanはインライン要素ですが、幅を持つことができます。表示プロパティを設定して、最初にブロックする必要があります。ただし、このコンテキストでは、divをコンテンツで埋めたいと思うので、divがおそらくより適切です。

あなたが絶対にしたくないことの1つはclear:both、divに設定されていることです。このように設定すると、ブラウザは要素が同じ行に配置されることを許可しなくなります。その結果、要素が積み上げられます。

の使用に注意してくださいdisplay:inline。これはie6マージン倍増バグを扱います。条件付きスタイルシートなど、必要に応じて他の方法でこれに取り組むことができます。

これらはページ上の唯一の要素ではないので、他のページ要素から分離する必要があるので、ラッパー(#whatever)を追加しました。

とにかく、それがお役に立てば幸いです。


これをjsfiddleにカットアンドペーストすると機能しないようでした
Jamie Fristrom、2012

1
申し訳ありませんが、タイプミスがあります。私はそれらの各行の後にセミコロンを置くべきでしたが、それでうまくいきました。それに応じて編集しました。この質問をもう一度確認しましたが、OPが彼の例にもう少しコードを追加する必要があることをお勧めします。ここでの答えが示すように、ここで使用できるさまざまなアプローチがあり、使用するものはコンテキストに依存します。
サムマレーサットン

4

できるよ:

<div style="float: left;"></div>

または

<div style="display: inline;"></div>

どちらでも、divが水平に並べられます。


3

3つの均等なサイズの列、均等な間隔、および(均等な)スケールを提供するので、私はこのようにします。注:これはテストされていないため、古いブラウザでは微調整が必​​要になる場合があります。

<style>
html, body {
    margin: 0;
    padding: 0;
}

.content {
    float: left;
    width: 30%;
    border:none;
}

.rightcontent {
    float: right;
    width: 30%;
    border:none
}

.hspacer {
    width:5%;
    float:left;
}

.clear {
    clear:both;
}
</style>

<div class="content">content</div>
<div class="hspacer">&nbsp;</div>
<div class="content">content</div>
<div class="hspacer">&nbsp;</div>
<div class="rightcontent">content</div>
<div class="clear"></div>

2

私は使うだろう:

<style>
.all {
display: table;
}
.maincontent {
float: left;
width: 60%; 
}
.sidebox { 
float: right;
width: 30%; 
}
<div class="all">
   <div class="maincontent">
       MainContent
   </div>
   <div class="sidebox"> 
       SideboxContent
   </div>
</div>

オーバーフローからこの 'コードツール'を使用するのは初めてです...


1

あなたがしたいのは、CSSグリッドベースのレイアウトを調べることです。このレイアウトメソッドには、ページのコンテンツをグリッド構造に揃えるためにいくつかのCSSクラスを指定することが含まれます。これは、Webベースよりも印刷面のレイアウトに密接に関連していますが、テーブルに頼ることなくコンテンツを構造にレイアウトするために多くのWebサイトで使用されている手法です。

Smashing Magazineの初心者にこれを試してみてください。


0

css Floatプロパティを見てください。 http://w3schools.com/css/pr_class_float.asp

それはdivのようなブロック要素で動作します。あるいは、何を表示しようとしているのか、実際に情報の表を表示しようとしても、表は悪ではありません。


しかし、それはテーブルではありません。それらは、私が隣り合って表示したい3つのものにすぎません。
Thomas Owens、

404ページが見つかりません
Ali Yousefi

0

私はそれらにすべてのdisplay: block;属性を与え、使用するようにしようと思いますfloat: left;

その後、必要に応じて設定widthや設定を行うことができheightます。垂直方向の配置規則を指定することもできます。


0
    <!-- CSS -->
<style rel="stylesheet" type="text/css">
.all { display: table; }
.menu { float: left; width: 30%; }
.content { margin-left: 35%; }
</style>

<!-- HTML -->
<div class="all">
<div class="menu">Menu</div>
<div class="content">Content</div>
</div>

別の...を使用するfloat: left;right;width他の値を変更してください...それはうまくいきます...また、divによって使用された10%のアレントがそれらの間で使われていないことに注意してください...悪い英語で申し訳ありません:)

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