Emmet (Ex Zen Coding)

El fin de semana pasado, tuve un superplanazo de sábado tarde… ir a casa de una amigo a aprender Angular.js (como comprendereis ante esta proposición, que se quiten los findes de juergas, cines o aperitivos hasta la cena).

En fin, lo sorprendente de mis sesión de sábado fue ver a mis compañeros utilizar Sublime Text o Brackets ¡sin Emmet...! pensaba que este pluging era de los más utilizados para picar código html y css, pero ninguno de mis compañeros lo usaba. Yo desde que lo conocí, se convirtió en amor a primera vista… y editor o lugar en el trabajo lo primero que hago es instalarlo.

Para hacerlo en Sublime Text (que es editor que yo utilizo, no por que sea mejor o peor que otro, sino por que al final me resulta muy sencillo y útil a la hora precisamente de instalar cualquier tipo de pluging y que funcione realmente bien), como siempre nos iremos a Package Control: Install Package:

Package Control en Sublime Text

Y allí buscaremos Emmet:

Lo instalaremos y ya podremos volar a la hora picar nuestro código…

Lo primero a la hora de hacer un proyecto nuevo, es crearnos la estructura básica, lo haremos poniendo html:5 y pulsando tabulador… y por arte de magia nos aparecerá:

<!DOCTYPE html>
<html lang=”en”>
  <head>
    <meta charset=”UTF-8”>
    <title>Document</title>
  </head>
  <body>
  </body>
</html>

Eso si, muy importante que Sublime Text sepa que estamos trabajando con un archivo html, bien por que lo hayamos guardado previamente con esta extensión, o bien porque hayamos definido nuestro tipo de código en la parte inferior de la ventana.

Para ir agregando etiquetas, podremos ir poniendo el nombre la etiqueta sin signos <> y pulsar de nuevo tabulador (Tab).

<!DOCTYPE html>
<html lang=”en”> <head> <meta charset=”UTF-8”> <title>Document</title> </head> <body>
  header (y pulsamos tabulador)
</body>
</html>
 
y obtendremos
 
 <!DOCTYPE html>
<html lang=”en”> <head> <meta charset=”UTF-8”> <title>Document</title> </head> <body>
  <header></header>
  </body>
</html>

Bien hasta aquí pensarais que esto no es suficiente para que merezca la pena instalar este pluging. Bueno ahora vamos a crearnos un menú dentro del header:

<header>
 nav#menuPrincipal>ul.menu>li*3>a{Item $}
</header>

y “voila”

aquí tenemos el resultado:

<nav id=”menuPrincipal”>
  <ul class=”menu”>
    <li><a href=””>Item 1</a></li>
    <li><a href=””>Item 2</a></li>
    <li><a href=””>Item 3</a></li>
  </ul>
</nav>

Si analizamos nuestro código vemos que vamos poniendo todas nuestras etiquetas seguidas y podemos ir anidando unas dentro de otras gracias al símbolo > (ejemplo nav>ul> nos creará un ul dentro del nav).

Por otro lado podemos añadirle clases o ids a nuestras etiquetas directamente (nav#menuPrincipal estaremos diciendo a nuestro nav que queremos que tenga el id menuPrincipal).

Podemos también multiplicar el número de etiquetas (li*3 nos creará tres etiquetas li dentro del ul).

Por último dentro de nuestro li vamos a anidar en cada uno de ellos un enlace con la etiqueta a y cada una de ellas va a tener anidado el texto Item $ (para que lo añada a cada etiquete lo tenemos que poner entre {} y añadiendo el # lo que conseguimos es que nos lo numere.

¡Fantástico!

Continuemos construyendo nuestra página web… después del header podemos añadir lo siguiente:

section>article*3>h3>lorem5^p>lorem

Al pulsar tabulador veremos los siguiente:

<section>
  <article>
    <h3>Lorem ipsum dolor sit amet.</h3>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Perspiciatis totam maiores, odio illum vero deserunt reprehenderit commodi dicta iste sapiente repellendus eligendi, possimus sit cum nemo mollitia a quisquam? Eligendi.</p>
  </article>
  <article>
    <h3>Culpa incidunt ullam praesentium dolore.</h3>
    <p>Quidem perferendis fugiat inventore pariatur, omnis, odit! Sequi voluptatem cum blanditiis. Et laudantium quis sed officiis voluptate obcaecati similique cupiditate reiciendis tempore harum tenetur, saepe, sunt. Recusandae, laboriosam voluptates vero?</p>
  </article>
  <article>
    <h3>Culpa incidunt ullam praesentium dolore.</h3>
    <p>Quidem perferendis fugiat inventore pariatur, omnis, odit! Sequi voluptatem cum blanditiis. Et laudantium quis sed officiis voluptate obcaecati similique cupiditate reiciendis tempore harum tenetur, saepe, sunt. Recusandae, laboriosam voluptates vero?</p>
  </article>
</section>

En principio es bastante similar a lo anterior, vemos sólo las novedades:

Con lorem5 lo que hacemos es crearnos un texto lorem ipsum de sólo 5 palabras. Sin embargo en p>lorem creará lo que viene por defecto en Emmet que son 30.

la principal novedad es si queremos crar un elemento hermano a otros (en lugar de hijo como hemos hecho hasta ahora con >), pues lo haremos con ^ (ejemplo h3^p).

Bueno sólo deciros que tenéis toda documentación en su página: emmet.io

Resumen de los operadores:

  • > crea elementos hijo
  • + Crea elementos hermanos
  • ^ se puede subir un nivel por encima
  • * nos permite multiplicar el numero de elementos definidos
  • () para agrupar un numero de operaciones de elementos dentro de otro elemento. Ejemplo: div >(header>ul>li* 2 >a)+footer>p
  • # añade id a nuestra etiqueta
  • . añade la clase a nuestro etiqueta
  • [attr] podemos personalizar los atributos de una etiqueta (ejemplo: td[title= “Hello world!” colspan= 3 ] resultaría < td title = “Hello world!” colspan = “3” > </ td >)
  • $ Con la multiplicación * podemos repetir elementos, pero con $ podemos numerarlos
  • {} nos permite añadir texto a una etiqueta

Es importante nunca dejar espacios dentro de la sintaxis de Emmet, ya que eso lo identifica como un simbolo de detención y no realizará las operaciones anteriores al espacio.

1 Comment