<?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>DEV Community: Giandomenico Pagliara</title>
    <description>The latest articles on DEV Community by Giandomenico Pagliara (@giandomenicopagliara).</description>
    <link>https://dev.to/giandomenicopagliara</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%2F909905%2F395407e7-84a0-47f0-96a5-94d5d483b0b2.png</url>
      <title>DEV Community: Giandomenico Pagliara</title>
      <link>https://dev.to/giandomenicopagliara</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/giandomenicopagliara"/>
    <language>en</language>
    <item>
      <title>Tailwind CSS senza Node.js</title>
      <dc:creator>Giandomenico Pagliara</dc:creator>
      <pubDate>Sat, 04 Feb 2023 18:39:52 +0000</pubDate>
      <link>https://dev.to/giandomenicopagliara/tailwind-css-senza-nodejs-ad5</link>
      <guid>https://dev.to/giandomenicopagliara/tailwind-css-senza-nodejs-ad5</guid>
      <description>&lt;h2&gt;
  
  
  Installazione
&lt;/h2&gt;

&lt;p&gt;Per usare TailwindCSS senza Node.js dobbiamo innanzitutto scaricarlo. In questo tutorial utilizzerò il package manager &lt;a href="https://scoop.sh/" rel="noopener noreferrer"&gt;Scoop&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;scoop &lt;span class="nb"&gt;install &lt;/span&gt;tailwindcss
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Installazione senza Scoop
&lt;/h3&gt;

&lt;p&gt;Se non volete utilizzare scoop potete scaricare Tailwind direttamente dalla loro &lt;a href="https://github.com/tailwindlabs/tailwindcss/releases" rel="noopener noreferrer"&gt;repo github&lt;/a&gt;. Scarichiamo il file, installiamolo e aggiungiamo il path dell'eseguibile alle variabili di sistema Windows. Così facendo possiamo chiamarlo ovunque senza doverci ricordare il path assoluto.&lt;/p&gt;

&lt;h2&gt;
  
  
  Inizializzazione
&lt;/h2&gt;

&lt;p&gt;Inizializziamo tailwind nel nostro progetto con il seguente comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tailwindcss init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ora troveremo nel nostro progetto il file &lt;code&gt;tailwind.config.js&lt;/code&gt;. Andiamolo a modificare inserendo in &lt;code&gt;content&lt;/code&gt; i path dei file in cui tailwind dovrà ricercare le classi che inseriremo:&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="cm"&gt;/** @type {import('tailwindcss').Config} */&lt;/span&gt;
&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./src/**/*.{html,php}&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;extend&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{},&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;:&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;In questo caso ho inserito tutte i file con estensione &lt;code&gt;.html&lt;/code&gt; o &lt;code&gt;.php&lt;/code&gt; presenti nelle cartelle figlie di &lt;code&gt;src&lt;/code&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Creare il file di input CSS
&lt;/h2&gt;

&lt;p&gt;Inserite nel vostro &lt;strong&gt;main file css&lt;/strong&gt; le direttive che servono a Tailwind:&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="k"&gt;@import&lt;/span&gt; &lt;span class="s1"&gt;"tailwindcss/base"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;@import&lt;/span&gt; &lt;span class="s1"&gt;"tailwindcss/components"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;@import&lt;/span&gt; &lt;span class="s1"&gt;"tailwindcss/utilities"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;In questo caso tailwind non funzionerà correttamente se userete &lt;code&gt;@tailwind&lt;/code&gt; anziché &lt;code&gt;@import&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Launch
&lt;/h2&gt;

&lt;p&gt;Lanciamo tailwind con il seguente comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;tailwindcss &lt;span class="nt"&gt;-i&lt;/span&gt; ./src/input.css &lt;span class="nt"&gt;-o&lt;/span&gt; ./src/output.css &lt;span class="nt"&gt;--watch&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;-i&lt;/code&gt; sta per input file e il path seguente punta al nostro main file css contenente le direttive aggiunte nel passaggio precedente. Invece &lt;code&gt;-o&lt;/code&gt; sta per output e quello che segue è il path del file che tailwind andrà a creare o modificare ogni volta che inseriremo una classe. Invece &lt;code&gt;--watch&lt;/code&gt; serve a indicare di monitorare le modifiche e di ricostruire il file output.css in caso di necessità.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusione
&lt;/h2&gt;

