2010-08-14 16 views
5

Esto debería ser increíblemente trivial, pero no lo es. Tengo una altura predefinida para un ancla, y me gustaría colocar el texto en la parte inferior.¡Cómo colocar texto en la parte inferior cuando hay una altura predefinida!

<li><a class="my-text">My Text</a></li> 

Utilicé el siguiente CSS, que no funciona. El texto aún aparece en la parte superior.

a.my-text { 
    background-color:#cccc; 
    height:50px; 
    vertical-align:bottom; 
    width:100px; 
} 

La idea es: Quiero alinear el texto a la parte inferior, pero si hay un texto que es más de una línea, quiero que el flujo a ir a la parte superior, no empuje hacia abajo todo lo demás .. ¿Alguna idea de cómo esto podría lograrse?

Respuesta

2

Esto no puede hacerse usando css y el html que usted proporciona. Si pones un período adicional en el ancla, se puede hacer:

a.my-text { 
    height: 50px; 
    display: block; 
} 
a.my-text span { 
    position: absolute; 
    bottom: 0; 
} 
+0

y a.my-text {display: block} para la altura de "trabajo" ... – darma

+0

quieres decir posición: absoluta. 'posición: relativa; abajo: 0; 'no moverá el elemento a ninguna parte –

+0

Derecha. Soy un tonto. Editado ahora. –

2

Usted puede utilizar bottom:0px con position:absolute de anclaje.

HTML

<li><a class="my-text">My Text</a></li> 

CSS

li { 
    position: relative; 
    height:200px; 
    border: 1px solid red; 
} 

a.my-text { 
    bottom: 0px; 
    border: 1px solid blue; 
    position: absolute; 
    background-color:#cccc; 
    width:100px; 
    height:50px; 
} 

Véase en jsfiddle.

1

Definitivamente no funcionaría, porque los anclajes <a> son etiquetas en línea, por lo tanto, asignarles alturas y anchuras es inútil. La propiedad vertical-align determina el posicionamiento de los elementos en línea con respecto a la línea en la que se encuentran, no la posición vertical del texto. (Ver http://reference.sitepoint.com/css/vertical-align) Por lo que yo entiendo, lo que está solicitando no se puede hacer. Sin embargo, existen alternativas, como se sugirió anteriormente, para lograr efectos similares.

1

El problema con su código es que el ancla no responderá a la altura/ancho porque es un elemento en línea. Si agrega un {display: block} al ancla, ahora es un elemento de bloque, pero, como recuerdo, vertical-align no funciona en el contenido de los elementos del bloque. Esta fue la forma más fácil que pude pensar en usar la pantalla : table-cell.

a.my-text { 
    background-color: #ccc; 
    height: 200px; width: 100px; 
    vertical-align: bottom; 
    display: table-cell; 
} 
+0

Scott, he usado esa solución hace un tiempo, pero causó un resultado extraño para el resto de mi CSS ... ¡volveré a intentarlo y veré qué pasa! – Mohamad

0

Parece que sólo tiene que deshacerse de la regla de la altura en la etiqueta de anclaje y usar algo como padding-top: 45px en el li

+0

No, eso no funcionaría. Porque si el texto de anclaje ocupa más de una línea, entonces el contenido debajo del anclaje se presionaría hacia abajo en lugar de presionar el texto de anclaje. – Mohamad

Cuestiones relacionadas