div要素をインラインで表示するにはどうすればよいですか?


254

このHTMLを考えると:

<div>foo</div><div>bar</div><div>baz</div>

これらを次のようにインラインで表示するにはどうすればよいですか。

foo bar baz

このようではない:

foo
bar
baz

回答:


268

それはそれから何か別のものです:

div.inline { float:left; }
.clearBoth { clear:both; }
<div class="inline">1<br />2<br />3</div>
<div class="inline">1<br />2<br />3</div>
<div class="inline">1<br />2<br />3</div>
<br class="clearBoth" /><!-- you may or may not need this -->


実際に、これは無フロートソリューションが機能しなかった理由を私は知らない私は、インライン正しく表示することが分かっ唯一の方法は....だった
Necronet

23
ここでのcssクラス名は例として使用しないでください。:のような適切なセマンティック命名使用css-tricks.com/semantic-class-names
Berik

261

インラインdivはWebの奇抜なユーザーであり、スパンになるまで(少なくとも10回のうち9回は)打たれる必要があります...

<span>foo</span>
<span>bar</span>
<span>baz</span>

...元の質問に答えます...


11
divをインラインで表示したい場合、たとえば、要素の左右にマージンを追加したい場合があります。それはスパンではできないと思います。スティーブはおそらくインラインの代わりにフロートを使うべきです。
ダリルハイン

8
パディングはい、マージンではありません
Andreas Wong

8
残念ながら、HTML5はdivを<span>内に置くことをサポートしていません。私は以前、<span>を使用してCSSスタイルをセクションに配置し、ブラウザーにセクションをブロックとして解釈させず、そのブロックレイアウトを強制していました。しかし、私のページをJQuery Mobile + HTML5に移植しているときに本日発見しました。<span>内に<div>がある場合、HTML5バリデーターはそれが無効なHTML5であると不平を言うため、代わりに<span>タグを使用する場合があります。インラインの<div>は、少なくともHTML5では実行できません。
Kmeixner 2013年

4
作成していない世界に住んでいても、CSSで変更できるのは唯一の場合もあります。その場合、style = "display:inline"は適切に機能します。
マシューロック

3
divの使用に「行き詰まっている」のではない場合、これは良い答えです。しかし、divを使用する必要があるが、インライン要素として表示する必要がある理由はたくさんあります。
Bobble

174

このように書いてみてください:

div { border: 1px solid #CCC; }
    <div style="display: inline">a</div>
    <div style="display: inline">b</div>
    <div style="display: inline">c</div>


16
これは質問に対する正しい答えですが、受け入れられた答えを考えると、質問は実際のシナリオを扱っていないのではないかと思います。
Steve Perks

34

この質問と回答を数回読んだ後、私ができることは、かなりの編集が行われていると想定することだけです。私の疑いは、十分な情報を提供していないために間違った回答が与えられたということです。私の手がかりはbrタグの使用から来ています。

ダリルに謝罪。class = "inline"をstyle = "display:inline"と読みます。意味的に疑問のあるクラス名を使用していても、正しい答えがあります;-)

brテキストレイアウトではなく、構造レイアウトを提供するためにを誤って使用することは、私の好みではあまりにも一般的です。

それらの中にインライン要素以上のものを置きたい場合は、それらをインラインにdivsするdivのではなく、それらをフローティングにする必要があります。

フローティングdiv:

===== ======= ==   **** ***** ******   +++++ ++++
===== ==== =====   ******** ***** **   ++ +++++++
=== ======== ===   ******* **** ****   
===== ==== =====                       +++++++ ++
====== == ======

インラインdiv:

====== ==== ===== ===== == ==== *** ******* ***** ***** 
**** ++++ +++ ++ ++++ ++ +++++++ +++ ++++

前者の後であれば、これがあなたの解決策であり、それらのbrタグを失います:

<div style="float: left;" >
  <p>block level content or <span>inline content</span>.</p>
  <p>block level content or <span>inline content</span>.</p>
</div>
<div style="float: left;" >
  <p>block level content or <span>inline content</span>.</p>
  <p>block level content or <span>inline content</span>.</p>
</div>
<div style="float: left;" >
  <p>block level content or <span>inline content</span>.</p>
  <p>block level content or <span>inline content</span>.</p>
</div>

これらのdivの幅は流動的であることに注意してください。動作を制御したい場合は、自由に幅を設定してください。

ありがとう、スティーブ


24

使用display:inline-blockIE6 / 7のためのマージンとメディアクエリで:

<html>
  <head>
    <style>
      div { display:inline-block; }
      /* IE6-7 */
      @media,
          {
          div { display: inline; margin-right:10px; }
          }
   </style>
  </head>
  <div>foo</div>
  <div>bar</div>
  <div>baz</div>
</html>

11

<span>代わり<div>inlineを 使用する必要があります。divはブロックレベルの要素であり、要件はインラインブロックレベルの要素に対するものだからです。

ここにあなたの要件ごとのhtmlコードがあります:

