<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: César Ramez</title>
    <description>The latest articles on Forem by César Ramez (@cesar_ramez).</description>
    <link>https://forem.com/cesar_ramez</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F749783%2F73ab7969-2c72-4f31-8b30-01679210905b.jpeg</url>
      <title>Forem: César Ramez</title>
      <link>https://forem.com/cesar_ramez</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/cesar_ramez"/>
    <language>en</language>
    <item>
      <title>Coordenadas de elementos con JS.</title>
      <dc:creator>César Ramez</dc:creator>
      <pubDate>Wed, 15 Nov 2023 05:53:41 +0000</pubDate>
      <link>https://forem.com/cesar_ramez/coordenadas-de-elementos-con-js-5am</link>
      <guid>https://forem.com/cesar_ramez/coordenadas-de-elementos-con-js-5am</guid>
      <description>&lt;p&gt;El método &lt;code&gt;getBoundingClientRect()&lt;/code&gt; devuelve información de un elemento sobre su tamaño y posición relativa respecto al viewport. Este método es un objeto de la clase interna &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMRect"&gt;DOMRect&lt;/a&gt; que como parte de sus propiedades, tenemos a &lt;code&gt;top/bottom&lt;/code&gt; que actúan como coordenadas en &lt;strong&gt;Y&lt;/strong&gt;, y &lt;code&gt;left/right&lt;/code&gt; como coordenadas en &lt;strong&gt;X&lt;/strong&gt;.&lt;br&gt;
Podemos obtener las coordenadas de cualquier elemento HTML con JavaScript, por ejemplo:&lt;/p&gt;

&lt;p&gt;Tenemos el siguiente HTML:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;main&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;section&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h1&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"title"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Hello World!&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/section&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/main&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ahora obtenemos las coordenadas del elemento &lt;code&gt;h1&lt;/code&gt; respecto a su eje &lt;strong&gt;Y&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.title&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;elementCoordinates&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getBoundingClientRect&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;top&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;elementCoordinates&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si añades más contenido en el documento a modo de que exista un scroll, te darás cuenta de que conforme scrolleas, el resultado será diferente, ya que este valor se obtiene a partir de qué tan cerca o alejado está el elemento del viewport. Para entenderlo mejor, veamos la siguiente imagen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9GkezKtK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nepeu8bfrmi1p2uuce87.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9GkezKtK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nepeu8bfrmi1p2uuce87.png" alt="Illustrative image of the method getBoundingClientRect()" width="800" height="631"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ahora bien, ¿para qué nos podría servir las coordenadas de un elemento... 🤔?&lt;/p&gt;

&lt;p&gt;Imagina que en lugar de obtener las coordenadas de un elemento &lt;code&gt;h1&lt;/code&gt;, obtienes las coordenadas de un elemento contenedor, es decir, una &lt;code&gt;section&lt;/code&gt;, &lt;code&gt;article&lt;/code&gt;, &lt;code&gt;div&lt;/code&gt;, etc. Al mismo tiempo, obtienes el tamaño del viewport desde donde sea visualizada tu página y que a partir de que ciertos elementos HTML tengan una mayor coordenada que el tamaño del viewport obtenido, haga cierta acción, como por ejemplo, una animación de scroll... 😱&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NO SIEMPRE NECESITAS INSTALAR DEPENDENCIAS&lt;/strong&gt; para hacer estas animaciones. Con el método &lt;code&gt;getBoundingClientRect&lt;/code&gt; y unas cuantas propiedades más de JavaScript, puedes conseguirlo. Y lo mejor de todo, con muy pocas líneas de código! ¿Quieres ver una demo? Da &lt;a href="https://codepen.io/ramez-cesar/pen/OJdmWXY"&gt;click aquí&lt;/a&gt; para verlo en función. 😉&lt;/p&gt;

&lt;p&gt;Si te gustó el post o tienes algún comentario, cuéntame en &lt;a href="https://twitter.com/ramez_cesar"&gt;Twitter&lt;/a&gt;. 😀&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>programming</category>
      <category>frontend</category>
      <category>learning</category>
    </item>
    <item>
      <title>NodeList vs Array</title>
      <dc:creator>César Ramez</dc:creator>
      <pubDate>Mon, 06 Mar 2023 04:35:47 +0000</pubDate>
      <link>https://forem.com/cesar_ramez/nodelist-vs-array-87</link>
      <guid>https://forem.com/cesar_ramez/nodelist-vs-array-87</guid>
      <description>&lt;p&gt;Cuando usamos una misma clase para múltiples elementos de HTML, podemos acceder a todos estos nodos mediante la propiedad &lt;code&gt;document.querySelectorAll('.class-name')&lt;/code&gt;. Esto nos mostrará un tipo de dato llamado &lt;strong&gt;&lt;em&gt;NodeList&lt;/em&gt;&lt;/strong&gt; el cual, a su vez, pese a mostrar todos los elementos que coinciden con la clase enviado a &lt;code&gt;querySelectorAll&lt;/code&gt; como un array, no es lo mismo que un array “tradicional” como el que conocemos de toda la vida…&lt;/p&gt;

&lt;p&gt;Esta diferencia se basa en que &lt;strong&gt;&lt;em&gt;NodeList&lt;/em&gt;&lt;/strong&gt; aunque podría iterarse sobre él usando &lt;code&gt;forEach&lt;/code&gt;, no es compatible con todos los métodos con los que podría usarse en un array común. Por ejemplo, con &lt;strong&gt;&lt;em&gt;NodeList&lt;/em&gt;&lt;/strong&gt; no podríamos usar métodos como &lt;code&gt;reduce&lt;/code&gt;, &lt;code&gt;map&lt;/code&gt;, &lt;code&gt;filter&lt;/code&gt;, &lt;code&gt;some&lt;/code&gt;, etc. &lt;/p&gt;

