La pseudo-class :target en CSS para resaltar contenido vinculado mediante enlaces
- 👤 Andrés Cruz
En esta entrada veremos cómo podemos emplear la pseudo-class o selector :target en nuestros diseños web; esta pseudo-class es otra de las muchas pseudo-classes CSS que existen y algunas de ellas que hemos visto:
Este selector o pseudo-class es empleado para seleccionar o dar estilo a un único elemento cuyo id coincida en alguno de los elementos HTML; en otras palabras el selector :target es empleado para dar estilo al elemento HTML actualmente activado.
Las URLs precedidas por el carácter # seguido de un identificador, permite enlazar elementos dentro del documento HTML; veamos un ejemplo:
Si quisiéramos enlazar el siguiente elemento a través de un enlace:
<h2 id="cuatro">Ejemplo cuatro</h2>Tendríamos que crear un enlace como el siguiente:
<a href="#cuatro"">Empleando la pseudo-class :target para aplicar un overlay</a>En donde el texto siguiente al carácter #, corresponde al identificador del elemento.
La pseudo-class :target en la práctica
La pseudo-class :target es muy útil cuando realizamos clics en los enlaces para activar las secciones en un documento; indicar la sección seleccionada de una manera más visual para atraer la atención del usuario hacia un área de interés; de clics en los siguientes enlaces:
En el ejemplo anterior estamos creando una región de interés a través de la propiedad border según el elemento activado a través del enlace clickeado por el usuario.
El CSS del ejemplo anterior es el siguiente:
.parte:target {
border: 2px solid #F00;
}
Realmente sencillo y no requiere alguna explicación extra; en cuanto al HTML se divide en dos bloques:
El menú que referencia cada uno de los bloques de textos en el documento:
<nav>
<ul>
<li><a href="#parte1">Parte 1</a></li>
<li><a href="#parte2">Parte 2</a></li>
<li><a href="#parte3">Parte 3</a></li>
<li><a href="#parte4">Parte 4</a></li>
</ul>
</nav>
Y los bloques de texto del documento:
<div id="parte1" class="parte">
<span><a href="">X</a>
<h1>Parte 1</h1>
<p>Esto es un monto de texto sin sentido que tiene la finalidad
de llenar espacio para mostrar un contenido.</p>
...</span>
</div>
<div id="parte2" class="parte">
<span><a href="">X</a>
<h1>Parte 2</h1>
<p>Esto es un monto de texto sin sentido que tiene la finalidad
de llenar espacio para mostrar un contenido.</p>
...</span>
</div>
<div id="parte3" class="parte">
<span><a href="">X</a>
<h1>Parte 3</h1>
<p>Esto es un monto de texto sin sentido que tiene la finalidad
de llenar espacio para mostrar un contenido.</p>
...</span>
</div>
<div id="parte4" class="parte">
<span><a href="">X</a>
<h1>Parte 4</h1>
<p>Esto es un monto de texto sin sentido que tiene la finalidad
de llenar espacio para mostrar un contenido.</p>
...</span>
</div>
El HTML mostrado anteriormente no tendrá variación alguna en los experimentos (exceptuando el último) presentados en esta entrada.
La pseudo-class :target y las animaciones
Podemos emplear las animaciones en CSS para crear cambios más sutiles y no persistentes en el tiempo:
Especificamos la propiedad de la animación:
.parte:target {
animation: brillar 1s ease-out;
}
Las propiedades definidas en el @keyframes simplemente cambian el color de fondo:
@keyframes brillar {
0% { background-color: rgba(255,0,0,0.2); }
100% { background-color: #FFFFFF; }
}
La pseudo-class :target y las transiciones
En este tercer ejemplo veremos cómo emplear el selector en conjunto con las transiciones en CSS; por defecto ocultaremos todos los bloques de contenidos a través de la propiedad opacity establecida en cero:
.parte {
/*otras reglas*/
opacity: 0;
transition: opacity 1s;
}
Al dar clic sobre un enlace mostraremos el bloque de contenido progresivamente empleando la siguiente regla que aumenta la opacidad del bloque activado:
.parte:target {
opacity: 1;
}
Empleando la pseudo-class :target para aplicar un overlay
Como último ejemplo, veremos como crear un sencillo especie de modal al activar el bloque de texto:

Lo principal que debes de tener en cuenta de este experimento que podrás ver a continuación:
Es que sobrescribimos por completo el comportamiento del bloque de texto activado; es decir, se altera su posición con respecto al resto del documento con la propiedad position y así como el tamaño del mismo que se configura para que ocupe el 100% de la pantalla:
.parte:target {
background: rgba(0, 0, 0, 0.5);
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
border-radius: 5px;
box-shadow: 0 0 15px #666;
}Y el contenido a mostrar embebida dentro del elemento span se ubica en el medio de la pantalla:
.parte:target span {
background: #FFF;
padding: 10px;
margin: 20% auto 0 auto;
display: block;
width: 50%;
height: auto;
}
Las demás reglas son de fácil comprensión y permiten definir una mayor estética al experimento.
Acepto recibir anuncios de interes sobre este Blog.
Este selector o pseudo-class es empleado para seleccionar o dar estilo a un único elemento cuyo id coincida en alguno de los elementos HTML.
| 👤 Andrés Cruz