RSS Twitter @

CSS2 Trick: Cambiar estilo de un elemento hermano

Las últimas semanas he estado trabajando muchísimo con CSS, Javascript (con Jquery) y XHTML. En el camino me he preguntado si hay formas de realizar ciertas cosas de manera declarativa, es decir, solo escribiendo lo que se debería hacer, sin dar una explicación de cómo hacerlo.

En particular, lo que intenté hacer es mostrar un párrafo (modificador p) cuando el usuario se posiciona en un link (modificador a:hover), en un html como el siguiente:

<div id="#example">
    <a href="#">show paragraph</a>
    <p>This paragraph must be shown
    when the link is in focus</p>
</div>

Lo usual hubiese sido escribir un pequeño codigo en Javascript (Jquery) como el siguiente:

$('#link').focus(function() {
    $('#paragraph').show();
});
$('#link').unfocus(function() {
    $('#paragraph').hide();
});

En el afán de hacerlo declarativo, logré deducir el siguiente estilo usando CSS 2, obteniendo exactamente el mismo comportamiento:

#example p { display:none; }
#example a:hover + p { display: block; }

La magia está en el selector “+”, (disponible en CSS 2) que permite modificar el estilo de un selector hermano inmediatamente después de otro selector. Por ejemplo, en este caso permite editar el selector p que es hermano del selector a:hover. El truco está en que el selector a:hover está disponible solo cuando el link está en foco :) .

El resultado es el siguiente:

show paragraph

This paragraph must be shown when the link is in focus

Tags: , ,

One comment

Leave a comment