<div class="main-div">
 <div>foo</div>
 <div>bar</div>
 <div>baz</div>`
</div>

これを行うには2つの方法があります


  • シンプルな display:inline-block;
  • または使用 float:left;

したがって、表示プロパティをdisplay:inline-block;強制的に変更する必要があります

例1

div {
    display: inline-block;
}

例2

div {
    float: left;
}

あなたはフロートをクリアする必要があります

.main-div:after {
    content: "";
    clear: both;
    display: table;
}

7

前述のように、display:inlineはおそらく必要なものです。一部のブラウザはインラインブロックもサポートしています。

http://www.quirksmode.org/css/display.html#inlineblock


3
@NexusRex IEを正しく動作させるための回避策がありますが、display:inlineが正しい答えです。回避策は次のとおりです。display:inline-block; * display:インライン; *ズーム:1; ズームを設定すると、IEは要素をブロック要素のように扱います。
Chris Stephens、

7

"float:left"でラッパーdivを使用し、float:leftを含むボックスを内側に配置するだけです。

CSS:

wrapperline{
width: 300px;
float: left;
height: 60px;
background-color:#CCCCCC;}

.boxinside{
width: 50px;
float: left;
height: 50px;
margin: 5px;
background-color:#9C0;
float:left;}

HTML:

<div class="wrapperline">
<div class="boxinside">Box 1</div>
<div class="boxinside">Box 1</div>
<div class="boxinside">Box 1</div>
<div class="boxinside">Box 1</div>
<div class="boxinside">Box 1</div>
</div>

6

<span>


2
幅と高さを持つことができるブロック要素のインライン化について話していると思います。テキストと一緒に流し込みたい背景画像のあるdivを想像してみてください。
NexusRex 2011

6

大丈夫 :

<style type="text/css">
    div{
        position: relative;
        display: inline-block;
        width:25px;
        height:25px;
    }
</style>
<div>toto</div>
<div>toto</div>
<div>toto</div>

4

スパンを使用するか、divを左にフロートします。フローティングの唯一の問題は、後でフロートをクリアする必要があるか、それを含むdivでオーバーフロースタイルを自動に設定する必要があることです


私たちは、divについて、片側に浮かんでいないテキストなどとインラインで話していると思います。
NexusRex 2011

float:leftを使用し、overflow:autoを含むdivで使用する場合、オーバーフローが発生するスクロールバーはどのように/いつ再生されますか?
cellepo 2014年

3

これはひどい考えだと人々が言っ​​ているのを知っていますが、実際にコメントをタイル画像の下に表示したい場合に役立ちます。たとえば、Picasawebはこれを使用してアルバムのサムネイルを表示します。
例/デモのために参照してくださいhttp://closure-library.googlecode.com/svn/trunk/closure/goog/demos/inline_block_quirks.html(クラスGOOG-インラインブロック;私はここIBするためにそれを省略)

/* below is a set of hacks to make inline-block work right on divs in IE. */
html > body .ib { display:inline-block; }
.ib {display:inline-block;position:relative;}
* html .ib { display: inline; }
:first-child + html .ib { display:inline; }

そのCSSを前提として、divをクラスibに設定すると、魔法のようにインラインブロック要素になります。


3

3つのdivを含める必要があります。次に例を示します。

CSS

div.contain
{
  margin:3%;
  border: none;
  height: auto;
  width: auto;
  float: left;
}

div.contain div
{
  display:inline;
  width:200px;
  height:300px;
  padding: 15px;
  margin: auto;
  border:1px solid red;
  background-color:#fffff7;
  -moz-border-radius:25px; /* Firefox */
  border-radius:25px;
}

注:border-radius属性はオプションであり、CSS3準拠のブラウザーでのみ機能します。

HTML

<div class="contain">
  <div>Foo</div>
</div>

<div class="contain">
  <div>Bar</div>
</div>

<div class="contain">
  <div>Baz</div>
</div>

div 'foo' 'bar'と 'baz'はそれぞれ 'contain' div内に保持されることに注意してください。


2
<style type="text/css">
div.inline { display:inline; }
</style>
<div class="inline">a</div>
<div class="inline">b</div>
<div class="inline">c</div>

2

私はあなたがCSSを使用せずにこの方法を使用できると思います-

<table>
    <tr>
        <td>foo</td>
    </tr>
    <tr>
        <td>bar</td>
    </tr>
    <tr>
        <td>baz</td>
    </tr>
</table>

現在、ブロックレベル要素を使用しているので、望ましくない結果が得られます。したがって、スパン、スモールなどの要素をインライン化できます。

<span>foo</span><span>bar</span><span>baz</span>

0

私たちはこれを次のように行うことができます

.left {
    float:left;
    margin:3px;
}
<div class="left">foo</div>
<div class="left">bar</div>
<div class="left">baz</div>


0
<div>foo</div><div>bar</div><div>baz</div>
//solution 1
<style>
    #div01, #div02, #div03 {
                                float:left;
                                width:2%;
    }   
 </style>
 <div id="div01">foo</div><div id="div02">bar</div><div id="div03">baz</div>

 //solution 2

 <style>
      #div01, #div02, #div03 {
                                  display:inline;
                                  padding-left:5px;
      }   
</style>
<div id="div01">foo</div><div id="div02">bar</div><div id="div03">baz</div>

 /* I think this would help but if you have any other thoughts just let me knw      kk */

-1

私はそれらをページの合計幅になるように固定幅にする傾向があります-おそらく固定幅ページを使用している場合にのみ機能します。また「フロート」。

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