&lt;p&gt;Non ci resta che installare l'estensione di tailwindcss per il nostro editor preferito in modo da avere l'autocomplete per le classi css.&lt;/p&gt;




&lt;p&gt;Spero questa guida vi sia piaciuta , considera di mettere ❤️ al post e seguirmi sui miei social:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/giandomenico-pagliara-699108179/" rel="noopener noreferrer"&gt;Linkedin&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/PagliaraG" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

</description>
      <category>writing</category>
      <category>devto</category>
      <category>offers</category>
    </item>
    <item>
      <title>Installare Node.js su Siteground</title>
      <dc:creator>Giandomenico Pagliara</dc:creator>
      <pubDate>Sat, 01 Oct 2022 18:03:16 +0000</pubDate>
      <link>https://dev.to/giandomenicopagliara/installare-nodejs-su-siteground-3ada</link>
      <guid>https://dev.to/giandomenicopagliara/installare-nodejs-su-siteground-3ada</guid>
      <description>&lt;h2&gt;
  
  
  Introduzione
&lt;/h2&gt;

&lt;p&gt;Questa guida è stata pensata per chi necessita di Node.js su un piano di hosting Siteground sprovvisto.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connessione via SSH
&lt;/h2&gt;

&lt;p&gt;Prima di installare Node.js colleghiamoci al server tramite ssh.&lt;br&gt;
Nella sezione &lt;strong&gt;Sviluppatori&lt;/strong&gt; di &lt;strong&gt;SiteTools&lt;/strong&gt; cliccare su &lt;strong&gt;Gestione Chiavi SSH&lt;/strong&gt;, inserire il nome della chiave per poi crearla.&lt;br&gt;
Tutti le credenziali sono disponibili nello stesso pannello, serviranno per il passo successivo. Ora copiamo la chiave segreta sulla nostra macchina in un file &lt;code&gt;.pub&lt;/code&gt; e apriamo un terminale.&lt;/p&gt;

&lt;p&gt;Colleghiamoci via SSH dipendentemente dal nostro sistema operativo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;su &lt;strong&gt;Linux/Mac OS&lt;/strong&gt;: &lt;code&gt;ssh USER@HOST_NAME -pPORT&lt;/code&gt;
Su Siteground la porta di default ssh è la &lt;strong&gt;18765&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s2"&gt;"path/to/key/nome-chiave.pub"&lt;/span&gt; username@hostname.com &lt;span class="nt"&gt;-p18765&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;su &lt;strong&gt;Windows&lt;/strong&gt;: in &lt;a href="https://www.putty.org/"&gt;PuTTY&lt;/a&gt; inserire il nome del server host, impostare il tipo di connessione su SSH e la porta su 18765. Immettere il nome utente e premere Invio.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ora se richiesta inseriamo la password impostata su SiteGround in precedenza.&lt;/p&gt;
&lt;h2&gt;
  
  
  Installazione
&lt;/h2&gt;

