Acelerando el Desarollo HTML con Emmet: Una Guía de Sintaxis
Emmet es una potente herramienta que transforma la manera en que los desarrolladores web escriben código HTML y CSS, permitiendo generar estructuras complejas con una mínima cantidad de pulsaciones de teclado. Esta guía explora las reglas de sintaxis fundamentales de Emmet, diseñada para mejorar la eficiencia y reducir el tiempo de codificación.
Emmet opera como un plugin disponible para la mayoría de los editores de código modernos, incluyendo Visual Studio Code, Sublime Text, Atom, y muchos otros. La instalación generalmente sigue el proceso estándar de añadir extensiones o paquetes desde el gestor de plugins de cada editor.
Un ejemplo rápido de lo que Emmet puede lograr: al escribir la siguiente abreviatura y presionar la tecla Tab, se generará una estructura HTML completa:
div#contenedor>p.titulo+ul.lista>li.item$*3{Elemento $ de la lista}^div#pieDePagina
Esto se expandirá a:
<div id="contenedor">
<p class="titulo"></p>
<ul class="lista">
<li class="item1">Elemento 1 de la lista</li>
<li class="item2">Elemento 2 de la lista</li>
<li class="item3">Elemento 3 de la lista</li>
</ul>
</div>
<div id="pieDePagina"></div>
Reglas de Sintaxis Fundamentales de Emmet
1. Estructura HTML Inicial
Para generar la estructura básica de un documento HTML5, simplemente escribe un signo de exclamación:
!
Se expande a:
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>
2. Identificadores (#) y Clases (.)
Utiliza # para IDs y . para clases, justo después del nombre de la etiqueta o de forma implícita (si la etiqueta se omite, Emmet asume <div> por defecto).
- Elemento con ID:
div#encabezado
Expande a: <div id="encabezado"></div>
- Elemento con Clase:
p.descripcion
Expande a: <p class="descripcion"></p>
3. Nodos Hijos (>), Hermanos (+) y Ascensores (^)
- **Nodos Hijos (
>):** Anida elementos.
nav>ul>li>a
Expande a:
<nav>
<ul>
<li><a href=""></a></li>
</ul>
</nav>
- **Nodos Hermanos (
+):** Crea elementos al mismo nivel.
header+main+footer
Expande a:
<header></header>
<main></main>
<footer></footer>
- **Ascensores (
^):** Sube un nivel en la jerarquía. Cada^asciende un nivel.
div>ul>li^p
Expande a:
<div>
<ul>
<li></li>
</ul>
<p></p>
</div>
Si usas ^^, subirás dos niveles.
4. Repetición (*)
Multiplica un elemento un número específico de veces.
li*5
Expande a:
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
5. Agrupación (())
Usa paréntesis para agrupar bloques de código y definir su nivel de anidamiento independientemente de lo que les rodea.
div>(header>h1+p)+section>article*2
Expande a:
<div>
<header>
<h1></h1>
<p></p>
</header>
<section>
<article></article>
<article></article>
</section>
</div>
6. Atributos ([])
Define atributos personalizados para un elemento. Los valores se especifican dentro de los corchetes, separados por espacios.
a[href="https://google.com" target="_blank" title="Buscador de Google"]
Expande a:
<a href="https://google.com" target="_blank" title="Buscador de Google"></a>
7. Numeración ($)
El signo $ se utiliza para generar números incrementales, especialmente útil con el operador de repetición *.
- Numeración básica:
ul>li.item-$*3
Expande a:
<ul>
<li class="item-1"></li>
<li class="item-2"></li>
<li class="item-3"></li>
</ul>
- Relleno con ceros (ej. para dos dígitos):
div.caja-$$*3
Expande a:
<div class="caja-01"></div>
<div class="caja-02"></div>
<div class="caja-03"></div>
- Inicio de numeración personalizada: Se usa
$@N, dondeNes el número de inicio.
li.producto$@5*3
Expande a:
<li class="producto5"></li>
<li class="producto6"></li>
<li class="producto7"></li>
8. Texto ({})
Inserta contenido de texto dentro de un elemento.
h2{Título de la sección}+p{Este es un párrafo con el elemento $}*2
Expande a:
<h2>Título de la sección</h2>
<p>Este es un párrafo con el elemento 1</p>
<p>Este es un párrafo con el elemento 2</p>
9. Etiquetas Implícitas
Emmet puede inferir el tipo de etiqueta que deseas crear si no la especificas, basándose en el contexto del padre.
- Un
.claseo#idsolo, crea un<div>:
.tarjeta
Expande a: <div class="tarjeta"></div>
- Dentro de
ulool,.clasecrea<li>:
ul>.entrada*3
Expande a:
<ul>
<li class="entrada"></li>
<li class="entrada"></li>
<li class="entrada"></li>
</ul>
- Dentro de
table,tbody,theadotfoot,.clasecrea<tr>. - Dentro de
tr,.clasecrea<td>. - Dentro de
selectooptgroup,.clasecrea<option>.