2012-04-01 7 views
38

私はコンテンツの3列を表示する方法を探しています。ラップアラウンドカラムを表示する方法を見つけましたが、このページでは必要ありません。私は言うべき道を探していますHTML/CSSの列を行う最善の方法

<column> 
<!-- content --> 
</column> 

3回、お互いに3列表示されています。私が主張している最良の例はThe Verge(http://www.theverge.com/)です。これを行う最善の方法は何ですか?

+0

利用フロート? – hjpotter92

+2

嫌なことに、時には古いスクールテーブルの要素を使用することは、行と列のコンテンツを書式設定する最も簡単な方法です。私はあなたがcssルートを探していることを知っているので、答えではなくコメントを追加することに決めました。 –

+0

@ TheJumpingFrog私はfloatを使用しましたが、画面サイズによってはこれと一貫性のない動作が見つかりました。 floatメソッドを使って「常にこの1つの形式で表示する」と言う方法はありますか? – muttley91

答えて

36

<table>またはCSSを使用することをお勧めします。

CSSは柔軟性が高いため、例は次のようになります。

<!-- of course, you should move the inline CSS style to your stylesheet --> 
<!-- main container, width = 70% of page, centered --> 
<div id="contentBox" style="margin:0px auto; width:70%"> 

<!-- columns divs, float left, no margin so there is no space between column, width=1/3 --> 
    <div id="column1" style="float:left; margin:0; width:33%;"> 
    CONTENT 
    </div> 

    <div id="column2" style="float:left; margin:0;width:33%;"> 
    CONTENT 
    </div> 

    <div id="column3" style="float:left; margin:0;width:33%"> 
    CONTENT 
    </div> 
</div> 

jsFiddle:http://jsfiddle.net/ndhqM/

フロートを使用して:3列が中心のdiv「コンテンツボックス」内の左から入ってくる、お互いに固執するだろう残しました。

+0

私は、スタイル属性の中に 'width'を入れたいと思います:' style = "margin :0自動;幅:70%; "。また、既定のスタイルシートでdivにマージンを適用するブラウザは認識していないので、float divのmargin:0;は不要です。 – steveax

+0

私は幅について思い出させてくれてありがとう。一定。 – AbSoLution8

+2

私はマイキーの答えが私の個人的な書式の問題に必要であることを発見したと付け加えたいと思う。将来の読者は、Mikeyの答えと同様にこの記事を見てください。 – muttley91

9

3フロートの列構造(これも私もお勧めします)に加えて、columncontainerの後ろにある要素のlayoutproblemsを防ぐためにclearfixを挿入する必要があります(つまり、フロー内にcolumncontainerを保持します...) 。

<div id="contentBox" class="clearfix"> 
.... 
</div> 

CSS:

.clearfix { zoom: 1; } 
.clearfix:before, .clearfix:after { content: "\0020"; display: block; height: 0; overflow: hidden; } 
.clearfix:after { clear: both; } 
+0

ありがとう、これは私が持っていたフォーマットの問題を修正しました。 – muttley91

+0

ようこそ。浮動小数点型の要素( 'ul'メニューなど)でレイアウトの問題を修正する一般的な方法です。 –

+0

私はこの問題に遭遇したのは初めてではないので、間違いなくメモしておきます。ありがとう! – muttley91

20

あなたはおそらく、それはベンダー接頭辞の使用を含んんが、このためにCSS3を使用して検討すべきです。

私はデモのために素早くfiddleをノックアップしましたが、その要点はこれです。

<style> 
.3col 
{ 
    -webkit-column-count: 3; 
    -webkit-column-gap: 10px; 
    -moz-column-count: 3; 
    -moz-column-gap: 10px; 
    column-count:3; 
    column-gap:10px; 
} 
</style> 
<div class="3col"> 
<p>col1</p> 
<p>col2</p> 
<p>col3</p> 
</div> 
+2

[w3schools](http://www.w3schools.com/css3/css3_multiple_columns.asp)で、これに関するブラウザサポートを知っておくと便利です。 IE10 +。私はより良いブラウザのサポートを待たなければならない – Duncanmoo

+1

@ Duncanmooのリンクが壊れている、これを試してみてください:http://caniuse.com/multicolumn - 現在、ブラウザのサポートの約14%(接頭辞付きで76%)だけです。 – naught101

+0

欲しい私は古いコメントを編集することができましたが、ここでは[w3schools](http://www.w3schools.com/css/css3_multiple_columns.asp)リンクのブラウザサポートがあります。 – Duncanmoo

2

ブートストラップ。彼らのすばらしいグリッドシステムhereをチェックしてください。

ブートストラップを使用して、あなたはこのように3つの列を作ることができる:

<div class="container"> 
    <div class="row"> 
    <div class="col-md-4">.col-md-4</div> 
    <div class="col-md-4">.col-md-4</div> 
    <div class="col-md-4">.col-md-4</div> 
    </div> 
</div> 
+0

良い点。私は基本的な例を加えました。 – bhekman

3

あなたも試してみてください。

.col{ 
 
    float: left; 
 
} 
 
.col + .col{ 
 
    float: left; 
 
    margin-left: 20px; 
 
} 
 

 
/* or */ 
 

 
.col:not(:nth-child(1)){ 
 
    float:left; 
 
    margin-left: 20px; 
 
} 
 

 
<div class="row"> 
 
    <div class="col">column</div> 
 
    <div class="col">column</div> 
 
    <div class="col">column</div> 
 
</div>

REF:あなたのスタイルシートでhttp://codepen.io/co0kie/pen/gPKNWX?editors=1100

関連する問題