&lt;p&gt;Eseguiamo un veloce check sulla nostra distro con:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;uname&lt;/span&gt; &lt;span class="nt"&gt;-srm&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nel mio caso è una &lt;code&gt;Linux 3.12.18-clouder0 x86_64&lt;/code&gt;. Ora andiamo nella sezione download del sito di &lt;a href="https://nodejs.org/en/download/"&gt;Node.js&lt;/a&gt; e copiamo il link dell'installer del nostro sistema operativo verificato in precedenza. Nel mio caso copio il link del &lt;code&gt;Linux Binaries (x64)&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://nodejs.org/dist/v16.17.1/node-v16.17.1-linux-x64.tar.xz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Prestate attenzione all'estensione del file perché se non sarà uguale a &lt;code&gt;.tar.gz&lt;/code&gt; il terminale vi &lt;strong&gt;darà errore&lt;/strong&gt;. Come nel mio caso basterà &lt;strong&gt;cambiare l'estensione&lt;/strong&gt; ed il gioco è fatto.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ora ci basterà seguire le seguenti istruzioni per installare &lt;code&gt;Node.js&lt;/code&gt; e &lt;code&gt;npm&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~
curl https://nodejs.org/dist/v16.17.1/node-v16.17.1-linux-x64.tar.gz | &lt;span class="nb"&gt;tar &lt;/span&gt;xz
&lt;span class="nb"&gt;mv &lt;/span&gt;node-v6.2.2-linux-x64/ nodejs
&lt;span class="nb"&gt;mkdir&lt;/span&gt; ~/bin
&lt;span class="nb"&gt;cp &lt;/span&gt;nodejs/bin/node ~/bin
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/bin
&lt;span class="nb"&gt;ln&lt;/span&gt; &lt;span class="nt"&gt;-s&lt;/span&gt; ../nodejs/lib/node_modules/npm/bin/npm-cli.js npm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Prestate attenzione in quale cartella eseguite i comandi, soprattutto l'ultimo: &lt;code&gt;ln -s&lt;/code&gt; viene usato per creare nomi simbolici. Se non lo farete nella cartella &lt;code&gt;~/bin&lt;/code&gt; allora il comando &lt;code&gt;npm&lt;/code&gt; non verrà riconosciuto dal server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test
&lt;/h2&gt;

&lt;p&gt;Per testare se è tutto corretto vi basterà eseguire i seguenti comandi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node &lt;span class="nt"&gt;--version&lt;/span&gt;
npm &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se come risposta riceverete le rispettive versioni allora &lt;code&gt;Node.js&lt;/code&gt; e &lt;code&gt;npm&lt;/code&gt; sono stati installati correttamente.&lt;/p&gt;




&lt;p&gt;Spero questa mini guida vi sia piaciuta , considera di mettere ❤️ al post e seguirmi sui miei social:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/giandomenico-pagliara-699108179/"&gt;Linkedin&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/PagliaraG"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>siteground</category>
      <category>node</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Scroll Animation con Vanilla JS e CSS</title>
      <dc:creator>Giandomenico Pagliara</dc:creator>
      <pubDate>Sat, 17 Sep 2022 14:01:00 +0000</pubDate>
      <link>https://dev.to/giandomenicopagliara/scroll-animation-con-vanilla-js-e-css-ple</link>
      <guid>https://dev.to/giandomenicopagliara/scroll-animation-con-vanilla-js-e-css-ple</guid>
      <description>&lt;h2&gt;
  
  
  Introuzione
&lt;/h2&gt;

&lt;p&gt;In questa quida vedremo come creare delle &lt;em&gt;scroll animations&lt;/em&gt; con JS Vanilla e CSS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Intersection Observer API
&lt;/h2&gt;

&lt;p&gt;Per ottenerle utilizzeremo questa &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API"&gt;API&lt;/a&gt;: ciò che fa è determinare se un elemento del DOM è visibile all'utente finale.&lt;/p&gt;

&lt;h2&gt;
  
  
  HTML &amp;amp; CSS
&lt;/h2&gt;

&lt;p&gt;Per questa parte avrete carta bianca. In questo caso animeremo delle scritte. Per avere abbastanza spazio per lo scroll ho dato ad ogni &lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt; un'altezza di &lt;code&gt;100vh&lt;/code&gt; e ho centrato i titoli &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; con &lt;code&gt;display:grid;&lt;/code&gt; e &lt;code&gt;place-items: center&lt;/code&gt;. Identifichiamo gli elementi che vogliamo osservare con una classe: in questo caso &lt;code&gt;hidden&lt;/code&gt; e le diamo un' &lt;code&gt;opacity: 0;&lt;/code&gt; (poichè inizialmente questi elementi non saranno visibili).&lt;br&gt;
Inoltre creiamo un'altra casse &lt;code&gt;show&lt;/code&gt; con &lt;code&gt;opacity: 1;&lt;/code&gt; che andremo ad aggiungere agli elementi con classe &lt;code&gt;hidden&lt;/code&gt; quando saranno visibili all'utente finale. Per rendere tutto più fluido aggiungiamo una transizione &lt;code&gt;transition: all .6s&lt;/code&gt; a &lt;code&gt;hidden&lt;/code&gt;.&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;section&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"hidden"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;
    Lorem ipsum dolor sit amet consectetur adipisicing elit.
  &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;section&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"hidden"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;
    Lorem ipsum dolor sit amet consectetur adipisicing elit.
  &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;section&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"hidden"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;
    Lorem ipsum dolor sit amet consectetur adipisicing elit.
  &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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;section&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;100vh&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#1B1F24&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;#ffffff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;place-items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.hidden&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;opacity&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;transition&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;all&lt;/span&gt; &lt;span class="m"&gt;.6s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.show&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&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;h2&gt;
  
  
  JavaScript
