¿Cómo hacer que un div sin contenido tenga ancho?


110

Estoy tratando de agregar un ancho a a div, pero parece que tengo un problema porque no tiene contenido.

Aquí está el CSS y HTML que tengo hasta ahora, pero no funciona:

CSS

body{
margin:0 auto;
width:1000px
}
ul{
width:800px;
}
ul li{
clear:both;
}
.test1{
width:200px;
float:left;
}

HTML

<body>
  <div id="test">
    <ul>
      <li>
        <div class="test1">width1</div>
        <div class="test1">width2</div>
        <div class="test1">width3</div>
      </li>
      <li>
        <div class="test1"></div>
        <div class="test1">width2</div>
        <div class="test1">width3</div>
      </li>
      <li>
        <div class="test1"></div>
        <div class="test1">width2</div>
        <div class="test1">width3</div>
      </li>
    </ul>
 </div>

Respuestas:


158

un div generalmente necesita al menos un espacio que no se rompa (& nbsp;) para tener un ancho.


28
use "display: inline-block"
Luccas

buena solución, si utilizo "" en lugar de & nbsp; no funciona. pero ¿por qué?
Amitābha

1
'& nbsp;' es una buena técnica en contraposición a la altura mínima porque no fuerza una altura. Supongamos que su tamaño de fuente está establecido en 16 px y su relleno es de 15 px. Su div conservará la misma altura antes y después de que se agregue el texto al div (suponiendo que esté todo en una línea)
eroedig

para mí, poner un espacio no funciona! el div con un ancho de 100 px y dentro de & nbsp; no parece ser 100px en un div con elementos flexibles en línea
Micky

89

Cualquiera de uso padding, heighto &nbsp para la anchura para tener efecto con vacíodiv

EDITAR:

No cero min-heighttambién funciona muy bien


5
Prefiero la solución de relleno, cualquier relleno superior a 0 funcionará. De esa manera, no tendrá un extraño, seleccionable &nbsp;en el div.
Brian Duncan

1
Tenga en cuenta: para la solución de acolchado, debe proporcionar acolchado izquierdo / derecho y superior / inferior para que funcione.
Govind Rai

62

Use min-height: 1px; Everything tiene al menos una altura mínima de 1px, por lo que no se ocupa espacio adicional con nbsp o padding, ni se ve obligado a conocer la altura primero.


2
Sus soluciones me parecen las más limpias, pero he estado tratando de encontrar el motivo de esto en la especificación de CSS y no puedo encontrarlo en ningún lugar, lo más cercano que encontré es CSS 2.1, 9.5 Floatsdonde dice Note: this means that floats with zero outer height or negative outer height do not shorten line boxes., pero habla de cuadros de línea, es decir, líneas en un párrafo, pero no en cuadros adyacentes. ¿Alguien más familiarizado con las especificaciones CSS?
Jaime Hablutzel

Esto funcionó mejor para mí. Probé la mayoría de las otras sugerencias aquí excepto & nbsp ;.
ayahuasca

28

Use CSS para agregar un espacio de ancho cero a su div. El contenido del div no ocupará espacio pero obligará al div a mostrarse

.test1::before{
   content: "\200B";
}

9

Tiene ancho pero sin contenido ni alto. Agregue un atributo de altura a la clase test1.


7

Existen diferentes métodos para hacer visible el DIV vacío con float: lefto float: right.

Aquí presenta los que conozco:

  • establecer width(o min-width) con height(o min-height)
  • o establecer padding-top
  • o establecer padding-bottom
  • o establecer border-top
  • o establecer border-bottom
  • o use pseudo-elementos : ::beforeo ::aftercon:
    • {content: "\200B";}
    • o {content: "."; visibility: hidden;}
  • o poner &nbsp;dentro de DIV (esto a veces puede traer efectos inesperados, por ejemplo en combinación con text-decoration: underline;)


1

Demasiado tarde para responder, pero aun así.

Al usar CSS, para diseñar el div (sin contenido), la propiedad min-height debe establecerse en "n" px para hacer que el div sea visible (funciona con webkits y chrome, aunque no estoy seguro de si este truco funcionará en IE6 y inferior)

Código:

.shape-round{
  width: 40px;
  min-height: 40px;
  background: #FF0000;
  border-radius: 50%;
}
<div class="shape-round"></div>



0

Tuve el mismo problema. Quería que los íconos aparecieran presionando el botón pero sin ningún movimiento y deslizándose por el entorno, como una bombilla: encendido y apagado, aparecían y desaparecían, por lo que necesitaba hacer un div vacío con tamaños fijos.

width: 13px;
min-width: 13px;

me hizo el truco


-1

Si agrega al CSS de este DIV position: relative, hará todo el trabajo.

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.