Comment faire pour que les éléments div s'affichent en ligne?

Compte tenu de ce code HTML:

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

Comment les faire afficher en ligne comme ceci:

Foo bar baz

Pas comme ça:

Foo
bar
baz

209
demandé sur Paul Sweatte 2008-10-22 09:59:35

19 réponses

C'est autre chose alors:

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 -->
231
répondu Darryl Hein 2018-01-20 23:21:44

Un div en ligne est un monstre du web et devrait être battu jusqu'à ce qu'il devienne une durée (au moins 9 fois sur 10)...

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

...les réponses à la question d'origine...

239
répondu bochgoch 2008-12-31 15:01:29

Essayez de l'écrire comme ceci:

<div style="display: inline">a</div>
<div style="display: inline">b</div>
<div style="display: inline">c</div>
162
répondu Randy Sugianto 'Yuku' 2008-10-22 06:02:07

Après avoir lu cette question et les réponses à quelques reprises, tout ce que je peux faire est de supposer qu'il y a eu un peu d'édition en cours, et mon soupçon est que vous avez reçu la réponse incorrecte basée sur ne pas fournir suffisamment d'informations. Mon Indice vient de l'utilisation de la balise br.

Toutes mes Excuses à Darryl. J'ai lu class = "inline" comme style = "display: inline". Vous avez la bonne réponse, même si vous utilisez des noms de classes sémantiquement discutables ;-)

La Miss utiliser de br pour fournir la mise en page structurelle plutôt que pour la mise en page textuelle est beaucoup trop répandue à mon goût.

Si vous voulez mettre plus d'éléments en ligne dans ces divs alors vous devriez flotter ces div plutôt que de les faire en ligne.

Divs flottants:

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

Divs En Ligne:

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

Si vous êtes après le premier, alors c'est votre solution et perdez ces balises 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>

Notez que la largeur de ces divs est fluide, alors n'hésitez pas à mettre largeurs sur eux si vous voulez contrôler le comportement.

Merci, Steve

32
répondu Steve Perks 2008-12-31 16:27:42

Utilisez display:inline-block avec une requête margin et media pour IE6 / 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>
23
répondu Paul Sweatte 2013-07-09 19:20:38

Vous devriez utiliser <span> au lieu de <div> pour la manière correcte de inline. parce que div est un élément de niveau bloc, et votre exigence est pour les éléments de niveau bloc en ligne.

Voici le code html selon vos besoins:

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

Vous avez deux façons de le faire


  • , en utilisant de simples display:inline-block;
  • ou en utilisant float:left;

Vous devez donc changer la propriété d'affichage display:inline-block; avec force

Exemple un

div {
    display: inline-block;
}

L'Exemple de deux

div {
    float: left;
}

, Vous devez effacer float

.main-div:after {
    content: "";
    clear: both;
    display: table;
}
8
répondu Hidayt Rahman 2017-01-31 06:19:24

Comme mentionné, display: inline est probablement ce que vous voulez. Certains navigateurs prennent également en charge les blocs en ligne.

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

7
répondu Kevin 2008-12-31 15:06:49

<span> ?

6
répondu Pirat 2008-10-22 08:39:45

Il suffit D'utiliser un wrapper div avec "float: left" et de mettre des boîtes à l'intérieur contenant également 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
répondu A. Bender 2011-09-20 11:42:49

Ok, pour moi :

<style type="text/css">
    div{
        position: relative;
        display: inline-block;
        width:25px;
        height:25px;
    }
</style>
<div>toto</div>
<div>toto</div>
<div>toto</div>
6
répondu flairon 2014-12-22 10:31:18

J'utiliserais des spans ou flotter la div à gauche. Le seul problème avec floating est que vous devez effacer le flottant par la suite ou que le div contenant doit avoir le style de débordement défini sur auto

4
répondu Cam Tullos 2011-04-16 23:51:07

Je sais que les gens disent que c'est une idée terrible, mais cela peut en pratique être utile si vous voulez faire quelque chose comme des images en mosaïque avec des commentaires en dessous. par exemple, Picasaweb l'utilise pour afficher les vignettes dans un album.
Voir par exemple / demo http://closure-library.googlecode.com/svn/trunk/closure/goog/demos/inline_block_quirks.html (classe goog-inline-block; Je l'abbreviate à ib ici)

/* 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; }

Étant donné que CSS, définissez votre div sur la classe ib, et maintenant c'est comme par magie inline élément de bloc.

3
répondu David Eison 2011-02-12 02:56:37

Vous devez contenir les trois divs. Voici un exemple:

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;
}

Remarque: les attributs border-radius sont facultatifs et ne fonctionnent que dans les navigateurs compatibles CSS3.

HTML

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

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

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

Notez que les divs ' foo '' bar ' et ' baz 'sont chacun détenus dans le div' contain'.

3
répondu word5150 2015-12-16 10:01:42
<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
répondu Darryl Hein 2008-10-22 06:04:33

, Nous pouvons le faire comme

.left {
    float:left;
    margin:3px;
}
<div class="left">foo</div>
<div class="left">bar</div>
<div class="left">baz</div>
1
répondu omnath 2012-10-16 18:15:57
<div class="cdiv">
<div class="inline"><p>para 1</p></div>
 <div class="inline">
     <p>para 1</p>
     <span>para 2</span>
     <h1>para 3</h1>
</div>
 <div class="inline"><p>para 1</p></div>

Http://jsfiddle.net/f8L0y5wx/

1
répondu Ipog 2014-08-20 03:54:20
<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
répondu Waah Ronald 2016-02-08 02:29:52

J'ai juste tendance à leur faire des largeurs fixes afin qu'elles s'ajoutent à la largeur totale de la page - ne fonctionne probablement que si vous utilisez une page à Largeur fixe. Aussi "flotter".

0
répondu NFPPW 2010-01-08 11:18:14

Je pense que vous pouvez utiliser de cette façon sans utiliser de css -

<table>
 <tr>
  <td>foo</td>
 </tr>
 <tr>
  <td>bar</td>
 </tr>
 <tr>
  <td>baz</td>
 </tr>
</table>
0
répondu Pankaj Bisht 2017-02-13 13:04:57