&lt;/h2&gt;

&lt;p&gt;Ora prendiamo tutti gli elementi con classe &lt;code&gt;hidden&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;hiddenElements&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="s2"&gt;.hidden&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;Il prossimo step è quello di creare l'&lt;strong&gt;intersection observer&lt;/strong&gt; che è una classe che prende una &lt;em&gt;callback&lt;/em&gt; nel suo &lt;em&gt;constructor&lt;/em&gt;.&lt;br&gt;
Il vantaggio è che può osservare più elementi allo stesso tempo. Quindi itereremo ogni &lt;code&gt;entry&lt;/code&gt; con un &lt;code&gt;forEach&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;observer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;IntersectionObserver&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;entries&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;entries&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&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;Questa funzione verrà eseguita ogni volta che la visibilità di un elemento osservato cambierà.&lt;/p&gt;

&lt;p&gt;Ora aggiungeremo un check su ogni &lt;code&gt;entry&lt;/code&gt; per vedere se è visibile nel &lt;em&gt;viewport&lt;/em&gt;, ed in caso avvenga aggiungeremo all'elemento la classe &lt;code&gt;show&lt;/code&gt; dichiarata in precedenza:&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;observer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;IntersectionObserver&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;entries&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;entries&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isIntersecting&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
      &lt;span class="nx"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;classList&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;show&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&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;Se vogliamo che l'animazione venga eseguita ogni volta che un elemento rientra nel &lt;em&gt;viewport&lt;/em&gt; ci basterà inserire un &lt;code&gt;else&lt;/code&gt; statement in cui togliamo la classe &lt;code&gt;show&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;observer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;IntersectionObserver&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;entries&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;entries&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isIntersecting&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
      &lt;span class="nx"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;classList&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;show&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;classList&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;remove&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;show&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&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;Ora che abbiamo l'&lt;code&gt;observer&lt;/code&gt; dobbiamo dirgli cosa osservare: in questo caso possiamo fare un &lt;em&gt;loop&lt;/em&gt; su tutti gli elementi e dire all'&lt;code&gt;observer&lt;/code&gt; di osservare ogniuno di essi:&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="nx"&gt;hiddenElements&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;el&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;observer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;observe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;el&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Esempio pratico
&lt;/h2&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/g-pagliara/embed/xxjqjep?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;In questo esempio potete notare che le scritte animate provengono da destra. Per ottenere questo effetto basta giocare con le proprietà di trasformazione &lt;em&gt;CSS&lt;/em&gt;:&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;.hidden&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;opacity&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;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translateX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;100px&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;transition&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;all&lt;/span&gt; &lt;span class="m"&gt;.6s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.show&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translateX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0px&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;Spero questa mini guida vi sia piaciuta , considera di mettere ❤️ al post e seguirmi sui miei social:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/giandomenico-pagliara-699108179/"&gt;Linkedin&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/PagliaraG"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>css</category>
      <category>webdev</category>
      <category>design</category>
    </item>
    <item>
      <title>Guida Isotope Filtering</title>
      <dc:creator>Giandomenico Pagliara</dc:creator>
      <pubDate>Wed, 14 Sep 2022 20:44:24 +0000</pubDate>
      <link>https://dev.to/giandomenicopagliara/guida-isotope-filtering-kn9</link>
      <guid>https://dev.to/giandomenicopagliara/guida-isotope-filtering-kn9</guid>
      <description>&lt;h2&gt;
  
  
  Introduzione
&lt;/h2&gt;

&lt;p&gt;Isotope è una libreria javascript che permette di filtrare e ordinare vari elementi. In questa guida vedremo come filtrarli.&lt;/p&gt;

&lt;h2&gt;
  
  
  Risorse
