2009-09-14 19 views
36

Puede ajustar el ancho de los elementos en línea como <span>, y <em><strong>, pero no notará ningún efecto hasta que la posición de ellos.Ajuste de la anchura de los elementos en línea

a) ¿Pensé que no se puede establecer el ancho de un elemento alineado en línea?

b) Suponiendo que se puede establecer el ancho - no notaremos ningún efecto (por lo tanto, el ancho que especifiquemos) hasta que coloquemos el elemento en línea. Posición cómo/dónde?

c) ¿Por qué el ancho de los elementos en línea es aparente solo cuando los "posicionamos"?

+0

Duplicado relacionado/posible de: http://stackoverflow.com/questions/1085980/inline-elements-with-width?rq=1 (pero esta es la mejor pregunta). –

Respuesta

11

Como otros han mencionado, el establecimiento de la anchura (o alguna otra propiedad relacionado con la posición) de un elemento en línea hará que el navegador a continuación, mostrar el elemento como un elemento de bloque.

Se puede declarar explícitamente este tipo de comportamiento a través del uso de CSS display propiedad. Los ajustes más comunes son display: inline (por defecto), display: block y display: none.
Una referencia completa de la propiedad display está disponible here.

Sin embargo, cabe señalar que el HTML 4.01 specification desalienta el uso de "anulando la interpretación convencional de elementos HTML":

Las hojas de estilo proporcionan los medios para especificar la prestación de arbitrarias elementos, incluyendo si un elemento se representa como bloque o en línea. En algunos casos, como un estilo en línea de elementos de la lista, esto puede ser adecuada, pero en términos generales, autores no se animan a anulando el interpretación convencional de los elementos HTML en esta manera.

+4

"* establecer el ancho [..] de un elemento en línea hará que el navegador muestre el elemento como un bloque *". ¿Estás seguro? – Oriol

+14

"establecer el ancho ... hará que el navegador muestre el elemento como un elemento de bloque" - Eso no tiene sentido. Puede establecer el ancho, pero no se aplicará al elemento. – Quentin

14

a) La anchura de un elemento en línea es ignorado

b, c) Cuando "posición" un elemento en línea (supongo que significa usar posición: absoluta), en realidad se está por lo que es un bloque elemento, cuya anchura es interpretado por el navegador

+0

Genial. Es muy importante saber esto cuando no tenemos control sobre el HTML como en los formularios generados por Umbraco Contour. ¡Gracias amigo! –

2

Creo que es debido al hecho de que cuando se especifica los atributos de la posición de un elemento "en línea", el elemento ya no está siendo representada línea y en su lugar está siendo tratado como una elemento de nivel de bloque.

7

Eso significa básicamente que si se aplica a position: absolute elemento en línea, se convertirá en elemento de bloque y el ancho de ganancia.

42

También hay la opción de display: inline-block, que podría darle lo mejor de ambos mundos. Sin embargo, ten cuidado con la compatibilidad entre navegadores.

+0

lo comprobará. Gracias – SourceC

+4

Muy bien! Aquí hay una buena [matriz de compatibilidad] (http://www.quirksmode.org/css/display.html). Hoy en día, 'display: inline-block' es casi seguro de usar –

+0

Aunque funciona, sigue siendo un comportamiento bastante jonrón/inesperado al insertar elementos dinámicamente en él. No estoy seguro por qué. – bobobobo

0

a. El ancho de los elementos en línea se ignora.

b.De hecho, puede aplicar ancho al elemento si establece display: inline-block;, pero para ver los resultados también debe aplicar overflow: hidden;.

tener todos los beneficios de la línea de bloques y tipos que se pueden utilizar fragmento de seguimiento:

display: inline-block; width: 50%; // or px, em, etc. overflow: hidden; text-overflow: ellipsis;

En este caso usted puede manejar el ancho y tienen función de puntos suspensivos texto.

0

El elemento en línea no puede tener ancho. El ancho es una propiedad del elemento de bloque. Por lo tanto, para usar la propiedad del ancho sobre un elemento en línea o un elemento con visualización, muestre el conjunto en línea como bloque en línea, por ejemplo: display: inline-block;

Cuestiones relacionadas