Eliminar el relleno para un elemento vacío.

Estoy generando una página para un sitio de portal próximo, y tengo un elemento HTML con contenido opcional. Me gustaría que el elemento no se renderice si está vacío, pero al agregarle algo de relleno, se renderiza. ¿Cómo agrego relleno al contenido, pero solo si el contenido está presente?

.someElement{padding-top: 5px;} 

HTML en cuestión:

 
With padded content

Básicamente, me gustaría que el segundo elemento, arriba, no ocupe espacio. Estoy probando en todos los navegadores principales, utilizando el doctype XHTML 1.1.

Puedes hacer el truco con la pseudo-clase CSS3: vacío

 .someElement { // your standard style } .someElement:empty { display:none; } 

Lamentablemente, el explorador de Internet todavía no es compatible con esa característica. Para todos los otros navegadores lo hará bien …

Dale al elemento un atributo de id . Luego puedes usar Javascript para verificar su propiedad innerHTML una vez que la página se haya cargado. Si innerHTML tiene una longitud de cero, entonces puede establecer su propiedad de visualización en ninguna. Esta página puede ayudar si no conoce su javascript.

Esta sigue siendo una mala forma de jugar. Si sabe que el elemento no se debe representar antes de servir la página, sería mejor omitirlo por completo. Si no quieres omitir el elemento, simplemente escóndelo, luego ocúltalo; style="display: none"

  
With padded content

Añadiendo display: tabla; debe hacer el truco

Si es necesario tener el elemento div.someElement en el HTML, la mejor manera de hacerlo sería agregar un div adicional alrededor del contenido agregado que tiene la propiedad de relleno.

 .someElement > div{padding-top:5px;} 
Content

De lo contrario, haga lo que le dice Pekka o eche un vistazo a javascript y hágalo por usted.

No puedo pensar en una única forma de hacer eso con CSS.

Intentaría decidir si el elemento se representa en el momento en que sé si habrá algún contenido en él. Esa es probablemente la solución más limpia.

Asigne una clase diferente al elemento vacío (digamos someHiddenElement ) cuando genere el contenido. Luego agregue someHiddenElement { display: none } a su hoja de estilo.

En el punto en el que rellena el div opcional, si no hay texto para poner en él, intente cambiar la propiedad de display CSS a none. De acuerdo con esta fuente (y otras), display: none elimina el elemento completamente del documento. No ocupa ningún espacio, a pesar de que el HTML para él todavía está en el código fuente.

No use relleno en el contenedor, use margen en el contenido. Que cuando no hay contenido, el contenedor permanece invisible.