&lt;/h2&gt;

&lt;p&gt;Prima di tutto importiamo nel nostro file &lt;code&gt;.html&lt;/code&gt; il cdn:&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;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://unpkg.com/isotope-layout@3/dist/isotope.pkgd.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="c"&gt;&amp;lt;!-- o la versione Minified --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://unpkg.com/isotope-layout@3/dist/isotope.pkgd.min.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Oppure lo script della libreria che potrete trovare qui: &lt;a href="https://isotope.metafizzy.co/"&gt;Isotope Metafizzy&lt;/a&gt;. Inoltre potete inizializzare Isotope con &lt;a href="https://jquery.com/download/"&gt;jquery&lt;/a&gt;. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Se userete jquery importatelo prima dello script di isotope&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Struttura HTML
&lt;/h2&gt;

&lt;p&gt;In questo esempio vedremo come filtrare vari box in base al colore.&lt;/p&gt;

&lt;h3&gt;
  
  
  Filtri
&lt;/h3&gt;

&lt;p&gt;Definiamo ogni filtro come un &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt; e ad ognuno aggiungiamo l'attributo &lt;code&gt;data-filter=""&lt;/code&gt;. In &lt;code&gt;data-filter&lt;/code&gt; inseriremo il nome della classe degli item che verranno filtrati alla pressione del medesimo bottone.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Importante sottolineare che il nome della classe in &lt;code&gt;data-filter&lt;/code&gt; è preceduto da un punto.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Per visualizzare tutti gli elementi senza filtri aggiungiamo un bottone con &lt;code&gt;data-filter="*"&lt;/code&gt;.&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;"filter-button-group"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;data-filter=&lt;/span&gt;&lt;span class="s"&gt;"*"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Show All&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;data-filter=&lt;/span&gt;&lt;span class="s"&gt;".red"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Red&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;data-filter=&lt;/span&gt;&lt;span class="s"&gt;".blue"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Blue&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;data-filter=&lt;/span&gt;&lt;span class="s"&gt;".yellow"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Yellow&lt;span class="nt"&gt;&amp;lt;/button&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;h3&gt;
  
  
  Griglia elementi
&lt;/h3&gt;

&lt;p&gt;Inseriamo in un container con una classe specifica i vari item che filtreremo. Per ogni item inseriamo una classe che lo identificherà come un elemento da filtrare (in questo caso &lt;code&gt;box&lt;/code&gt;). Inoltre aggiungiamo una classe che determinerà la categoria dell'elemento (&lt;code&gt;red&lt;/code&gt;, &lt;code&gt;yellow&lt;/code&gt;, &lt;code&gt;blue&lt;/code&gt;):&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;"griglia"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&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;"box yellow"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&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;"box red"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&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;"box blue"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&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;"box yellow"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&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;"box red"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&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;"box blue"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&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;"box yellow"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&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;"box red"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&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;"box blue"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&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;h2&gt;
  
  
  Inizializzazione
&lt;/h2&gt;

&lt;p&gt;Inizializziamo il nostro Isotope in Javascript.&lt;/p&gt;

&lt;p&gt;con Vanilla Javascript:&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;var&lt;/span&gt; &lt;span class="nx"&gt;grigliaElementi&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;.griglia&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;iso&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Isotope&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nx"&gt;grigliaElementi&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// options&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;con Jquery (consigliato):&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;var&lt;/span&gt; &lt;span class="nx"&gt;$isotope&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.griglia&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;isotope&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="c1"&gt;// options&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dove ci sono i commenti &lt;code&gt;//options&lt;/code&gt; potrete inserire varie opzioni e il layout per la griglia. Potete trovare tutte le informazioni su &lt;a href="https://isotope.metafizzy.co/filtering.html"&gt;Isotope Metafizzy&lt;/a&gt;.&lt;br&gt;
Tutte le opzioni sono facoltative ma è consigliato usare sempre &lt;code&gt;itemSelector&lt;/code&gt; che non fa altro che specificare quali saranno gli elementi del layout. &lt;/p&gt;

