Cómo establecer la propiedad de altura para SPAN


88

Necesito hacer que el siguiente código sea estirable con una altura predefinida

<style>
.title{
   background: url(bg.gif) no-repeat bottom right;
   height: 25px;
}
</style>

<span class="title">This is title</span>

Pero dado que span es un elemento en línea, la propiedad "height" no funcionará.

Intenté usar div en su lugar, pero se expandirá hasta el ancho del elemento superior. Y el ancho debe ser flexible.

¿Alguien puede sugerir alguna buena solución para esto?

Gracias por adelantado.


1
Debe usar etiquetas de encabezado (h1, h2, h3, ...) para los títulos. Es más semánticamente correcto.
Pickels

1
Sí, tienes razón Pickels. Gracias a todos por su ayuda. Este es mi CSS final. Me funciona muy bien: <style> h4 {display: inline-block; zoom: 1; * pantalla: en línea; margen: 0px; altura: 25px; } </style>
Kelvin

Respuestas:


142

Dale un display:inline-blockCSS, eso debería permitirle hacer lo que quieras.
En términos de compatibilidad: IE6 / 7 será trabajar con esto, como modo de peculiaridades sugiere:

IE 6/7 acepta el valor solo en elementos con una visualización natural: en línea.


Por lo que vale, IE7 no es compatible inline-block.
Scott Cranfill

Notario público. @Scott: No veo eso en W3 - esto es lo que dicen:Note: No versions of Internet Explorer (including IE8) support the property values "inline-table", "run-in", "table", "table-caption", "table-cell", "table-column", "table-column-group", "table-row", or "table-row-group".
casraf

2
@henasraf - @ Scott tiene razón, no puedo usarlo debido a quicks también: quirksmode.org/css/display.html
Nick Craver

2
Cita:IE 6/7 accepts the value only on elements with a natural display: inline.
casraf

1
Ajá, supongo que funcionará si se aplica a un spanentonces. Gracias por la información, henasraf.
Scott Cranfill


13

esto es para que display: inline-block funcione en todos los navegadores:

Curiosamente, en IE (6/7), si activa hasLayout con "zoom: 1" y luego configura la pantalla en línea, se comporta como un bloque en línea.

.inline-block {
    display: inline-block;
    zoom: 1;
    *display: inline;
}

5

Suponiendo que no desea convertirlo en un elemento de bloque, entonces puede intentar:

.title  {
    display: inline-block; /* which allows you to set the height/width; but this isn't cross-browser, particularly as regards IE < 7 */
    line-height: 2em; /* or */
    padding-top: 1em;
    padding-bottom: 1em;
}

Sin embargo, la solución más fácil es tratar simplemente el .titlecomo un elemento en bloque, y el uso de las etiquetas de encabezado correspondiente <h1>a través <h6>.


0

lapso { display: table-cell; height: (your-height + px); vertical-align: middle; }

Para que los tramos funcionen como una celda de tabla (o cualquier otro elemento, para el caso), se debe especificar la altura. Le he dado una altura a los tramos y funcionan bien, pero debes agregar altura para que hagan lo que quieres.


0

Otra opción, por supuesto, es usar Javascript (Jquery aquí):

$('.box1,.box2').each(function(){
    $(this).height($(this).parent().height());
})

-4

¿Por qué necesita un tramo en este caso? Si desea diseñar la altura, ¿podría usar un div? Puede probar un div con display: inline, aunque eso podría tener el mismo problema, ya que de hecho estaría haciendo lo mismo que un span.


3
O, ignore mis divagaciones por completo y use la respuesta de henasraf :)
Seth Petry-Johnson

Los comentarios negativos simplemente desalientan a aquellos que quieren contribuir legítimamente. ¡Para! En su lugar, simplemente ofrezca comentarios constructivos, o probablemente más al grano, su propia opinión sobre el asunto.
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.