¿Cómo hacer que los elementos div se muestren en línea?


254

Dado este HTML:

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

¿Cómo hacer que se muestren en línea de esta manera:

foo bar baz

así no:

foo
bar
baz

Respuestas:


268

Eso es algo más entonces:

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


En realidad esta era la única manera que encontré para mostrar correctamente en línea, no sé por qué la solución no flotación no funcionaba ....
Necronet

23
Los nombres de clase css aquí no deben usarse como ejemplo. Utilice nombres semánticos adecuados como: css-tricks.com/semantic-class-names
Berik

261

Un div en línea es un fenómeno de la red y debe ser golpeado hasta que se convierta en un lapso (al menos 9 de cada 10) ...

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

... responde la pregunta original ...


11
Hay momentos en que desea que los divs se muestren en línea, por ejemplo, cuando desea agregar un margen a la izquierda y a la derecha de un elemento. No creo que se pueda hacer con un lapso. Sin embargo, Steve probablemente debería estar usando flotante en lugar de en línea.
Darryl Hein

8
relleno sí, no margen
Andreas Wong

8
Desafortunadamente, HTML5 no admite poner un div dentro de un <span>. Solía ​​usar <span> s para poner estilos CSS en una sección y no hacer que el navegador interpretara la sección como un bloque y me impusiera su diseño de bloque. Pero acabo de descubrir hoy al portar mi página a JQuery Mobile + HTML5 que si tiene un <div> dentro de un <span> el validador HTML5 se quejará de que es HTML5 no válido, por lo que hay casos en los que se usa la etiqueta <span> en lugar de un <div> en línea no es factible, al menos con HTML5.
Kmeixner

44
A veces, aunque vives en un mundo que no creaste y lo único que puedes cambiar en el CSS. En ese caso, style = "display: inline" funciona bien.
Matthew Lock

3
Si no está 'atascado' con el uso de divs, esta es una buena respuesta. Pero puede haber muchas razones por las que necesita usar divs pero necesita que aparezcan como elementos en línea.
Bobble

174

Intenta escribirlo así:

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


16
Esta es la respuesta correcta a la pregunta, pero teniendo en cuenta la respuesta aceptada, sospecho que la pregunta no aborda el escenario real.
Steve Perks

34

Después de leer esta pregunta y las respuestas un par de veces, todo lo que puedo hacer es suponer que ha habido un poco de edición en curso, y sospecho que se le ha dado una respuesta incorrecta por no proporcionar suficiente información. Mi pista proviene del uso de la bretiqueta.

Disculpas a Darryl. Leí class = "inline" como style = "display: inline". Tiene la respuesta correcta, incluso si usa nombres de clase semánticamente cuestionables ;-)

El uso erróneo de brproporcionar un diseño estructural en lugar de un diseño textual es demasiado frecuente para mi gusto.

Si desea poner más elementos en línea dentro de ellos, divsentonces debería flotar esos divs en lugar de hacerlos en línea.

Divs flotantes:

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

Divs en línea:

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

Si buscas lo primero, entonces esta es tu solución y pierdes esas bretiquetas:

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

tenga en cuenta que el ancho de estos divs es fluido, así que siéntase libre de ponerles anchos si desea controlar el comportamiento.

Gracias Steve


24

Usar display:inline-blockcon una consulta de margen y medios para 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>

11

Debe usar en <span>lugar de <div>para la forma correcta de en línea . porque div es un elemento de nivel de bloque, y su requisito es para elementos de nivel de bloque en línea.

Aquí hay un código html según sus requisitos:

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

Tienes dos maneras de hacer esto


  • usando simple display:inline-block;
  • o usando float:left;

así que tienes que cambiar la propiedad de visualización con display:inline-block;fuerza

Ejemplo uno

div {
    display: inline-block;
}

Ejemplo dos

div {
    float: left;
}

necesitas limpiar el flotador

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

7

Como se mencionó, display: inline es probablemente lo que quieres. Algunos navegadores también admiten bloques en línea.

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


3
@NexusRex hay una solución para que IE se comporte correctamente, sin embargo, se muestra: en línea es la respuesta correcta. Creo que la solución es: display: bloque en línea; * pantalla: en línea; * zoom: 1; establecer el zoom obliga a IE a tratar el elemento como un elemento de bloque.
Chris Stephens

7

Simplemente use un contenedor wrap div con "float: left" y ponga cajas dentro que también contengan 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
Creo que estamos hablando de elementos de bloque en línea que pueden tener ancho y alto. Imagine un div con una imagen de fondo que desee que fluya en línea con el texto.
NexusRex

6

esta bien para mi :

<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

Usaría tramos o flotaría el div a la izquierda. El único problema con la flotación es que debe borrar la flotación después o el div que contiene debe tener el estilo de desbordamiento configurado en auto


Creo que estamos hablando de un div en línea con texto u otro, no flotando a un lado.
NexusRex

Al usar float: left, con overflow: auto en el div que contiene, ¿cómo / cuándo entraría en juego la barra de desplazamiento para que el desbordamiento?
cellepo

3

Sé que la gente dice que esta es una idea terrible, pero en la práctica puede ser útil si quieres hacer algo como imágenes en mosaico con comentarios debajo de ellas. por ejemplo, Picasaweb lo usa para mostrar las miniaturas en un álbum.
Consulte, por ejemplo, / demo http://closure-library.googlecode.com/svn/trunk/closure/goog/demos/inline_block_quirks.html (clase goog-inline-block; lo abrevio a ib aquí)

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

Dado ese CSS, configure su div en clase ib, y ahora es mágicamente un elemento de bloque en línea.


3

Necesitas contener los tres divs. Aquí hay un ejemplo:

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

Nota: los atributos border-radius son opcionales y solo funcionan en navegadores compatibles con CSS3.

HTML

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

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

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

Tenga en cuenta que los divs 'foo' 'bar' y 'baz' se mantienen dentro del div 'contiene'.


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

Creo que puedes usarlo de esta manera sin usar ningún CSS -

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

En este momento está utilizando el elemento de nivel de bloque de esa manera está obteniendo resultados no deseados. Entonces, ¿puede alinear elementos como span, small, etc.

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

0

podemos hacer esto como

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

0
<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/


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

Solo tiendo a hacerlos anchos fijos para que se sumen al ancho total de la página, probablemente solo funcione si está utilizando una página de ancho fijo. También "flotador".

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.