&lt;p&gt;Quindi per questo esempio:&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;var&lt;/span&gt; &lt;span class="nx"&gt;$isotope&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.griglia&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;isotope&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;itemSelector&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.box&lt;/span&gt;&lt;span class="dl"&gt;'&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;h2&gt;
  
  
  Filtraggio
&lt;/h2&gt;

&lt;p&gt;Aggiungiamo un evento ai bottoni che abbiamo settato in precedenza:&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="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.filter-button-group&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;button&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;filterValue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;attr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;data-filter&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;$isotope&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isotope&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;filterValue&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;Ogni volta che un &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt; verrà clickato la variabile &lt;code&gt;filterValue&lt;/code&gt; sarà impostata con la classe contenuta in &lt;code&gt;data-filter&lt;/code&gt; del bottone e poi isotope filtrerà gli elementi per noi.&lt;/p&gt;

&lt;p&gt;Un esempio pratico:&lt;br&gt;
&lt;iframe height="600" src="https://codepen.io/g-pagliara/embed/bGMGGjO?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  (Bonus) Griglia responsive e centrata
&lt;/h2&gt;

&lt;p&gt;Vi capiterà di voler centrare la griglia degli elementi, per farlo il modo più semplice e efficace è inserire nelle opzioni del layout (di default) &lt;code&gt;masonry&lt;/code&gt; l'opzione &lt;code&gt;isFitWidth: true&lt;/code&gt; e impostare i margini della griglia su &lt;code&gt;auto&lt;/code&gt;. Riprendiamo l'esempio precedente:&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;var&lt;/span&gt; &lt;span class="nx"&gt;$isotope&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.griglia&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;isotope&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;masonry&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;isFitWidth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&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;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.griglia&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Spero questa mini guida vi sia piaciuta , considera di mettere ❤️ al post e seguirmi sui miei social:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/giandomenico-pagliara-699108179/"&gt;Linkedin&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/PagliaraG"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Guida React Props da Parent a Child</title>
      <dc:creator>Giandomenico Pagliara</dc:creator>
      <pubDate>Fri, 26 Aug 2022 18:18:00 +0000</pubDate>
      <link>https://dev.to/giandomenicopagliara/guida-react-props-da-parent-a-child-1fko</link>
      <guid>https://dev.to/giandomenicopagliara/guida-react-props-da-parent-a-child-1fko</guid>
      <description>&lt;h2&gt;
  
  
  Introduzione
&lt;/h2&gt;

&lt;p&gt;In questa semplice quida vi guiderò passo dopo passo all' utilizzo di &lt;code&gt;props&lt;/code&gt; per il passaggio di valori da un componente all'altro. Nella guida vedremo come si passano i valori dal componente genitore al figlio.&lt;/p&gt;

&lt;h3&gt;
  
  
  Passiamo i props al Child
&lt;/h3&gt;

&lt;p&gt;Il termine &lt;code&gt;props&lt;/code&gt; non significa altro che &lt;em&gt;proprietà&lt;/em&gt; . Ipotizziamo che vogliamo passare dei valori dal componente parent &lt;code&gt;Videoteca.js&lt;/code&gt; al componente child &lt;code&gt;Film.js&lt;/code&gt;.&lt;br&gt;
Scriveremo in da &lt;code&gt;Videoteca.js&lt;/code&gt; in &lt;code&gt;&amp;lt;Film /&amp;gt;&lt;/code&gt; gli attributi che vogliamo passare:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;titolo&lt;/li&gt;
&lt;li&gt;genere&lt;/li&gt;
&lt;li&gt;data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ed impostiamo ad ogniuno il corrispettivo valore:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Film&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./Film&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./style.css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;Videoteca&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-center"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Videoteca&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;classname&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"container-film"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Film&lt;/span&gt; &lt;span class="na"&gt;titolo&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Godzilla"&lt;/span&gt; &lt;span class="na"&gt;genere&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Azione"&lt;/span&gt; &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"2012"&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&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;h3&gt;
  
  
  Prendiamo i props dal Parent
&lt;/h3&gt;

