<?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: Joel Aviles</title>
    <description>The latest articles on Forem by Joel Aviles (@appithe).</description>
    <link>https://forem.com/appithe</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%2F823051%2F52d12b79-ba64-40e5-9e07-110f0e441cdc.png</url>
      <title>Forem: Joel Aviles</title>
      <link>https://forem.com/appithe</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/appithe"/>
    <language>en</language>
    <item>
      <title>Como hacer un overlay con degradado de abajo hacia arriba usando css y tailwind</title>
      <dc:creator>Joel Aviles</dc:creator>
      <pubDate>Thu, 27 Oct 2022 03:29:45 +0000</pubDate>
      <link>https://forem.com/appithe/como-hacer-un-overlay-con-degradado-de-abajo-hacia-arriba-usando-css-y-tailwind-2o28</link>
      <guid>https://forem.com/appithe/como-hacer-un-overlay-con-degradado-de-abajo-hacia-arriba-usando-css-y-tailwind-2o28</guid>
      <description>&lt;p&gt;Para este ejemplo estaré usando imágenes del api de &lt;a href="https://picsum.photos/"&gt;lorem picsum&lt;/a&gt; y la etiqueta &amp;lt;picture&amp;gt;, para la nomenclatura clases en css usare BEM y las utilidades &lt;a href="https://tailwindcss.com/docs/installation"&gt;Tailwind&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://codi.link/PHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLnRhaWx3aW5kY3NzLmNvbSI+PC9zY3JpcHQ+Cgo8ZGl2IGNsYXNzPSJ3LXNjcmVlbiBoLXNjcmVlbiBmbGV4IGZsZXgtd3JhcCBmbGV4LXJvdyBnYXAtMTAganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIj4KICA8IS0tIG92ZXJsYXkgZW4gdGFpbHdpbmQgLS0+CiAgPHBpY3R1cmUKICAgIGNsYXNzPSJsZzp3LTgwIG1kOnctNDggdy00MCBsZzpoLTk2IG1kOmgtNjQgaC00OCByZWxhdGl2ZSBiZWZvcmU6bGc6dy04MCBiZWZvcmU6bWQ6dy00OCBiZWZvcmU6dy00MCBiZWZvcmU6bGc6aC05NiBiZWZvcmU6bWQ6aC02NCBiZWZvcmU6aC00OCBiZWZvcmU6YWJzb2x1dGUgYmVmb3JlOmJnLWdyYWRpZW50LXRvLXQgYmVmb3JlOmZyb20tc2xhdGUtODAwIj4KICAgIDxpbWcgY2xhc3M9ImxnOnctODAgbWQ6dy00OCB3LTQwIGxnOmgtOTYgbWQ6aC02NCBoLTQ4IG9iamVjdC1jb3ZlciIgc3JjPSJodHRwczovL3BpY3N1bS5waG90b3MvaWQvMjM3LzMwMC80MDAiIGFsdD0icGVycm8iPgogICAgPGgxIGNsYXNzPSJhYnNvbHV0ZSBsZzpib3R0b20tNCBtZDpib3R0b20tMyBib3R0b20tMiBsZzpsZWZ0LTMgbWQ6bGVmdC0yIGxlZnQtMSB0ZXh0LTJ4bCB0ZXh0LWdyYXktMzAwIj5UYWlsd2luZDwvaDM+CiAgPC9waWN0dXJlPgoKICA8IS0tIG92ZXJsYXkgZW4gY3NzIC0tPgogIDxwaWN0dXJlIGNsYXNzPSJvdmVybGF5Ij4KICAgIDxpbWcgY2xhc3M9Im92ZXJsYXktLWltYWdlIiBzcmM9Imh0dHBzOi8vcGljc3VtLnBob3Rvcy9pZC8yMzgvMzAwLzQwMCIgYWx0PSJwZXJybyI+CiAgICA8aDEgY2xhc3M9Im92ZXJsYXktLXRleHQiPkNzczwvaDE+CiAgPC9waWN0dXJlPgo8L2Rpdj4=%7COnJvb3QgewogIC0tb3ZlcmxheS13aWR0aDogMTUwcHg7CiAgLS1vdmVybGF5LWhlaWdodDogMjAwcHg7CiAgLS1vdmVybGF5LXdpZHRoX21kOiAyNTBweDsKICAtLW92ZXJsYXktaGVpZ2h0X21kOiAzNTBweDsKICAtLW92ZXJsYXktd2lkdGhfbGc6IDMwMHB4OwogIC0tb3ZlcmxheS1oZWlnaHRfbGc6IDQwMHB4Owp9Cgoub3ZlcmxheSB7CiAgd2lkdGg6IHZhcigtLW92ZXJsYXktd2lkdGgpOwogIGhlaWdodDogdmFyKC0tb3ZlcmxheS1oZWlnaHQpOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLm92ZXJsYXk6OmJlZm9yZSB7CiAgY29udGVudDogJyc7CiAgd2lkdGg6IHZhcigtLW92ZXJsYXktd2lkdGgpOwogIGhlaWdodDogdmFyKC0tb3ZlcmxheS1oZWlnaHQpOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCAjMWUyOTNiLCAjZmZmZmZmMDApOwp9Cgoub3ZlcmxheS0taW1hZ2UgewogIHdpZHRoOiB2YXIoLS1vdmVybGF5LXdpZHRoKTsKICBoZWlnaHQ6IHZhcigtLW92ZXJsYXktaGVpZ2h0KTsKfQoKLm92ZXJsYXktLXRleHQgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBjb2xvcjogI2QxZDVkYjsKICBmb250LXNpemU6IDEuNXJlbTsgLyogMjRweCAqLwogIGxpbmUtaGVpZ2h0OiAycmVtOyAvKiAzMnB4ICovCiAgbGVmdDogMC43NXJlbTsgLyogMTJweCAqLwogIGJvdHRvbTogMXJlbTsgLyogMTZweCAqLwp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsgCiAgLm92ZXJsYXkgewogICAgd2lkdGg6IHZhcigtLW92ZXJsYXktd2lkdGhfbWQpOwogICAgaGVpZ2h0OiB2YXIoLS1vdmVybGF5LWhlaWdodF9tZCk7CiAgfQoKICAub3ZlcmxheTo6YmVmb3JlIHsKICAgIHdpZHRoOiB2YXIoLS1vdmVybGF5LXdpZHRoX21kKTsKICAgIGhlaWdodDogdmFyKC0tb3ZlcmxheS1oZWlnaHRfbWQpOwogIH0KCiAgLm92ZXJsYXktLWltYWdlIHsKICAgIHdpZHRoOiB2YXIoLS1vdmVybGF5LXdpZHRoX21kKTsKICAgIGhlaWdodDogdmFyKC0tb3ZlcmxheS1oZWlnaHRfbWQpOwogIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkgeyAKICAub3ZlcmxheSB7CiAgICB3aWR0aDogdmFyKC0tb3ZlcmxheS13aWR0aF9sZyk7CiAgICBoZWlnaHQ6IHZhcigtLW92ZXJsYXktaGVpZ2h0X2xnKTsKICB9CgogIC5vdmVybGF5OjpiZWZvcmUgewogICAgd2lkdGg6IHZhcigtLW92ZXJsYXktd2lkdGhfbGcpOwogICAgaGVpZ2h0OiB2YXIoLS1vdmVybGF5LWhlaWdodF9sZyk7CiAgfQoKICAub3ZlcmxheS0taW1hZ2UgewogICAgd2lkdGg6IHZhcigtLW92ZXJsYXktd2lkdGhfbGcpOwogICAgaGVpZ2h0OiB2YXIoLS1vdmVybGF5LWhlaWdodF9sZyk7CiAgfQp9CgoKCgoKCgoKCgoKCgoKCgoKCg==%7C"&gt;Demo en codi.link&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Css
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1️⃣ HTML
&lt;/h3&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;picture&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"overlay"&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;class=&lt;/span&gt;&lt;span class="s"&gt;"overlay__image"&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://picsum.photos/id/238/300/400"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"perro"&lt;/span&gt;&lt;span class="nt"&gt;&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;"overlay__text"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Css&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/picture&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2️⃣ CSS
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Variables css
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="py"&gt;--overlay-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;150px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="py"&gt;--overlay-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="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Clase overlay
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.overlay&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="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--overlay-width&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="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--overlay-height&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;.overlay&lt;/span&gt;&lt;span class="nd"&gt;::before&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="s2"&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="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--overlay-width&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="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--overlay-height&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;background&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;#1e293b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#ffffff00&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;h4&gt;
  
  
  Clase overlay__image
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.overlay__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="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--overlay-width&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="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--overlay-height&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;h4&gt;
  
  
  Clase overlay__text
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.overlay__text&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;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#d1d5db&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.5rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* 24px */&lt;/span&gt;
    &lt;span class="nl"&gt;line-height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* 32px */&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.75rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* 12px */&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;1rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* 16px */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3️⃣ Resultado
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sgscmQkX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zkiy9hhubp30mrcpsp4b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sgscmQkX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zkiy9hhubp30mrcpsp4b.png" alt="Resultado de overlay con css" width="294" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tailwind
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1️⃣ HTML
&lt;/h3&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;picture&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"w-80 h-96 relative before:w-80 before:h-96 before:absolute before:bg-gradient-to-t before:from-slate-800"&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;class=&lt;/span&gt;&lt;span class="s"&gt;"w-80 h-96 object-cover"&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://picsum.photos/id/237/300/400"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"cuidad"&lt;/span&gt;&lt;span class="nt"&gt;&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;"absolute bottom-4 left-3 text-2xl text-gray-300"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Tailwind&lt;span class="nt"&gt;&amp;lt;/h3&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/picture&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2️⃣ Resultado
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9YGJepje--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lzjhz29vspna4nze1hkl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9YGJepje--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lzjhz29vspna4nze1hkl.png" alt="Resultado de overlay con tailwind" width="307" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>tailwindcss</category>
      <category>frontend</category>
      <category>spanish</category>
    </item>
  </channel>
</rss>
