Cómo hacer un div vacío tomar espacio


Este es mi caso del sistema de cuadrícula 960:

<div class="kundregister_grid_full">
    <div class="kundregister_grid_1">ID</div>
    <div class="kundregister_grid_1">Namn</div>
    <div class="kundregister_grid_1">Anv.Namn</div>
    <div class="kundregister_grid_1">Email</div>
    <div class="kundregister_grid_1">Roll</div>
    <div class="kundregister_grid_1">Aktiv</div>
</div>

Este es mi conjunto de divs, utilizados como una estructura de tabla.

CSS dice lo siguiente:

.kundregister_grid_1 {
    display: inline-block;
    float: left;
    margin: 0; 
    text-align: center;
}
.kundregister_grid_1 {
    width: 140px;
}

No importa el nombre sueco. Quiero que los divs se muestren aunque no tengan valores.

<div class="kundregister_grid_full">
 <div class="kundregister_grid_1">ID</div>
 <div class="kundregister_grid_1"></div>
 <div class="kundregister_grid_1"></div>
 <div class="kundregister_grid_1">Email</div>
 <div class="kundregister_grid_1">Roll</div>
 <div class="kundregister_grid_1">Aktiv</div>
</div>

Así, en este caso no hay 'Namn' y 'Avn.Namn' en las dos columnas. Sin embargo, al ejecutar esto en chrome, se eliminan, y ya no empujan los otros divs en el orden float:left. Así que si tengo categorías en los mismos divs anteriores, entonces los valores se colocarían en una categoría incorrecta.

 81
Author: Nayuki, 2010-08-05

12 answers

Funciona si elimina el flotante. http://jsbin.com/izoca/2/edit

Con flotadores solo funciona si hay algún contenido, por ejemplo &nbsp;

 50
Author: Rito,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-17 21:23:10

Intente agregar &nbsp; a los elementos vacíos.

No entiendo por qué no estás usando un <table> aquí, sin embargo? Harán este tipo de cosas automáticamente.

 45
Author: Pekka 웃,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-05 15:42:56

Ligera actualización a la respuesta @no1cobla. Esto oculta el punto. Esta solución funciona en IE8+.

.class:after
{
    content: '.';
    visibility: hidden;
}
 20
Author: Jonathan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-02 14:02:48

Una solución simple para los divs vacíos flotados es agregar:

  • ancho (o ancho mínimo)
  • altura mínima

De esta manera puede mantener la funcionalidad float y forzarla a llenar el espacio cuando esté vacía.

Utilizo esta técnica en columnas de diseño de página, para mantener cada columna en su posición incluso si las otras columnas están vacías.

Ejemplo:

.left-column
{
   width: 200px;
   min-height: 1px;
   float: left;
}

.right-column
{
    width: 500px;
    min-height: 1px;
    float: left;
}
 19
Author: Engineeroholic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-16 15:35:35

Simplemente agregue un carácter de espacio de ancho cero dentro de un pseudo elemento

.class:after {
    content: '\200b';
}
 10
Author: Blowsie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-06 10:41:51

Esta es una manera:

.your-selector:empty::after {
    content: ".";
    visibility: hidden;
}
 3
Author: vothaison,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-23 09:29:39

Funciona, pero eso no es correcto Creo que la w min-altura: 1px;

 2
Author: S M Mahmodul Hassan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-25 10:17:08

Con el uso del bloque inline se comportará como un objeto inline. así que no se necesitan carrozas para ponerlos uno al lado del otro en una línea. Y de hecho, como dijo Rito, las carrozas necesitan un "cuerpo", como necesitan dimensiones.

Estoy totalmente de acuerdo con Pekka sobre el uso de tablas. Todo el mundo que construye diseños usando div evita las tablas como si fuera una enfermedad. ¡Pero úsalos para datos tablulares! Para eso están. Y en tu caso creo que los necesitas:)

PERO si realmente realmente quieres lo que querer. Hay una forma de hack css. Igual que el hack de flotador.

.kundregister_grid_1:after {  content: ".";  }

Agrega eso y también estás configurado: D (Nota: no funciona en IE, pero eso es solucionable)

 1
Author: no1cobla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-06 13:13:10

¿Por qué no simplemente agregar "min-width" a su clase css?

 1
Author: MrTombola,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-24 22:16:59

Si necesitan flotar, siempre puede establecer la altura mínima en 1px para que no se colapsen.

 1
Author: mmmeff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-04 04:49:21

Usted puede:

Se establece en .kundregister_grid_1:

  • width(o width-min) con height (o min-height)
  • o padding-top
  • o padding-bottom
  • o border-top
  • o border-bottom

O utilizar pseudo-elementos: ::before o ::after con:

  • {content: "\200B";}
  • o {content: "."; visibility: hidden;}.

O poner &nbsp; dentro del elemento vacío, pero esto a veces puede traer efectos inesperados, por ejemplo. en combinación con text-decoration: underline;

 1
Author: simhumileco,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-12 09:52:45

Al crear un conjunto personalizado de etiquetas de diseño, encontré otra respuesta a este problema. Aquí se proporciona el conjunto personalizado de etiquetas y sus clases CSS.

HTML

<layout-table>
   <layout-header> 
       <layout-column> 1 a</layout-column>
       <layout-column>  </layout-column>
       <layout-column> 3 </layout-column>
       <layout-column> 4 </layout-column>
   </layout-header>

   <layout-row> 
       <layout-column> a </layout-column>
       <layout-column> a 1</layout-column>
       <layout-column> a </layout-column>
       <layout-column> a </layout-column>
   </layout-row>

   <layout-footer> 
       <layout-column> 1 </layout-column>
       <layout-column>  </layout-column>
       <layout-column> 3 b</layout-column>
       <layout-column> 4 </layout-column>
   </layout-footer>
</layout-table>

CSS

layout-table
{
    display : table;
    clear : both;
    table-layout : fixed;
    width : 100%;
}

layout-table:unresolved
{
    color : red;
    border: 1px blue solid;
    empty-cells : show;
}

layout-header, layout-footer, layout-row 
{
    display : table-row;
    clear : both;   
    empty-cells : show;
    width : 100%;
}

layout-column 
{ 
    display : table-column;
    float : left;
    width : 25%;
    min-width : 25%;
    empty-cells : show;
    box-sizing: border-box;
    /* border: 1px solid white; */
    padding : 1px 1px 1px 1px;
}

layout-row:nth-child(even)
{ 
    background-color : lightblue;
}

layout-row:hover 
{ background-color: #f5f5f5 }

La clave aquí es el tamaño de la caja y el relleno.

 0
Author: E Net Arch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-27 18:24:17