&lt;p&gt;Ora andiamo nel nostro componente child &lt;code&gt;Film.js&lt;/code&gt; e impostiamo un argomento di nome &lt;code&gt;props&lt;/code&gt;(la scelto del nome è a vostro piacimento, ma consiglio di scrivere &lt;code&gt;props&lt;/code&gt; per una maggiore chiarezza).&lt;br&gt;
Per accedere al titolo ci basterà scrivere &lt;code&gt;props.title&lt;/code&gt; e per visualizzarlo nel componente ci basterà inserirlo tra parentesi graffe:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./style.css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;Film&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"film"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;titolo&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&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;Semplice, no? Possiamo fare lo stesso con &lt;code&gt;genere&lt;/code&gt; e &lt;code&gt;data&lt;/code&gt;. Inoltre nulla ci vieta di farlo con altri componenti &lt;code&gt;Film.js&lt;/code&gt;: &lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://stackblitz.com/edit/easy-props-parent-to-child?embed=1&amp;amp;file=src/Film.js" width="100%" height="500"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Sommario
&lt;/h3&gt;

&lt;p&gt;Se non vi è ancora chiaro immaginate &lt;code&gt;props&lt;/code&gt; come una scatola. Quando andiamo a inserire gli attributi HTML dal parent al nostro child immaginate che riempiamo la "scatola props" con quegli attributi e li passiamo al componente dove li abbiamo scritti. Fatto questo ci basterà scrivere &lt;code&gt;props.nome-attributo&lt;/code&gt; nel child per farli "uscire dalla scatola".&lt;br&gt;
(Non prendere questa come definizione, è solo un esempio per farvi capire il concetto).&lt;/p&gt;




&lt;p&gt;Spero questa mini guida vi sia piaciuta , considera di mettere ❤️ al post e seguirmi sui miei social:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/giandomenico-pagliara-699108179/"&gt;Linkedin&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/PagliaraG"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>react</category>
      <category>props</category>
    </item>
    <item>
      <title>Miglior UX con Scroll-padding-Top</title>
      <dc:creator>Giandomenico Pagliara</dc:creator>
      <pubDate>Wed, 17 Aug 2022 19:10:00 +0000</pubDate>
      <link>https://dev.to/giandomenicopagliara/la-navbar-copre-il-contenuto-scroll-padding-top-4b2j</link>
      <guid>https://dev.to/giandomenicopagliara/la-navbar-copre-il-contenuto-scroll-padding-top-4b2j</guid>
      <description>&lt;h2&gt;
  
  
  Introduzione
&lt;/h2&gt;

&lt;p&gt;Questa proprietà definisce un offset per la parte superiore dell'area di visualizzazione dello scrollport, o in altre parole, &lt;strong&gt;permetterà alla barra di navigazione di non coprire il contenuto&lt;/strong&gt; quando premerete un link che vi farà scorrere a una sezione specifica della pagina.&lt;/p&gt;

&lt;h2&gt;
  
  
  Utilizzo
&lt;/h2&gt;

&lt;p&gt;Tutto quello che dovete sapere è che dovete impostare la regola CSS &lt;code&gt;scroll-padding-top&lt;/code&gt; all'elemento che dovrà 'scrollare'.&lt;/p&gt;

&lt;h3&gt;
  
  
  Esempio pratico
&lt;/h3&gt;

&lt;p&gt;Ipotizziamo che la nostra navbar abbia un'altezza fissa di &lt;code&gt;60px&lt;/code&gt;.&lt;br&gt;
Ci basterà aggiungere al container che 'scrollerà' la suddetta regola con valore uguale all'altezza della navbar stessa:&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;scroll-padding-top&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;60&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nel seguente codepen ci sono due container identici con la stessa barra di navigazione; in quello destro viene usata la regola &lt;code&gt;scroll-padding-top&lt;/code&gt;, in quello sinistro no. Cliccate i link delle rispettive barre di navigazione per notare la differenza.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/g-pagliara/embed/wvmRWZE?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Noterete subito la differenza: nel container destro si legge il titolo selezionato dalla navbar, nel sinistro no. Questo migliorerà l'esperienza utente. Un piccolo dettaglio che farà la differenza.&lt;/p&gt;