&lt;p&gt;Siempre que usemos &lt;code&gt;querySelectorAll&lt;/code&gt; para iterar sobre varios nodos que manejan una clase en común, podemos convertir a &lt;strong&gt;&lt;em&gt;NodeList&lt;/em&gt;&lt;/strong&gt; en un array tradicional usando la propiedad Spread Operator que ofrece ES6. De hecho, siempre que se trabaje con &lt;strong&gt;&lt;em&gt;NodeList&lt;/em&gt;&lt;/strong&gt; es recomendable pasarlo a un array tradicional. Esto se debe a que los motores de JS en el navegador, principalmente V8 de Chrome, están optimizados para trabajar con arrays.&lt;/p&gt;

&lt;p&gt;Accediendo a múltiples nodos con &lt;code&gt;querySelectorAll&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;nodeList&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;querySelectorAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;div&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Resultado de ejemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;NodeList&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;container&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;group&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;form&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;invalid&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;feedback&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Convertir NodeList a un array tradicional:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;nodeListAsArray&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[...&lt;/span&gt;&lt;span class="nx"&gt;nodeList&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Si te gustó el post o tienes algún comentario, cuéntame en &lt;a href="https://twitter.com/ramez_cesar"&gt;Twitter&lt;/a&gt;. 😀&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>programming</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Añade un gradiente a tus imágenes con CSS.</title>
      <dc:creator>César Ramez</dc:creator>
      <pubDate>Fri, 28 Oct 2022 01:28:57 +0000</pubDate>
      <link>https://forem.com/cesar_ramez/anade-un-gradiente-a-tus-imagenes-con-css-2nc4</link>
      <guid>https://forem.com/cesar_ramez/anade-un-gradiente-a-tus-imagenes-con-css-2nc4</guid>
      <description>&lt;p&gt;Algunas veces necesitaremos agregar un gradiente a nuestras imágenes ya sea a modo de efecto (con un hover) o simplemente porque queremos añadir un texto encima de la imagen.&lt;/p&gt;

&lt;p&gt;Agregar este efecto que comienza con un tono oscuro y que posteriormente se vaya degradando, nos ayudaría contrastar el texto.&lt;/p&gt;

&lt;p&gt;Para lograr esto, primero tendremos que tener nuestra imagen dentro de un contenedor ya sea con una etiqueta &lt;code&gt;div&lt;/code&gt; o &lt;code&gt;figure&lt;/code&gt; como se muestra a continuación:&lt;/p&gt;

&lt;p&gt;HTML&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"container-image"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para el código CSS, podemos hacer las modificaciones que queramos desde cambiar el color de fondo, la dirección del degradado o incluso agregar más colores.&lt;/p&gt;

&lt;p&gt;CSS&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.container-image&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;relative&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.container-image&lt;/span&gt; &lt;span class="nt"&gt;img&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.container-image&lt;/span&gt;&lt;span class="nd"&gt;::after&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;""&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;200px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background-image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;linear-gradient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="nb"&gt;top&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#22577a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;transparent&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Puedes ver el código en función en &lt;a href="https://codesandbox.io/s/agregando-gradiente-a-una-imagen-con-css-qqs91b?file=/style.css"&gt;Codesandbox&lt;/a&gt; o en &lt;a href="https://codepen.io/ramez-cesar/pen/oNyXLjW?editors=1100"&gt;Codepen&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Si te gustó el post o tienes algún comentario, cuéntame en &lt;a href="https://twitter.com/ramez_cesar"&gt;Twitter&lt;/a&gt;. 😀&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>css</category>
      <category>html</category>
      <category>programming</category>
    </item>
    <item>
      <title>:first-child en CSS</title>
      <dc:creator>César Ramez</dc:creator>
      <pubDate>Fri, 04 Feb 2022 17:57:19 +0000</pubDate>
      <link>https://forem.com/cesar_ramez/first-child-en-css-25kg</link>
      <guid>https://forem.com/cesar_ramez/first-child-en-css-25kg</guid>
      <description>&lt;p&gt;La pseudoclase &lt;code&gt;:first-child&lt;/code&gt; nos ayuda a dar estilos al primer elemento de una lista de selectores. Por ejemplo, imagina tener una lista en HTML con &lt;code&gt;ul&lt;/code&gt;-&lt;code&gt;li&lt;/code&gt; o simplemente una lista de los mismos selectores como enlaces (etiquetas &lt;code&gt;a&lt;/code&gt;) o párrafos (etiquetas &lt;code&gt;p&lt;/code&gt;) y en cualquiera de estos casos buscamos pintar, por ejemplo, al primero elemento hijo de esta lista en color rojo. Esto lo lograremos agregando la pseudoclase &lt;code&gt;:first-child&lt;/code&gt; a nuestro selector.&lt;/p&gt;

&lt;p&gt;HTML&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;ul&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;Primer hijo&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;Segundo hijo&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;Tercer hijo&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;CSS&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;ul&lt;/span&gt; &lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="nd"&gt;:first-child&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si te gustó el post, cuéntame en &lt;a href="https://twitter.com/ramez_cesar"&gt;Twitter&lt;/a&gt; 😀&lt;/p&gt;

</description>
      <category>css</category>
      <category>html</category>
      <category>spanish</category>
    </item>
  </channel>
</rss>
