La pseudo-class :target en CSS para resaltar contenido vinculado mediante enlaces

- 👤 Andrés Cruz

La pseudo-class :target en CSS para resaltar contenido vinculado mediante enlaces

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:

selector target en CsS - ejemplo 4

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