&lt;p&gt;Spero questa mini guida vi sia piaciuta , considera di mettere ❤️ al post e seguirmi sui miei social:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/giandomenico-pagliara-699108179/"&gt;Linkedin&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/PagliaraG"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>html</category>
      <category>webdev</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Guida ScrollReveal.js</title>
      <dc:creator>Giandomenico Pagliara</dc:creator>
      <pubDate>Wed, 17 Aug 2022 12:25:00 +0000</pubDate>
      <link>https://dev.to/giandomenicopagliara/guida-semplice-scrollrevealjs-1c28</link>
      <guid>https://dev.to/giandomenicopagliara/guida-semplice-scrollrevealjs-1c28</guid>
      <description>&lt;h2&gt;
  
  
  Introduzione
&lt;/h2&gt;

&lt;p&gt;ScrollReveal è una libreria JavaScript robusta e flessibile che consente di animare facilmente gli elementi che entrano o escono dal viewport.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Start
&lt;/h2&gt;

&lt;p&gt;Includiamo la libreria nell'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;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://unpkg.com/scrollreveal"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Questo ci fornisce la funzione costruttore ScrollReveal(), che useremo in seguito.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prima animazione
&lt;/h3&gt;

&lt;p&gt;Una semplice configurazione:&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;h1&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"appear-from-bottom"&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;ScrollReveal&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;reveal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.appear-from-bottom&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;h2&gt;
  
  
  Opzioni di animazione
&lt;/h2&gt;

&lt;p&gt;ScrollReveal.js offre varie opzioni di personalizzazione per ottenere l'effetto desiderato:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Delay:&lt;/strong&gt; è il tempo in millisecondi prima dell'inizio delle animazioni, es. &lt;code&gt;{ delay: 500 }&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Distance:&lt;/strong&gt; controlla quanto distanti si muovano gli elementi quando rivelati, es. &lt;code&gt;{ distance: '50px' }&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Duration:&lt;/strong&gt; controlla il tempo di completamento delle animazioni in millisecondi, es. &lt;code&gt;{ duration: '600 }&lt;/code&gt; .&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Easing:&lt;/strong&gt; controlla la transizione delle animazioni tra i valori iniziali e finali, es. &lt;code&gt;{ easing: 'ease-in' }&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inverval:&lt;/strong&gt;  è il tempo che intercorre tra ogni reveal,  es. &lt;code&gt;{ interval: 600 }&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Opacity:&lt;/strong&gt; specifica l'opacità che hanno prima di essere rivelati, es. &lt;code&gt;{ opacity: 0.8 }&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Origin:&lt;/strong&gt; specifica da quale direzione provengono gli elementi quando vengono rivelati, es. &lt;code&gt;{ origin: 'top' }&lt;/code&gt; (accetta anche: &lt;code&gt;bottom&lt;/code&gt;, &lt;code&gt;left&lt;/code&gt;, &lt;code&gt;right&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rotate:&lt;/strong&gt; specifica la rotazione che gli elementi hanno prima di essere rivelati, es. &lt;code&gt;{ rotate: { x: 20, z: 20 }&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scale:&lt;/strong&gt; specifica la dimensione degli elementi prima di essere rivelati, es. &lt;code&gt;{ scale: 0.85 }&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Esempio Pratico
&lt;/h3&gt;

&lt;p&gt;Un esempio di come può essere utilizzata la libreria per avere diverse animazioni mentre si scrolla la pagina:&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="nx"&gt;ScrollReveal&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;reveal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.appear-left&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;origin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;left&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;duration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;600&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;distance&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;100px&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;ScrollReveal&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;reveal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.appear-right&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,{&lt;/span&gt;
  &lt;span class="na"&gt;origin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;right&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;duration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;600&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;distance&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;100px&lt;/span&gt;&lt;span class="dl"&gt;'&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;Lo stesso codice viene usato nel seguente codepen:&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/g-pagliara/embed/poLqzOa?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Risorse Aggiuntive
&lt;/h2&gt;

&lt;p&gt;Per ulteriori configurazioni, metodi e callbacks visita la pagina &lt;a href="https://scrollrevealjs.org/api/reveal.html"&gt;API di ScrollReveal.js&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Spero questa mini guida vi sia piaciuta , considera di mettere ❤️ al post e seguirmi sui miei social:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/giandomenico-pagliara-699108179/"&gt;Linkedin&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/PagliaraG"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>librerie</category>
    </item>
  </channel>
</rss>
