<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Web design &#8211; R.B.log</title>
	<atom:link href="https://www.robertobeccari.it/category/web-design/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.robertobeccari.it</link>
	<description>Costruire il futuro con codice, intelligenza e visione</description>
	<lastBuildDate>Tue, 13 May 2025 06:36:56 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.7</generator>

<image>
	<url>https://www.robertobeccari.it/wp-content/uploads/2015/10/cropped-161193_1482348350_790694714_n-32x32.jpg</url>
	<title>Web design &#8211; R.B.log</title>
	<link>https://www.robertobeccari.it</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">101702527</site>	<item>
		<title>HTML e CSS: stiamo perdendo la conoscenza?</title>
		<link>https://www.robertobeccari.it/2025/05/14/html-e-css-stiamo-perdendo-la-conoscenza/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=html-e-css-stiamo-perdendo-la-conoscenza</link>
		
		<dc:creator><![CDATA[Roberto Beccari]]></dc:creator>
		<pubDate>Wed, 14 May 2025 08:00:00 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Futuro]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Lavoro]]></category>
		<guid isPermaLink="false">https://www.robertobeccari.it/?p=2322</guid>

					<description><![CDATA[Negli ultimi anni mi capita sempre più spesso di osservare un fenomeno curioso, e per certi versi preoccupante: HTML e CSS, le fondamenta del web,&#8230;]]></description>
										<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
                <div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>3 Minute, 24 Second                </div>

            </div>
<p>Negli ultimi anni mi capita sempre più spesso di osservare un fenomeno curioso, e per certi versi preoccupante: HTML e CSS, le fondamenta del web, sembrano progressivamente scomparire dalla scena pratica dello sviluppo. Intendiamoci, sono ancora lì, silenziosi e onnipresenti sotto ogni interfaccia digitale che navighiamo quotidianamente. Ma nel concreto, nel lavoro quotidiano di sviluppo, vedo che la conoscenza diretta di questi linguaggi è sempre più sacrificata sull’altare della velocità, della produttività, dello standard già pronto.</p>



<p>Framework come React, Vue o Angular hanno semplificato e accelerato enormemente la creazione di interfacce complesse, fornendo template, componenti riutilizzabili e astrazioni che mascherano quasi completamente la necessità di scrivere codice HTML “nudo e crudo”. Per la parte di stile, il fenomeno è forse ancora più evidente: l’ascesa di utility-first framework come Tailwind CSS ha cambiato radicalmente il modo di pensare ai fogli di stile. Non più regole CSS astratte, ma classi già pronte, riutilizzabili, veloci da applicare.</p>



<p>Il risultato? Sempre più sviluppatori si muovono in un contesto nel quale il contatto diretto con HTML e CSS è minimo o assente. Tutto passa attraverso livelli di astrazione e strumenti che, sì, sono più efficienti, ma che rischiano di trasformare il developer in un mero operatore di strumenti preconfezionati.</p>



<h2 class="wp-block-heading"><strong>Il mito della velocità e l’illusione della sostituibilità</strong></h2>



<p>“Perché perdere tempo a scrivere codice a mano quando posso usare strumenti come Webflow, Framer, o il più recente Canva Codes?”</p>



<p>È una domanda che sento spesso. E la risposta più gettonata è: “Non serve più. Gli strumenti ormai fanno tutto”. È vero. La tecnologia low-code e no-code sta avanzando a ritmi vertiginosi. Strumenti come Locofy, TeleportHQ, Framer AI e persino Lovable promettono di generare intere interfacce web partendo da semplici prompt o bozze grafiche.</p>



<p>Il nuovo Canva Codes, ad esempio, permette di generare codice web funzionante partendo da template visuali e blocchi modulari. Un sogno per chi vuole produrre landing page e siti vetrina in pochi click. Ma è proprio qui che si nasconde il rischio: in questo approccio, l’utente finale non ha più bisogno di sapere cosa c’è “sotto il cofano”. Non è più importante comprendere l’HTML, i selettori CSS, il box model, o la semantica. Basta che il risultato funzioni.</p>



<p>E allora la domanda diventa: <strong>ha ancora senso studiare le basi?</strong></p>



<h2 class="wp-block-heading"><strong>La diversità che stiamo sacrificando</strong></h2>



<p>C’è un altro aspetto che mi lascia perplesso: l’omologazione. Usare gli stessi framework, gli stessi template, le stesse librerie porta inevitabilmente a una standardizzazione estetica e funzionale del web. Le interfacce diventano sempre più simili, uniformi, prevedibili. La diversità, intesa come capacità creativa di andare oltre lo standard imposto dal framework, viene sacrificata in nome della velocità.</p>



<p>Eppure, la vera innovazione spesso nasce proprio dalla capacità di “sporcarsi le mani”, di uscire dai binari, di conoscere a fondo le regole per poterle infrangere consapevolmente. Se perdiamo la conoscenza delle basi, perdiamo anche la capacità di reinventare, di esplorare, di creare qualcosa di davvero diverso.</p>



<h2 class="wp-block-heading"><strong>Stiamo andando verso un futuro di consumatori di strumenti?</strong></h2>



<p>Probabilmente sì. L’evoluzione naturale dell’industria tecnologica punta verso strumenti sempre più accessibili, user-friendly, democratici. Chiunque potrà creare siti web, interfacce, applicazioni senza scrivere una riga di codice. Questo è il trend. Gartner nel suo ultimo rapporto prevede che entro il 2027 oltre il 65% delle applicazioni saranno sviluppate con approcci low-code o no-code.</p>



<p>Ma cosa succederà quando questi strumenti avranno dei limiti, dei bug, o semplicemente quando vorremo uscire dallo schema predefinito? Saremo ancora in grado di intervenire? O dovremo affidarci ciecamente a chi ha scritto quel motore che genera tutto per noi?</p>



<h2 class="wp-block-heading"><strong>E allora… studiare le basi ha ancora senso?</strong></h2>



<p>Probabilmente no. O forse sì. Dipende da che tipo di professionista vuoi essere.</p>



<p>Se ti accontenti di usare strumenti e template preconfezionati, la risposta è no.</p>



<p>Ma se vuoi essere davvero libero, capace di creare, di innovare, di intervenire nei dettagli più nascosti, la risposta è ancora sì, oggi più che mai.</p>



<p>La conoscenza delle fondamenta non è un fardello del passato. È una bussola per il futuro.</p>
        <div class="booster-block booster-reactions-block">
            <div class="twp-reactions-icons">
                
                <div class="twp-reacts-wrap">
                    <a react-data="be-react-1" post-id="2322" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/happy.svg" alt="Happy">
                    </a>
                    <div class="twp-reaction-title">
                        Happy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">2</span>
                        
                                                <span class="twp-react-percent"><span>100</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-2" post-id="2322" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sad.svg" alt="Sad">
                    </a>
                    <div class="twp-reaction-title">
                        Sad                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-3" post-id="2322" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/excited.svg" alt="Excited">
                    </a>
                    <div class="twp-reaction-title">
                        Excited                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-6" post-id="2322" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sleepy.svg" alt="Sleepy">
                    </a>
                    <div class="twp-reaction-title">
                        Sleepy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-4" post-id="2322" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/angry.svg" alt="Angry">
                    </a>
                    <div class="twp-reaction-title">Angry</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                        
                    </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-5" post-id="2322" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/surprise.svg" alt="Surprise">
                    </a>
                    <div class="twp-reaction-title">Surprise</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

            </div>
        </div>

    ]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2322</post-id>	</item>
		<item>
		<title>Software e Accessibilità</title>
		<link>https://www.robertobeccari.it/2022/02/18/software-e-accessibilita/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-e-accessibilita</link>
		
		<dc:creator><![CDATA[Roberto Beccari]]></dc:creator>
		<pubDate>Fri, 18 Feb 2022 09:00:00 +0000</pubDate>
				<category><![CDATA[Accessibilità]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Produttività]]></category>
		<category><![CDATA[Sviluppo]]></category>
		<category><![CDATA[Web design]]></category>
		<category><![CDATA[accessibilità]]></category>
		<category><![CDATA[sviluppo]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">https://www.robertobeccari.it/?p=1778</guid>

					<description><![CDATA[Da diversi anni lavoro a progetti legati alla pubblica amministrazione. Nel tempo mi sono reso conto di cosa voglia dire realizzare un sito/app accessibile. Imparare ad usare screen reader, i giusti costrutti della struttura, della pagina e gli attributi corretti per far capire ad una persona con handicap visivi o auditivi, come poter accedere ai contenuti proposti. ]]></description>
										<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
                <div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>7 Minute, 37 Second                </div>

            </div>
<p>Da diversi anni lavoro a progetti legati alla pubblica amministrazione. Nel tempo mi sono reso conto di cosa voglia dire realizzare un sito/app accessibile. Imparare ad usare screen reader, i giusti costrutti, come strutturate le pagine e usare gli attributi corretti per far capire ad una persona con handicap visivi o auditivi, come poter capire meglio e più velocemente i contenuti proposti.</p>



<p>La prima cosa che posso dire è questa, <strong>una persona disabile ha meno difficoltà di quelle che possiate pensare, sono abituati a superare gli ostacoli (non solo nel software) e questo in molti casi li rende più smart di noi utenti &#8220;normali&#8221;</strong> che dobbiamo capire con occhi e udito quello che ci viene proposto. Mi è capitato di lavorare con alcune persone non vedenti e sono rimasto ammirato dal loro approccio, capivano i contenuti della pagina (fatta con i giusti criteri) prima e meglio di me. Loro puntano al contenuto e alle informazioni, noi ci perdiamo nei fronzoli della pagina.</p>



<p><em><strong>Con questo non voglio dire che non serve rendere accessibile il software, <span style="text-decoration: underline;">il contrario</span>, noi sviluppatori <span style="text-decoration: underline;">con uno sforzo minimo</span> possiamo aiutare queste persone, e non solo, a capire con più facilità quali siano i contenuti che proponiamo sul nostro sito o nella nostra applicazione</strong>.</em></p>



<p><strong>Di seguito vi riporto i ventidue miti da sfatare sull&#8217;accessibilità</strong> suggeriti da <a rel="noreferrer noopener" href="https://a11ymyths.com/" target="_blank">a11ymyths.com</a> e riportati nel mio progetto <a rel="noreferrer noopener" href="https://www.calendarioavventodev.it/" target="_blank">calendario dell&#8217;avvento per sviluppatori</a> (sono aperte le iscrizioni per il 2022). Approfitto per ringraziare tutte le persone che si sono iscritte e che mi hanno dato suggerimenti su come migliorare e rendere i contenuti interessanti. </p>



<p>Iniziamo&#8230;</p>



<h3 class="wp-block-heading" id="01-l-accessibilita-riguarda-solo-un-piccolo-gruppo-di-utenti">#01 L&#8217;accessibilità riguarda solo un piccolo gruppo di utenti</h3>



<p>Non così piccolo.&nbsp;Circa il&nbsp;<strong>15%</strong>&nbsp;della popolazione mondiale, o circa&nbsp;<strong>1 miliardo di</strong>&nbsp;persone, vive con disabilità, sono la più grande minoranza del mondo.&nbsp;Il numero delle persone con disabilità è in forte aumento. </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Una curiosità&#8230; una delle migliori App completamente accessibile al mondo (sia web che mobile) è quella di Amazon, il loro obiettivo è vendere e se non fossero accessibili si perderebbero una fetta del mercato.</p></blockquote>



<p><a href="https://www.who.int/en/news-room/fact-sheets/detail/disability-and-health" target="_blank" rel="noreferrer noopener">Maggiori informazioni</a></p>



<h3 class="wp-block-heading" id="02-gli-utenti-disabili-non-utilizzano-il-mio-sito-web">#02 Gli utenti disabili non utilizzano il mio sito web</h3>



<p>Come puoi essere così sicuro?&nbsp;Molte persone con disabilità come daltonismo, capacità motorie limitate, ecc. utilizzano i siti Web proprio come gli altri utenti.&nbsp;Inoltre, molte&nbsp;<strong>tecnologie assistive non sono rilevabili</strong>&nbsp;in alcun modo.</p>



<p><a href="https://www.w3.org/WAI/people-use-web/" target="_blank" rel="noreferrer noopener">Maggiori informazioni</a></p>



<h3 class="wp-block-heading" id="03-rendere-accessibile-un-sito-web-e-costoso-e-richiede-tempo">#03 Rendere accessibile un sito Web è costoso e richiede tempo</h3>



<p>Potrebbe non essere così se l&#8217;accessibilità fosse considerata dall&#8217;inizio del progetto grazie ad un team di sviluppo con le competenze adeguate.&nbsp;Quando l&#8217;accessibilità è diventata un&#8217;abitudine, il&nbsp;<strong>tempo di sviluppo non cambia</strong>&nbsp;o cambia di poco.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Implementare l&#8217;accessibilità by design ha un costo molto ridotto rispetto ad un adattamento a posteriori.</p></blockquote>



<h3 class="wp-block-heading" id="04-possiamo-aggiungere-rapidamente-l-accessibilita-prima-del-rilascio">#04 Possiamo aggiungere rapidamente l&#8217;accessibilità prima del rilascio</h3>



<p>Non funzionerà.&nbsp;Forse alla fine potrebbero essere aggiunte cose semplici come testo alternativo o etichettatura dei moduli, ma alcune&nbsp;<strong>UX complesse dovrebbero essere pianificate per essere accessibili</strong>.&nbsp;In alcuni casi, rendere accessibili le funzionalità al termine del processo di sviluppo può richiedere il refactoring completo.</p>



<h3 class="wp-block-heading" id="05-l-accessibilita-riguarda-solo-l-aggiunta-di-testo-alternativo-alle-immagini">#05 L&#8217;accessibilità riguarda solo l&#8217;aggiunta di testo alternativo alle immagini</h3>



<p>In effetti, la mancanza di testo alternativo per le immagini è&nbsp;<a rel="noreferrer noopener" href="https://webaim.org/projects/million/" target="_blank">uno dei maggiori problemi di accessibilità</a>&nbsp;.&nbsp;Ma oltre a questo, ci sono molte cose da considerare mentre si rende accessibile la&nbsp;<strong>struttura dei titoli </strong>del sito Web,&nbsp;<strong>i controlli funzionali</strong>&nbsp;,&nbsp;<strong>il contrasto del colore</strong>&nbsp;e molto altro.</p>



<h3 class="wp-block-heading" id="06-l-accessibilita-al-web-e-solo-una-responsabilita-dello-sviluppatore">#06 L&#8217;accessibilità al Web è solo una responsabilità dello sviluppatore</h3>



<p>È un lavoro di squadra.&nbsp;<strong>I progettisti</strong>&nbsp;creano interfacce utente accessibili, gli&nbsp;<strong>sviluppatori</strong>&nbsp;le realizzano,&nbsp;<strong>gli ingegneri QA</strong>&nbsp;eseguono i test di accessibilità, i&nbsp;<strong>PM</strong>&nbsp;si assicurano che l&#8217;accessibilità sia inclusa nei processi del team,&nbsp;<strong>il team legale</strong>&nbsp;verifica se un prodotto sia privo di rischi dal punto di vista dell&#8217;accessibilità,&nbsp;<strong>i gestori dei</strong>&nbsp;contenuti regolano il contenuto per renderlo conforme.</p>



<p><a href="https://accessibility.digital.gov/" target="_blank" rel="noreferrer noopener">Maggiori informazioni</a></p>



<h3 class="wp-block-heading" id="07-l-accessibilita-aiuta-solo-le-persone-con-disabilita">#07 L&#8217;accessibilità aiuta solo le persone con disabilità</h3>



<p>Fortunatamente&nbsp;<strong>aiuta tutti</strong>&nbsp;.&nbsp;È risaputo che l&#8217;applicazione dei principi di accessibilità migliora l&#8217;esperienza complessiva dell&#8217;utente e rende un sito Web più comodo da usare.</p>



<h3 class="wp-block-heading" id="08-rendere-accessibili-i-siti-web-non-comporta-vantaggi-aggiuntivi">#08 Rendere accessibili i siti Web non comporta vantaggi aggiuntivi</h3>



<p>Per elencarne solo alcuni: più utenti, più entrate, migliore reputazione, meno rischi di essere citati in giudizio, migliore competenza dei team di sviluppo e molto altro.&nbsp;Alla fine, fare&nbsp;<strong>una cosa buona</strong>&nbsp;non deve sempre richiedere una ragione redditizia.</p>



<h3 class="wp-block-heading" id="09-l-accessibilita-puo-essere-riparata-dall-overlay-di-accessibilita">#09 L&#8217;accessibilità può essere riparata dall&#8217;overlay di accessibilità</h3>



<p>Assolutamente no.&nbsp;C&#8217;è&nbsp;<a rel="noreferrer noopener" href="https://overlayfactsheet.com/" target="_blank">un&#8217;iniziativa</a>&nbsp;firmata da centinaia di professionisti che sostiene la rimozione dell&#8217;overlay di accessibilità web.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Questo a mio avviso è un punto di discussione molto interessante relativo al lungo termine e come integrazione a strumenti che già l&#8217;utente possiede e che possono andare in contrato con queste pratiche</p></blockquote>



<h3 class="wp-block-heading" id="10-l-utilizzo-di-strumenti-automatizzati-e-tutto-cio-che-devo-fare-per-rendere-accessibile-il-mio-sito-web">#10 L&#8217;utilizzo di strumenti automatizzati è tutto ciò che devo fare per rendere accessibile il mio sito web</h3>



<p>Sarebbe facile, ma no.&nbsp;Di solito i test di accessibilità automatizzati possono rilevare solo&nbsp;<a rel="noreferrer noopener" href="https://marcysutton.com/evinced-automated-accessibility-testing" target="_blank">il 30-50% di tutti i problemi di accessibilità</a>&nbsp;.&nbsp;In effetti, alcuni siti Web&nbsp;<a rel="noreferrer noopener" href="https://www.matuzo.at/blog/building-the-most-inaccessible-site-possible-with-a-perfect-lighthouse-score/" target="_blank">possono essere costruiti in modo</a>&nbsp;tale da superare i test automatici anche se il sito Web è totalmente inaccessibile.</p>



<h3 class="wp-block-heading" id="11-l-accessibilita-e-riservata-agli-utenti-non-vedenti">#11 L&#8217;accessibilità è riservata agli utenti non vedenti</h3>



<p>Certamente, l&#8217;accessibilità influisce sull&#8217;esperienza degli utenti non vedenti, ma riguarda anche gli utenti con altre disabilità visive come il daltonismo.&nbsp;Naturalmente avvantaggia anche le persone con altre forme di disabilità, legate all&#8217;udito, alla mobilità, alla parola o alla cognizione.&nbsp;Funziona anche per utenti anziani.&nbsp;In breve, per tutti gli utenti.&nbsp;È&nbsp;<strong>essenziale per alcuni ma utile per tutti</strong>.</p>



<p><a href="https://www.w3.org/WAI/fundamentals/accessibility-intro/" target="_blank" rel="noreferrer noopener">Maggiori informazioni</a></p>



<h3 class="wp-block-heading" id="12-l-accessibilita-e-facoltativa">#12 L&#8217;accessibilità è facoltativa</h3>



<p>Fino a quando la tua azienda non è stata citata in giudizio.&nbsp;Scopri le cause di&nbsp;<a rel="noreferrer noopener" href="https://www.nad.org/2011/06/16/nad-files-disability-civil-rights-lawsuit-against-netflix/" target="_blank">Netflix</a>&nbsp;e&nbsp;<a rel="noreferrer noopener" href="https://www.cnbc.com/2019/10/07/dominos-supreme-court.html" target="_blank">Domino</a>&nbsp;per capire che il prezzo per non essere accessibile potrebbe essere troppo alto.&nbsp;Ci sono&nbsp;<a rel="noreferrer noopener" href="https://www.w3.org/WAI/policies/" target="_blank">molte leggi</a>&nbsp;che possono richiedere l&#8217;accessibilità di un sito web.</p>



<h3 class="wp-block-heading" id="13-l-accessibilita-riguarda-solo-la-prevenzione-di-azioni-legali">#13 L&#8217;accessibilità riguarda solo la prevenzione di azioni legali</h3>



<p>L&#8217;accessibilità riguarda i tuoi utenti.&nbsp;Ovviamente, prevenire le azioni legali è importante per qualsiasi azienda, ma anche&nbsp;<strong>la soddisfazione degli utenti</strong>&nbsp;e la&nbsp;<strong>reputazione dell&#8217;azienda</strong>&nbsp;apportano molto valore.</p>



<h3 class="wp-block-heading" id="14-l-accessibilita-consiste-solo-nel-seguire-le-wcag">#14 L&#8217;accessibilità consiste solo nel seguire le WCAG</h3>



<p>Di solito parte da&nbsp;<a rel="noreferrer noopener" href="https://www.w3.org/WAI/WCAG21/quickref/" target="_blank">WCAG</a>, ma nella vita reale un sito Web conforme potrebbe non essere ancora completamente accessibile.&nbsp;L&#8217;accessibilità riguarda la comprensione dei bisogni di tutti gli utenti, nonché l&#8217;empatia e la consapevolezza.</p>



<h3 class="wp-block-heading" id="15-l-accessibilita-puo-essere-ottenuta-solo-aggiungendo-attributi-aria">#15 L&#8217;accessibilità può essere ottenuta solo aggiungendo attributi ARIA</h3>



<p>Naturalmente,&nbsp;<a rel="noreferrer noopener" href="https://www.w3.org/WAI/standards-guidelines/aria/" target="_blank">ARIA</a>&nbsp;è una parte importante dell&#8217;accessibilità, ma la regola d&#8217;oro di ARIA è&nbsp;<a rel="noreferrer noopener" href="https://w3c.github.io/using-aria/#rule1" target="_blank">&#8220;Non usare ARIA&#8221;</a>.&nbsp;Molti attributi ARIA potrebbero non essere necessari se&nbsp;vengono utilizzati tag&nbsp;<a rel="noreferrer noopener" href="https://developer.mozilla.org/en-US/docs/Learn/Accessibility/HTML#good_semantics" target="_blank">HTML semantici.</a></p>



<h3 class="wp-block-heading" id="16-non-abbiamo-bisogno-di-essere-conformi">#16 Non abbiamo bisogno di essere conformi</h3>



<p>Forse ne hai bisogno.&nbsp;Esistono numerose leggi e regolamenti che possono richiedere a un sito Web di seguire i principi di accessibilità.&nbsp;Vale sicuramente la pena controllarli.</p>



<p><a href="https://www.w3.org/WAI/policies/" data-type="URL" data-id="https://www.w3.org/WAI/policies/">Maggiori informazioni</a></p>



<h3 class="wp-block-heading" id="17-solo-gli-esperti-di-accessibilita-possono-implementare-correzioni-di-accessibilita">#17 Solo gli esperti di accessibilità possono implementare correzioni di accessibilità</h3>



<p>Per fortuna no.&nbsp;Chiunque abbia alcune capacità di accessibilità può implementare e testare i siti Web per l&#8217;accessibilità.&nbsp;In effetti, non è solo facile da imparare, ma a volte è un processo piuttosto divertente.&nbsp;Non richiede un&#8217;esperienza specifica per eseguire i&nbsp;<a rel="noreferrer noopener" href="https://www.w3.org/WAI/test-evaluate/preliminary/" target="_blank">controlli facili</a>.</p>



<h3 class="wp-block-heading" id="18-l-accessibilita-e-come-una-funzionalita-lo-fai-una-volta-e-poi-ce-l-hai">#18 L&#8217;accessibilità è come una funzionalità: lo fai una volta e poi ce l&#8217;hai</h3>



<p>L&#8217;accessibilità è una pratica, non una caratteristica.&nbsp;Significa che bisogna prendersene cura regolarmente, sia quando si lavora su funzionalità che quando si eseguono lavori di manutenzione.&nbsp;La conoscenza dell&#8217;accessibilità dovrebbe essere trasmessa quando un nuovo membro del team si unisce o quando i requisiti cambiano.</p>



<p><a href="https://ethanmarcotte.com/wrote/accessibility-is-not-a-feature/" target="_blank" rel="noreferrer noopener">Maggiori informazioni</a></p>



<h3 class="wp-block-heading" id="19-l-accessibilita-puo-essere-risolta-fornendo-una-versione-del-sito-web-separata-per-le-persone-disabili">#19 L&#8217;accessibilità può essere risolta fornendo una versione del sito Web separata per le persone disabili</h3>



<p>Quella è sempre stata un&#8217;ipotesi sbagliata.&nbsp;Molti team di sviluppo hanno&nbsp;<strong>imparato</strong>&nbsp;a proprie spese che mantenere diverse versioni del sito Web e mantenere tutti i contenuti aggiornati&nbsp;<strong>costano molto di più</strong>&nbsp;rispetto alla creazione dell&#8217;unico sito Web completamente accessibile.</p>



<h3 class="wp-block-heading" id="20-le-persone-con-disabilita-non-usano-il-web">#20 Le persone con disabilità non usano il web</h3>



<p>È sbagliato.&nbsp;Infatti, in alcuni casi internet è&nbsp;<strong>l&#8217;unico modo</strong>&nbsp;con cui le persone disabili possono comunicare con il mondo.&nbsp;Inoltre, laddove le &#8220;persone abili&#8221; utilizzano le loro sensazioni naturali come la vista e l&#8217;udito,&nbsp;<strong>le persone con disabilità devono fare affidamento sulle tecnologie</strong>.</p>



<p><a href="https://www.w3.org/WAI/people-use-web/" target="_blank" rel="noreferrer noopener">Maggiori informazioni</a></p>



<h3 class="wp-block-heading" id="21-i-ciechi-non-guardano-i-film">#21 I ciechi non guardano i film</h3>



<p>Lo fanno sicuramente.&nbsp;Con l&#8217;aiuto delle&nbsp;<strong>descrizioni audio</strong>&nbsp;possono guardare e ascoltare qualsiasi contenuto multimediale come fanno tutte le altre persone.</p>



<p><a href="https://www.w3.org/WAI/media/av/description/" target="_blank" rel="noreferrer noopener">Maggiori informazioni</a></p>



<h3 class="wp-block-heading" id="22-l-accessibilita-puo-essere-verificata-solo-da-persone-disabili">#22 L&#8217;accessibilità può essere verificata solo da persone disabili</h3>



<p>Bene, di solito le persone disabili sono i migliori tester: usano le tecnologie assistive a tempo pieno.&nbsp;Tuttavia,&nbsp;<strong>tutti possono imparare</strong>&nbsp;a testare l&#8217;accessibilità dei siti Web.</p>



<p><a rel="noreferrer noopener" href="https://www.w3.org/WAI/test-evaluate/" target="_blank">Maggiori informazioni</a></p>



<h1 class="wp-block-heading" id="conclusione">Conclusione</h1>



<p>Quindi amici sviluppatori e designer, da domani sforziamoci un po&#8217; di più a migliorare il mondo per tutti quanti. </p>
        <div class="booster-block booster-reactions-block">
            <div class="twp-reactions-icons">
                
                <div class="twp-reacts-wrap">
                    <a react-data="be-react-1" post-id="1778" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/happy.svg" alt="Happy">
                    </a>
                    <div class="twp-reaction-title">
                        Happy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-2" post-id="1778" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sad.svg" alt="Sad">
                    </a>
                    <div class="twp-reaction-title">
                        Sad                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-3" post-id="1778" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/excited.svg" alt="Excited">
                    </a>
                    <div class="twp-reaction-title">
                        Excited                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-6" post-id="1778" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sleepy.svg" alt="Sleepy">
                    </a>
                    <div class="twp-reaction-title">
                        Sleepy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-4" post-id="1778" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/angry.svg" alt="Angry">
                    </a>
                    <div class="twp-reaction-title">Angry</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                        
                    </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-5" post-id="1778" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/surprise.svg" alt="Surprise">
                    </a>
                    <div class="twp-reaction-title">Surprise</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

            </div>
        </div>

    ]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1778</post-id>	</item>
		<item>
		<title>CSS &#8211; Abbelliamo &#8211; Parte II &#8211; I Gradienti</title>
		<link>https://www.robertobeccari.it/2020/05/05/cssigradienti/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cssigradienti</link>
		
		<dc:creator><![CDATA[Roberto Beccari]]></dc:creator>
		<pubDate>Tue, 05 May 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS Semantico - Il libro]]></category>
		<category><![CDATA[Web design]]></category>
		<category><![CDATA[colori]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Css Semantico]]></category>
		<category><![CDATA[gradienti]]></category>
		<category><![CDATA[tips & tricks]]></category>
		<category><![CDATA[web design]]></category>
		<guid isPermaLink="false">https://www.robertobeccari.it/?p=1437</guid>

					<description><![CDATA[È una delle tendenze di questo 2020 insieme alla tipografia, che da qualche anno è veramente in crescita e quest'anno più che mai con i Variable Fonts, alle immagini vettoriali, le animazioni e le ombre. ]]></description>
										<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
                <div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>5 Minute, 54 Second                </div>

            </div>
<p><strong>Eccoci al secondo appuntamento</strong>, se ve lo siete persi, <a href="https://www.robertobeccari.it/2020/04/07/css-abbelliamo-parte-i/">ecco il primo articolo</a>, con &#8220;abbelliamo le nostre pagine con i CSS&#8221;, suona un po&#8217; come &#8220;divertiamoci con le bandiere&#8221; di <a rel="noreferrer noopener" href="https://it.wikipedia.org/wiki/The_Big_Bang_Theory" target="_blank">Big Bang Theory</a>.</p>



<p><strong>Parliamo di <a rel="noreferrer noopener" href="https://www.w3schools.com/css/css3_gradients.asp" target="_blank">Gradienti</a></strong>.</p>



<p>È una delle tendenze di questo 2020 insieme alla tipografia, che da qualche anno è veramente in crescita e quest&#8217;anno più che mai con i <a href="https://www.robertobeccari.it/2020/04/15/css-le-animazioni/">Variable Fonts</a>, alle immagini vettoriali, le <a href="https://www.robertobeccari.it/2020/04/15/css-le-animazioni/">animazioni</a> e le ombre. </p>



<p><strong>Puoi registrarti adesso sul sito&nbsp;<a rel="noreferrer noopener" href="http://bit.ly/CSSSemanticoLibro" target="_blank">CSSsemantico.it</a>&nbsp;per ricevere GRATUITAMENTE la tua copia del mio libro in formato elettronico appena sarà disponibile.</strong></p>



<p>Vediamo di cosa si tratta, anche se risulta chiaro e di come li possiamo usare. <strong>Possiamo utilizzare diverse tipologie di gradienti</strong> e, grazie alle caratteristiche che possiamo impostare, usanti in modi veramente divertenti <strong>creando effetti molto interessanti</strong>.</p>



<p>Prima di iniziare, specifichiamo due cose:</p>



<ul class="wp-block-list"><li>I gradienti sono applicabili allo sfondo di un oggetto ma non sono un colore, è un&#8217;elaborazione che dal browser è vista come uno speciale tipo di un&#8217;immagine, per questo motivo la dobbiamo utilizzare in modo corretto con la proprietà <code>background</code> o <code>background-image</code>. Non è valido come <code>background-color</code>. </li><li>Essendo gestiti come immagini, possiamo applicare più di un gradiente o utilizzare anche immagini, allo stesso oggetto con effetti di sovrapposizione molto efficaci.</li></ul>



<p>Iniziamo.</p>



<h2 class="wp-block-heading">Gradienti lineari </h2>



<div class="wp-block-cp-codepen-gutenberg-embed-block cp_embed_wrapper"><iframe id="cp_embed_gOaorYR" src="//codepen.io/anon/embed/gOaorYR?height=350&amp;theme-id=1&amp;slug-hash=gOaorYR&amp;default-tab=result" height="350" scrolling="no" frameborder="0" allowfullscreen allowpaymentrequest name="CodePen Embed gOaorYR" title="CodePen Embed gOaorYR" class="cp_embed_iframe" style="width:100%;overflow:hidden">CodePen Embed Fallback</iframe></div>



<pre class="wp-block-code"><code>&lt;!-- Html -->
&lt;div class="content">
&lt;/div>

/* stile */
.content {
  background: linear-gradient(white, black);
}</code></pre>



<p>Esempio semplice, un gradiente lineare dall&#8217;alto al basso che parte dal bianco e arriva al nero.</p>



<p><strong>La funzione <code>linear-gradient</code> prende in ingresso un minimo di due valori</strong>, quello di partenza e quello di arrivo e calcola in automatico tutti i passaggi di colore. Certo, prende in ingresso MINIMO due valore, ma possiamo specificarne più di due. Ecco il risultato se tra il bianco e il nero mettiamo il rosa. </p>



<div class="wp-block-cp-codepen-gutenberg-embed-block cp_embed_wrapper"><iframe id="cp_embed_XWmVdZb" src="//codepen.io/anon/embed/XWmVdZb?height=350&amp;theme-id=1&amp;slug-hash=XWmVdZb&amp;default-tab=result" height="350" scrolling="no" frameborder="0" allowfullscreen allowpaymentrequest name="CodePen Embed XWmVdZb" title="CodePen Embed XWmVdZb" class="cp_embed_iframe" style="width:100%;overflow:hidden">CodePen Embed Fallback</iframe></div>



<p>Fino a qui è facile, ma ci sono moltissime altre varianti che possiamo applicare.</p>



<p>La funzione <code>linear-gradient</code>, come detto, prende in ingresso diversi parametri, il primo, se diverso da un colore, rappresenta la direzione verso la quale si deve applicare il gradiente oppure il suo angolo. Se non viene specificato, come nei due esempi precedenti, è equivalente a dall&#8217;alto al basso TO BOTTOM.</p>



<p>Anche per l&#8217;elenco dei colori abbiamo diverse possibilità per singolo parametro, possiamo infatti specificare il colore, da quando questo deve applicarsi fino a quando deve finire, questo per permettere il massimo livello di personalizzazione del gradiente.</p>



<p>Ecco la Sintassi formale.</p>



<pre class="wp-block-preformatted">linear-gradient(
  [ <a href="https://developer.mozilla.org/en-US/CSS/angle">&lt;angolo&gt;</a> | to &lt;lato-di-destinazione&gt;,]? &lt;lista-colori&gt; )</pre>



<p>Vediamo alcuni esempi di come dichiarare il gradiente lineare.</p>



<pre class="wp-block-code"><code>/* dall'alto in basso, dal bianco al nero */
.content {
background: linear-gradient(white, black);
}

/* dal rosso al blu con un angolo di 45 gradi */
.content {
background: linear-gradient(45deg, red, blue);
}

/* dall'arancio, che parte dal 60% al ciano con un angolo di 135 gradi */
.content {
background: linear-gradient(135deg, orange, orange 60%, cyan);
}

/* verso destra con rosso, arancio, giallo, verde e blue, in questo esempio i colori vengono definiti senza sfumatura in quanto viene specificato l'intervallo di interruzione per ogni colore senza spazio di incrocio tra colori */
.content {
background: linear-gradient(to right, 
     red 20%, orange 20% 40%, yellow 40% 60%, green 60% 80%, blue 80%);
}

/* Questo lo lascio provare a voi ;) */
.content {
background:
      linear-gradient(217deg, rgba(255,0,0,.8), rgba(255,0,0,0) 70.71%),
      linear-gradient(127deg, rgba(0,255,0,.8), rgba(0,255,0,0) 70.71%),
      linear-gradient(336deg, rgba(0,0,255,.8), rgba(0,0,255,0) 70.71%);
}</code></pre>



<h2 class="wp-block-heading">Gradienti radiali</h2>



<div class="wp-block-cp-codepen-gutenberg-embed-block cp_embed_wrapper"><iframe id="cp_embed_JjYMKGr" src="//codepen.io/anon/embed/JjYMKGr?height=350&amp;theme-id=1&amp;slug-hash=JjYMKGr&amp;default-tab=result" height="350" scrolling="no" frameborder="0" allowfullscreen allowpaymentrequest name="CodePen Embed JjYMKGr" title="CodePen Embed JjYMKGr" class="cp_embed_iframe" style="width:100%;overflow:hidden">CodePen Embed Fallback</iframe></div>



<pre class="wp-block-code"><code>&lt;!-- Html -->
&lt;div class="content">
&lt;/div>

/* stile */
.content {
  background: radial-gradient(white, black);
}</code></pre>



<p>Nulla di più semplice, cambi la funzione e il gradiente è circolare partendo dal centro e andando verso l&#8217;esterno.</p>



<p>Il principio della funzione <code>radial-gradient</code> è il medesimo di <code>linear-gradient</code>, la differenza principale sta nel primo parametro nel qualche possiamo specificare le caratteristiche del modello circolare da applicare.</p>



<p>Ecco la Sintassi formale.</p>



<pre class="wp-block-preformatted">radiale gradiente (
  [[cerchia || &lt;lunghezza&gt; ] [at &lt;posizione&gt; ]? , |
    [ellisse || [ &lt;lunghezza&gt; | &lt;percentuale&gt; ] {2}] [at &lt;posizione&gt; ]? , |
    [[cerchia | ellisse] || &lt;extent-keyword&gt;] [at &lt;posizione&gt; ]? , |
    a &lt;posizione&gt; ,
  ]?
  &lt;color-stop-list&gt; [, &lt;color-stop-list&gt;] +
)</pre>



<p>Come vedete, le combinazioni date dai parametri sono molo flessibili, con qualche esempio vi sarà tutto più chiaro.</p>



<pre class="wp-block-code"><code>/* Gradiente semplice, inizio centrale, allo 0% ciano, trasparente dal 20% e salmone dal 40% fino al riempimento  */
.radial-gradient {
  background-image: radial-gradient(cyan 0%, transparent 20%, salmon 40%);
} 

/* Gradiente non centrato, inizio dall'angolo alto-sinistra con un scostamento di 40px per lato e procedo con i colori #f35 fino a #43e */
.radial-gradient {
  background-image: radial-gradient(farthest-corner at 40px 40px,
      #f35 0%, #43e 100%);
}</code></pre>



<p>Come nel caso del gradiente lineare, possiamo specificare intervalli più aperti o più chiusi per determinare la gradazione e l&#8217;effetto si incrocio tra i vari colori.</p>



<p>Per un maggiore dettaglio, vi rimando al link della <a rel="noreferrer noopener" href="https://developer.mozilla.org/en-US/docs/Web/CSS/radial-gradient" target="_blank">documentazione ufficiale Mozilla</a> dal qualche ho preso questi esempi e che estende le informazioni relative ai parametri. </p>



<h2 class="wp-block-heading">Gradiente conico</h2>



<p>Lo inserisco perché lo considero molto interessante da diversi punti di vista ma questa funzione non è ancora supportata dal tutti i browser, inoltre, dal punto di vista esclusivamente stilistico non è pratico e poco adattabile a creare layout di impatto.</p>



<p><a href="https://caniuse.com/#feat=css-conic-gradients" target="_blank" rel="noreferrer noopener">Qui trovate la lista dei browser compatibili</a> che supportano questa funzione.</p>



<div class="wp-block-cp-codepen-gutenberg-embed-block cp_embed_wrapper"><iframe id="cp_embed_jObYwXM" src="//codepen.io/anon/embed/jObYwXM?height=400&amp;theme-id=1&amp;slug-hash=jObYwXM&amp;default-tab=result" height="400" scrolling="no" frameborder="0" allowfullscreen allowpaymentrequest name="CodePen Embed jObYwXM" title="CodePen Embed jObYwXM" class="cp_embed_iframe" style="width:100%;overflow:hidden">CodePen Embed Fallback</iframe></div>



<p>La sua presenza, dove supportata è però molto utile, se proviamo ad applicare qualche proprietà aggiuntiva, come ad esempio un <code>border-radius</code>, lasciamo un intervallo di un grado tra gli angoli di interpolazione, ecco il risultato.</p>



<div class="wp-block-cp-codepen-gutenberg-embed-block cp_embed_wrapper"><iframe id="cp_embed_KKdZvPW" src="//codepen.io/anon/embed/KKdZvPW?height=400&amp;theme-id=1&amp;slug-hash=KKdZvPW&amp;default-tab=result" height="400" scrolling="no" frameborder="0" allowfullscreen allowpaymentrequest name="CodePen Embed KKdZvPW" title="CodePen Embed KKdZvPW" class="cp_embed_iframe" style="width:100%;overflow:hidden">CodePen Embed Fallback</iframe></div>



<pre class="wp-block-code"><code>/* ecco lo stile per creare il nostro grafico */
background: conic-gradient(
    red 6deg,
    orange 7deg 68deg,
    yellow 69deg 120deg,
    green 121deg 280deg,
    blue 281deg
  );</code></pre>



<p>Un perfetto grafico a torta, in puro CSS, senza l&#8217;utilizzo di complicate librerie grafiche in JavaScript o altri linguaggi.</p>



<p>Anche in questo caso, vi rimando al link della <a rel="noreferrer noopener" href="https://developer.mozilla.org/en-US/docs/Web/CSS/conic-gradient" target="_blank">documentazione ufficiale Mozilla</a>, cambia il primo parametro e le impostazioni dei parametri colori per determinare l&#8217;intervallo di angolazione.</p>



<h2 class="wp-block-heading">Altre funzioni</h2>



<p>Esistono altre funzioni di supporto alla creazione di gradienti, con supporto alle ripetizioni e altre funzionalità interessanti, ma anche queste in parte non sono ancora supportate da tutti i browser quindi aspettiamo che il tutto prenda una forma ufficiale.</p>



<p>CSS sta evolvendo tantissimo, ogni sula parte ha intrapreso diverse strade e si cercando di non disperdere il tutto in ulteriori sotto-rami che possano a loro volta diventare altro.</p>



<p>Si sta cercando di tenere tutto assieme per proporre un CSS4, che forse non vedremo mai nel suo insieme.</p>



<p>Sarà un ulteriore argomento di discussione.</p>



<p><strong>Puoi registrarti adesso sul sito&nbsp;<a rel="noreferrer noopener" href="http://bit.ly/CSSSemanticoLibro" target="_blank">CSSsemantico.it</a>&nbsp;per ricevere GRATUITAMENTE la tua copia del mio libro in formato elettronico appena sarà disponibile.</strong></p>



<h2 class="wp-block-heading">Risorse utili</h2>



<p><strong>Documentazione</strong></p>



<ul class="wp-block-list"><li><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Images/Using_CSS_gradients">https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Images/Using_CSS_gradients</a></li><li><a href="https://www.w3schools.com/css/css3_gradients.asp">https://www.w3schools.com/css/css3_gradients.asp</a></li></ul>



<p><strong>Strumenti</strong><br>Utili per creare i gradienti in modo visivo e veloce.</p>



<ul class="wp-block-list"><li><a href="https://cssgradient.io/">https://cssgradient.io/</a></li><li><a href="https://webgradients.com/">https://webgradients.com/</a></li><li><a href="https://www.colorzilla.com/gradient-editor/">https://www.colorzilla.com/gradient-editor/</a></li><li><a href="https://uigradients.com/">https://uigradients.com/</a></li></ul>
        <div class="booster-block booster-reactions-block">
            <div class="twp-reactions-icons">
                
                <div class="twp-reacts-wrap">
                    <a react-data="be-react-1" post-id="1437" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/happy.svg" alt="Happy">
                    </a>
                    <div class="twp-reaction-title">
                        Happy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-2" post-id="1437" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sad.svg" alt="Sad">
                    </a>
                    <div class="twp-reaction-title">
                        Sad                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-3" post-id="1437" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/excited.svg" alt="Excited">
                    </a>
                    <div class="twp-reaction-title">
                        Excited                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-6" post-id="1437" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sleepy.svg" alt="Sleepy">
                    </a>
                    <div class="twp-reaction-title">
                        Sleepy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-4" post-id="1437" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/angry.svg" alt="Angry">
                    </a>
                    <div class="twp-reaction-title">Angry</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                        
                    </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-5" post-id="1437" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/surprise.svg" alt="Surprise">
                    </a>
                    <div class="twp-reaction-title">Surprise</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

            </div>
        </div>

    ]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1437</post-id>	</item>
		<item>
		<title>CSS &#8211; Transizioni</title>
		<link>https://www.robertobeccari.it/2020/04/21/css-transizioni/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=css-transizioni</link>
		
		<dc:creator><![CDATA[Roberto Beccari]]></dc:creator>
		<pubDate>Tue, 21 Apr 2020 07:00:00 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS Semantico - Il libro]]></category>
		<category><![CDATA[Web design]]></category>
		<category><![CDATA[animazioni]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Css Semantico]]></category>
		<category><![CDATA[transizioni]]></category>
		<category><![CDATA[web design]]></category>
		<guid isPermaLink="false">https://www.robertobeccari.it/?p=1399</guid>

					<description><![CDATA[Nel mio articolo della settimana scorsa sulle Animazioni con CSS, ho parlato di come iniziare ad utilizzare le animazioni per dare vita agli elementi della pagina. Oggi parliamo di un'altra funzionalità utili allo stesso scopo, le transizioni.]]></description>
										<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
                <div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>3 Minute, 6 Second                </div>

            </div>
<p>Nel <a rel="noreferrer noopener" aria-label="mio articolo della settimana scorsa (opens in a new tab)" href="https://www.robertobeccari.it/2020/04/15/css-le-animazioni/" target="_blank">mio articolo della settimana scorsa</a> sulle <a rel="noreferrer noopener" aria-label="Animazioni con CSS (opens in a new tab)" href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Animations/Using_CSS_animations" target="_blank">Animazioni con CSS</a>, ho parlato di come iniziare ad utilizzare le animazioni per dare vita agli elementi della pagina. Oggi parliamo di un&#8217;altra funzionalità utile allo scopo, <strong>le transizioni</strong>.</p>



<p><strong>Puoi registrarti adesso sul sito&nbsp;<a rel="noreferrer noopener" href="http://bit.ly/CSSSemanticoLibro" target="_blank">CSSsemantico.it</a>&nbsp;per ricevere GRATUITAMENTE la tua copia del mio libro in formato elettronico appena sarà disponibile.</strong> </p>



<p>Le transizioni permettono di cambiare lo stile degli elementi della pagina, a differenza delle animazioni, che in base al momento impostano delle proprietà specifiche, le transizioni ci consentono di cambiare valore su una o più proprietà di un oggetto decidendo in quanto tempo questa transizione   debba avvenire. L&#8217;effetto di transizione inizierà quando la proprietà CSS specificata cambia valore. È importante ricordare che la direzione è sempre unica e unidirezionale, <strong>passo dal valore <em>X</em> della proprietà <em>A</em> al valore <em>Y</em> della proprietà <em>A</em></strong> <strong>in <em>N</em> secondi</strong>. </p>



<p>Facciamo un esempio.</p>



<pre class="wp-block-code"><code>/* Proprietà dell'elemento */
div {
  position:relative;
  left:50%;
  width: 100px;
  height: 100px;
  background: green;
  transform: translateX(-50%);

  transition: width 1s;
}

/* Proprietà di variazione dell'elemento al passaggio del mouse */
div:hover {
  width: 300px;
}</code></pre>



<div class="wp-block-cp-codepen-gutenberg-embed-block cp_embed_wrapper"><iframe id="cp_embed_mdeVwzE" src="//codepen.io/anon/embed/mdeVwzE?height=250&amp;theme-id=1&amp;slug-hash=mdeVwzE&amp;default-tab=result" height="250" scrolling="no" frameborder="0" allowfullscreen allowpaymentrequest name="CodePen Embed mdeVwzE" title="CodePen Embed mdeVwzE" class="cp_embed_iframe" style="width:100%;overflow:hidden">CodePen Embed Fallback</iframe></div>



<p>L&#8217;esempio sopra dice che, <strong>il mio elemento <code>div</code> ha una transizione <code>transition</code> sulla lunghezza <code>width</code> della durata di 1 secondo</strong>. Significa che ogni volta che verrà modificato il valore della proprietà <code>width</code>, in questo caso andando con il mouse sopra all&#8217;elemento, si attiverà una transizione che porterà al nuovo valore animando l&#8217;oggetto per 1 secondo.</p>



<p>Come per le animazioni, anche per questa funzionalità sono presenti proprietà dedicate, vediamole.</p>



<h3 class="wp-block-heading">Le proprietà di trasformazione</h3>



<p><strong>transition-delay</strong><br>Specifica un ritardo (in secondi) per l&#8217;effetto di transizione.</p>



<p><strong>transition-duration</strong><br>Specifica la durata della trasformazione. </p>



<p><strong>transition-property</strong><br>Specifica quale proprietà, alla quale cambio il valore, deve attivare la transizione. i possibili valori sono:</p>



<ul class="wp-block-list"><li><code>all</code>&nbsp;&#8211; La transizione si attiva per qualsiasi proprietà che modifichiamo del nostro elemento (impostazione predefinita)</li><li><code>nome della proprietà</code>&nbsp;&#8211; Possiamo specificare una o più proprietà, separate da virgola, per le quali vogliamo attivare la transizione.</li></ul>



<p><strong>transition-timing-function</strong><br>Specifica la curva di velocità dell&#8217;effetto di transizione, i possibili valori di questa proprietà sono i seguenti:</p>



<ul class="wp-block-list"><li><code>ease</code>&nbsp;&#8211; specifica un effetto di transizione con un avvio lento, quindi veloce, quindi termina lentamente (impostazione predefinita)</li><li><code>linear</code>&nbsp;&#8211; specifica un effetto di transizione con la stessa velocità dall&#8217;inizio alla fine</li><li><code>ease-in</code>&nbsp;&#8211; specifica un effetto di transizione con un avvio lento</li><li><code>ease-out</code>&nbsp;&#8211; specifica un effetto di transizione con una fine lenta</li><li><code>ease-in-out</code>&nbsp;&#8211; specifica un effetto di transizione con inizio e fine lenti</li><li><code>cubic-bezier(n,n,n,n)</code>&nbsp;&#8211; consente di definire i propri valori in una funzione cubica-bezier</li></ul>



<p><strong>transition</strong><br>Questa proprietà è la classica scorciatoia presente in CSS, la possiamo utilizzare nel seguente modo&#8230;<br><strong>transition</strong>:&nbsp;<em>property duration timing-function delay</em>|initial|inherit; </p>



<h4 class="wp-block-heading">Tips</h4>



<p>Ecco un modo molto comodo per specificare i valori, come nella proprietà <code>transition-property</code> posso specificare più valori, anche per la proprietà <code>transition-duration</code> posso specificare più valori separati da virgola, questo verranno mappati, in passa alla posizione, sulla proprietà specifica.</p>



<pre class="wp-block-code"><code>div {
  transition-property: opacity, left, top, height;
  transition-duration: 3s, 5s, 3s, 5s;
}</code></pre>



<p>In questo esempio, <code>opacity</code> ci metterà 3s, <code>left</code> 5s, e così via. </p>



<h3 class="wp-block-heading">Ma dove posso/devo usarla?</h3>



<p>Personalmente utilizzo tantissimo le transizioni, le trovo particolarmente eleganti, perché di questo si parla, per la gestione degli stati degli elementi, usato in combinazione con JavaScript. Un altro campo nel quale le utilizzo è per la responsività e l&#8217;adattamento degli elementi nella pagina in fase di ridimensionamento del browser oppure per l&#8217;adattamento del contenuto per i dispositivi mobili.  </p>



<p>Fammi sapere sui miei canali Social se questo articolo ti è stato utile e non dimenticare&#8230;</p>



<p><strong>Puoi registrarti adesso sul sito&nbsp;<a rel="noreferrer noopener" href="http://bit.ly/CSSSemanticoLibro" target="_blank">CSSsemantico.it</a>&nbsp;per ricevere GRATUITAMENTE la tua copia del mio libro in formato elettronico appena sarà disponibile.</strong> </p>
        <div class="booster-block booster-reactions-block">
            <div class="twp-reactions-icons">
                
                <div class="twp-reacts-wrap">
                    <a react-data="be-react-1" post-id="1399" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/happy.svg" alt="Happy">
                    </a>
                    <div class="twp-reaction-title">
                        Happy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-2" post-id="1399" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sad.svg" alt="Sad">
                    </a>
                    <div class="twp-reaction-title">
                        Sad                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">1</span>
                                                                        <span class="twp-react-percent"><span>100</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-3" post-id="1399" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/excited.svg" alt="Excited">
                    </a>
                    <div class="twp-reaction-title">
                        Excited                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-6" post-id="1399" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sleepy.svg" alt="Sleepy">
                    </a>
                    <div class="twp-reaction-title">
                        Sleepy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-4" post-id="1399" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/angry.svg" alt="Angry">
                    </a>
                    <div class="twp-reaction-title">Angry</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                        
                    </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-5" post-id="1399" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/surprise.svg" alt="Surprise">
                    </a>
                    <div class="twp-reaction-title">Surprise</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

            </div>
        </div>

    ]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1399</post-id>	</item>
		<item>
		<title>CSS &#8211; Le animazioni</title>
		<link>https://www.robertobeccari.it/2020/04/15/css-le-animazioni/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=css-le-animazioni</link>
					<comments>https://www.robertobeccari.it/2020/04/15/css-le-animazioni/#comments</comments>
		
		<dc:creator><![CDATA[Roberto Beccari]]></dc:creator>
		<pubDate>Wed, 15 Apr 2020 07:00:00 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS Semantico - Il libro]]></category>
		<category><![CDATA[Web design]]></category>
		<category><![CDATA[animazioni]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Css Semantico]]></category>
		<category><![CDATA[web design]]></category>
		<guid isPermaLink="false">https://www.robertobeccari.it/?p=1378</guid>

					<description><![CDATA[Oggi parliamo di una funzionalità di CSS che apprezzo particolarmente perché permette di dare vita agli elementi della pagina. Parliamo di animazioni CSS.]]></description>
										<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
                <div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>4 Minute, 18 Second                </div>

            </div>
<p>Oggi parliamo di una funzionalità di CSS che apprezzo particolarmente perché permette di dare vita agli elementi della pagina. Parliamo di <strong>animazioni CSS</strong>.</p>



<p>Oramai lo avrete capito, sono veramente un fan sfegatato di Cascading Style Sheet, il fatto che ci stia scrivendo anche un libro conferma la cosa.</p>



<p><strong>Puoi registrarti adesso sul sito <a rel="noreferrer noopener" href="http://bit.ly/CSSSemanticoLibro" target="_blank">CSSsemantico.it</a> per ricevere GRATUITAMENTE la tua copia del mio libro in formato elettronico appena sarà disponibile. </strong></p>



<p>Dicevamo, parliamo di animazioni. CSS mette a disposizione alcune proprietà e regole che permettono di definire le caratteristiche dell&#8217;animazione che vogliamo applicare ai nostri elementi. Vediamoli in dettaglio e facciamo qualche esempio.</p>



<h3 class="wp-block-heading">Le proprietà</h3>



<p>Questo è l&#8217;elenco delle proprietà utili alla gestione dell&#8217;animazione. Queste proprietà vengono assegnate all&#8217;elemento che vogliamo animare.</p>



<p><strong>animation-name</strong><br>Identifica il nome dell&#8217;animazione che vogliamo applicare all&#8217;elemento</p>



<p><strong>animation-duration</strong><br>Definisce la durata dell&#8217;animazione, esempio: 4s, l&#8217;animazione durerà quattro secondi.</p>



<p><strong>animation-delay</strong><br>Rappresenta il ritardo che deve attendere l&#8217;animazione prima di iniziare, esempio: 2s, l&#8217;animazione inizierà dopo due secondi.</p>



<p><strong>animation-iteration-count</strong><br>Specifica il numero di volte in cui viene eseguita un&#8217;animazione. Impostando il valore <code>infinite</code>, l&#8217;animazione verrà eseguita in modo continuo (loop). </p>



<p><strong>animation-direction</strong><br>Specifica se un&#8217;animazione deve essere riprodotta in avanti, all&#8217;indietro o in cicli alternati, i possibili valori sono:</p>



<ul class="wp-block-list"><li><code>normal</code>&#8211; L&#8217;animazione viene riprodotta normalmente (in avanti).&nbsp;Questo è predefinito</li><li><code>reverse</code>&nbsp;&#8211; L&#8217;animazione viene riprodotta in senso inverso (all&#8217;indietro)</li><li><code>alternate&nbsp;</code>&#8211; L&#8217;animazione viene riprodotta prima in avanti, quindi all&#8217;indietro</li><li><code>alternate-reverse</code>&nbsp;&#8211; L&#8217;animazione viene riprodotta prima all&#8217;indietro, quindi in avanti</li></ul>



<p><strong>animation-timing-function</strong><br>Questa proprietà, specifica la curva di velocità dell&#8217;animazione, i valori assegnabili sono:</p>



<ul class="wp-block-list"><li><code>ease</code>&nbsp;&#8211; Specifica un&#8217;animazione con avvio lento, quindi veloce, quindi fine lento (impostazione predefinita)</li><li><code>linear</code>&nbsp;&#8211; Specifica un&#8217;animazione con la stessa velocità dall&#8217;inizio alla fine</li><li><code>ease-in</code>&nbsp;&#8211; Specifica un&#8217;animazione con un avvio lento</li><li><code>ease-out</code>&nbsp;&#8211; Specifica un&#8217;animazione con una fine lenta</li><li><code>ease-in-out</code>&nbsp;&#8211; Specifica un&#8217;animazione con inizio e fine lenti</li><li><code>cubic-bezier(n,n,n,n)</code>&nbsp;&#8211; Consente di definire i propri valori in una funzione cubica-bezier</li></ul>



<p><strong>animation-fill-mode</strong><br>Specifica uno stile per l&#8217;elemento quando l&#8217;animazione non viene riprodotta (prima che inizi, dopo che finisce, o entrambi).  e animazioni CSS non influiscono sull&#8217;elemento prima della riproduzione del primo fotogramma chiave o dopo la riproduzione dell&#8217;ultimo fotogramma chiave.<br>I valori disponibili sono:</p>



<ul class="wp-block-list"><li><code>none</code>&#8211; Valore predefinito.&nbsp;L&#8217;animazione non applicherà alcuno all&#8217;elemento prima o dopo l&#8217;esecuzione</li><li><code>forwards</code>&nbsp;&#8211; L&#8217;elemento manterrà i valori di stile impostati dall&#8217;ultimo fotogramma chiave (dipende da animazione-direzione e animazione-iterazione-conteggio)</li><li><code>backwards</code>&nbsp;&#8211; L&#8217;elemento otterrà i valori di stile impostati dal primo fotogramma chiave (dipende dalla direzione dell&#8217;animazione) e li manterrà durante il periodo di ritardo dell&#8217;animazione</li><li><code>both</code>&nbsp;&#8211; L&#8217;animazione seguirà le regole sia in avanti che all&#8217;indietro, estendendo le proprietà dell&#8217;animazione in entrambe le direzioni</li></ul>



<p><strong>animation</strong><br>Questa proprietà permette di definire in un&#8217;unica volta le caratteristiche dell&#8217;animazione che vogliamo applicare invece di utilizzare le singole proprietà. È l&#8217;equivalente di proprietà come border, overflow, ecc.<br>Questa è la modalità con la quale possiamo definire l&#8217;animazione usando questa proprietà.</p>



<p><strong>animation</strong>:&nbsp;<em>name duration timing-function delay iteration-count direction fill-mode play-state</em>; </p>



<h3 class="wp-block-heading">La regola @keyframes</h3>



<p>La regola @keyframes, come per @media, @support, ecc. è una regola di definizione. Questa permette infatti di definire i passaggi (keys) sulla nostra linea temporale di animazione, del resto se ne occupa il motore di render del browser che state utilizzando, l&#8217;animazione cambierà gradualmente dallo stile corrente al nuovo stile. </p>



<p>Ma come definisco un&#8217;animazione? </p>



<pre class="wp-block-code"><code>/* Definizione */
@keyframes &lt;nome_animazione> {
    &lt;key> { ... }
}

/* Esempio */
@keyframes primaanimazione  {
  from {
    background-color: red;
  }
  to {
    background-color: green;
  }
}

/* Elemento */
.animation {
  animation-name: primaanimazione;
  animation-duration: 4s;
  animation-iteration-count: infinite;
  animation-direction: alternate-reverse;
}</code></pre>



<p>Posso ovviamente creare tutto le animazioni di cui ho bisogno, suggerisco di non usare nomi a caso, siate prolissi piuttosto che andare a codici che con il tempo potreste dimenticare.<br>Nell&#8217;esempio di seguito, ho applicato l&#8217;animazione definita sopra.</p>



<div class="wp-block-cp-codepen-gutenberg-embed-block cp_embed_wrapper"><iframe id="cp_embed_MWaaEpJ" src="//codepen.io/anon/embed/MWaaEpJ?height=350&amp;theme-id=1&amp;slug-hash=MWaaEpJ&amp;default-tab=result" height="350" scrolling="no" frameborder="0" allowfullscreen allowpaymentrequest name="CodePen Embed MWaaEpJ" title="CodePen Embed MWaaEpJ" class="cp_embed_iframe" style="width:100%;overflow:hidden">CodePen Embed Fallback</iframe></div>



<h4 class="wp-block-heading">from&#8230;to</h4>



<p>Per dichiarare i nostri passaggi sulla linea temporale, possiamo utilizzare due modalità, la prima è un semplice riferimento inizio (from) &#8211; fine (to), la seconda è un valore da 0% a 100% che identifica il valore progressivo dell&#8217;animazione, la durata dell&#8217;animazione è definita dalla proprietà <code>animation-duration</code> associato all&#8217;elemento che stiamo animando.</p>



<p>Possiamo, volendo, anche utilizzate l&#8217;insieme delle due dichiarazioni.</p>



<pre class="wp-block-code"><code>/* Esempio 1 - From/To */
@keyframes primaanimazione  {
  from {
    background-color: red;
  }
  to {
    background-color: green;
  }
}

/* Esempio 2 - % */
@keyframes primaanimazione  {
  0% {
    background-color: red;
  }
  50% {
    background-color: yellow;
  }
  100% {
    background-color: green;
  }
}

/* Esempio 2 - Mix */
@keyframes primaanimazione  {
  from {
    background-color: red;
  }
  50% {
    background-color: yellow;
  }
  to {
    background-color: green;
  }
}</code></pre>



<p>Questo è il risultato degli esempi appena definiti.</p>



<div class="wp-block-cp-codepen-gutenberg-embed-block cp_embed_wrapper"><iframe id="cp_embed_VwvvBvo" src="//codepen.io/anon/embed/VwvvBvo?height=250&amp;theme-id=1&amp;slug-hash=VwvvBvo&amp;default-tab=result" height="250" scrolling="no" frameborder="0" allowfullscreen allowpaymentrequest name="CodePen Embed VwvvBvo" title="CodePen Embed VwvvBvo" class="cp_embed_iframe" style="width:100%;overflow:hidden">CodePen Embed Fallback</iframe></div>



<p>Ogni passaggio che andiamo a definire può contenere ovviamente tutte le proprietà necessarie per animare il nostro elemento, dai colori, alla forma, alla posizione, alla dimensione, ecc.</p>



<p>Questi sono alcuni esempi di semplici animazioni utili a capire il livello di complessità che possiamo raggiungere.</p>



<div class="wp-block-cp-codepen-gutenberg-embed-block cp_embed_wrapper"><iframe id="cp_embed_JjYYaEK" src="//codepen.io/anon/embed/JjYYaEK?height=700&amp;theme-id=1&amp;slug-hash=JjYYaEK&amp;default-tab=result" height="700" scrolling="no" frameborder="0" allowfullscreen allowpaymentrequest name="CodePen Embed JjYYaEK" title="CodePen Embed JjYYaEK" class="cp_embed_iframe" style="width:100%;overflow:hidden">CodePen Embed Fallback</iframe></div>



<p>Il prossimo passaggio è di rendere animati gli elementi con i quali interagiamo.</p>



<div class="wp-block-cp-codepen-gutenberg-embed-block cp_embed_wrapper"><iframe id="cp_embed_xxwwaed" src="//codepen.io/anon/embed/xxwwaed?height=350&amp;theme-id=1&amp;slug-hash=xxwwaed&amp;default-tab=result" height="350" scrolling="no" frameborder="0" allowfullscreen allowpaymentrequest name="CodePen Embed xxwwaed" title="CodePen Embed xxwwaed" class="cp_embed_iframe" style="width:100%;overflow:hidden">CodePen Embed Fallback</iframe></div>



<p><strong>Puoi registrarti adesso sul sito <a rel="noreferrer noopener" href="http://bit.ly/CSSSemanticoLibro" target="_blank">CSSsemantico.it</a> per ricevere GRATUITAMENTE la tua copia del mio libro in formato elettronico appena sarà disponibile. </strong></p>



<p>Al prossimo appuntamento, parleremo di transizioni, e altri effetti, che ci aiutano a dare vita alla nostra pagina. L&#8217;esperienza utente diventa molto più efficace se corredata dai giusti movimenti. </p>
        <div class="booster-block booster-reactions-block">
            <div class="twp-reactions-icons">
                
                <div class="twp-reacts-wrap">
                    <a react-data="be-react-1" post-id="1378" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/happy.svg" alt="Happy">
                    </a>
                    <div class="twp-reaction-title">
                        Happy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">1</span>
                        
                                                <span class="twp-react-percent"><span>33</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-2" post-id="1378" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sad.svg" alt="Sad">
                    </a>
                    <div class="twp-reaction-title">
                        Sad                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">2</span>
                                                                        <span class="twp-react-percent"><span>67</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-3" post-id="1378" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/excited.svg" alt="Excited">
                    </a>
                    <div class="twp-reaction-title">
                        Excited                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-6" post-id="1378" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sleepy.svg" alt="Sleepy">
                    </a>
                    <div class="twp-reaction-title">
                        Sleepy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-4" post-id="1378" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/angry.svg" alt="Angry">
                    </a>
                    <div class="twp-reaction-title">Angry</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                        
                    </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-5" post-id="1378" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/surprise.svg" alt="Surprise">
                    </a>
                    <div class="twp-reaction-title">Surprise</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

            </div>
        </div>

    ]]></content:encoded>
					
					<wfw:commentRss>https://www.robertobeccari.it/2020/04/15/css-le-animazioni/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1378</post-id>	</item>
		<item>
		<title>CSS &#8211; Abbelliamo &#8211; Parte I</title>
		<link>https://www.robertobeccari.it/2020/04/07/css-abbelliamo-parte-i/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=css-abbelliamo-parte-i</link>
					<comments>https://www.robertobeccari.it/2020/04/07/css-abbelliamo-parte-i/#comments</comments>
		
		<dc:creator><![CDATA[Roberto Beccari]]></dc:creator>
		<pubDate>Tue, 07 Apr 2020 07:30:00 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS Semantico - Il libro]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Web design]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Css Semantico]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[web design]]></category>
		<guid isPermaLink="false">https://www.robertobeccari.it/?p=1313</guid>

					<description><![CDATA[In questo appuntamento, parliamo di quelle proprietà che possono fare la differenza quando creiamo una pagina. Piccoli suggerimenti utili, e privi di sforzo, per aggiungere effetti che si notano alle nostre pagine.]]></description>
										<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
                <div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>3 Minute, 21 Second                </div>

            </div>
<p>In questo appuntamento, parliamo di quelle proprietà che possono fare la differenza quando creiamo una pagina. Piccoli suggerimenti utili, e privi di sforzo, per aggiungere alle nostre pagine effetti che si notano.</p>



<p><strong>Puoi registrarti adesso sul sito <a rel="noreferrer noopener" href="http://bit.ly/CSSSemanticoLibro" target="_blank">CSSsemantico.it</a> per ricevere GRATUITAMENTE la tua copia del mio libro in formato elettronico appena sarà disponibile. </strong> </p>



<h2 class="wp-block-heading">Sticky</h2>



<p>Di certo vi sarà capitato di realizzare pagine contenenti menu, o porzioni della pagina, che volevate tenere visibili anche durante la fase di scorrimento della pagina. Probabilmente avrete trovato mille script che vi permettevano di farlo e così li avete aggiunti al vostro codice facendo vari copia e incolla dal web. Ma, forse, non sapevate che grazie a CSS questa funzionalità è già disponibile e facile da utilizzare.</p>



<div class="wp-block-cp-codepen-gutenberg-embed-block cp_embed_wrapper"><iframe id="cp_embed_RwPXKEO" src="//codepen.io/anon/embed/RwPXKEO?height=500&amp;theme-id=1&amp;slug-hash=RwPXKEO&amp;default-tab=result" height="500" scrolling="no" frameborder="0" allowfullscreen allowpaymentrequest name="CodePen Embed RwPXKEO" title="CodePen Embed RwPXKEO" class="cp_embed_iframe" style="width:100%;overflow:hidden">CodePen Embed Fallback</iframe></div>



<p>Questo ne è un&#8217;esempio, se fate scorrere la pagina, gli elementi ai lati si bloccheranno, o meglio ancora, si ancoreranno in cima alla pagina smettendo di seguire lo scorrimento, che potrà essere via verticale che laterale (questo lo posso considerare un sotto suggerimento ;)). </p>



<p>Se arrivate in fondo al testo, ne trovate un terzo. Chi cerca trova.</p>



<p>Come facciamo per applicare questo effetto grazie a CSS&#8230;</p>



<pre class="wp-block-code"><code>.sticky-on {
  position: sticky;
  top: 10px;
}</code></pre>



<p>Vado a definire una classe nella quale assegno, alla proprietà <strong>position</strong>, il valore <strong>sticky</strong>. A questo poi devo associare anche il valore di quanto deve essere distante dal bordo superiore, <strong>top: 10px</strong>.</p>



<p>Un altro grande vantaggio nell&#8217;utilizzare Sticky, è che l&#8217;oggetto nella pagina occupa la sua posizione e la sua dimensione fino a quando non viene attivata la condizione di ancoraggio, molto meglio di elementi in posizione fissa o assoluta sui quali poi dobbiamo gestire gli scostamenti verso gli altri elementi.</p>



<p>Veramente semplice e di facile applicazione, con nessuno sforzo la nostra pagina ha già una forma diversa.</p>



<p><strong>Puoi registrarti adesso sul sito <a rel="noreferrer noopener" href="http://bit.ly/CSSSemanticoLibro" target="_blank">CSSsemantico.it</a> per ricevere GRATUITAMENTE la tua copia del mio libro in formato elettronico appena sarà disponibile. </strong> </p>



<h2 class="wp-block-heading">Filtri sfondo</h2>



<p>Un altro effetto che mi piace particolarmente e che con il tempo ho sempre cercato di realizzare nei modi più disparati, anche grazie a librerie grafiche JavaScript, è l&#8217;effetto di sfocatura dello sfondo, in pieno stile Apple Safari per IOS. Esempio&#8230;</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="980" height="309" src="https://www.robertobeccari.it/wp-content/uploads/2020/04/image-3.png" alt="" class="wp-image-1315" srcset="https://www.robertobeccari.it/wp-content/uploads/2020/04/image-3.png 980w, https://www.robertobeccari.it/wp-content/uploads/2020/04/image-3-300x95.png 300w, https://www.robertobeccari.it/wp-content/uploads/2020/04/image-3-768x242.png 768w" sizes="(max-width: 980px) 100vw, 980px" /></figure>



<p>La proprietà <strong>backdrop-filter:</strong>, è nata proprio per questo, applicare filtri di sfondo a tutti gli oggetti, al contenuto dell&#8217;elemento non viene applicato nulla. Nasce anche come funzionalità per estendere la parte SVG con effetti veramente interessanti. Cosa ulteriore da segnalare, con backdrop-filter, siamo anche in grado di applicare affetti aggiuntivi supportati da immagini. Ma andiamo a capire meglio di cose si tratta. </p>



<pre class="wp-block-code"><code>&lt;!-- HTML -->
&lt;header>
&lt;/header>

/* CSS */
header {
  position: sticky;
  top: 0px;
  min-height: 200px;
  background-color: rgba(255, 255, 255, 0.8);
  border-bottom: 1px solid lightgray;

  /* Applico il filtro allo sfondo*/
  backdrop-filter: blur(4px);
}</code></pre>



<p>Nell&#8217;esempio, puoi vedere applicato l&#8217;effetto, quando scorri, il testo che passerà sotto l&#8217;intestazione (che utilizza lo sticky come position), avrà un effetto sfocato.</p>



<div class="wp-block-cp-codepen-gutenberg-embed-block cp_embed_wrapper"><iframe id="cp_embed_WNvVjvJ" src="//codepen.io/anon/embed/WNvVjvJ?height=600&amp;theme-id=1&amp;slug-hash=WNvVjvJ&amp;default-tab=result" height="600" scrolling="no" frameborder="0" allowfullscreen allowpaymentrequest name="CodePen Embed WNvVjvJ" title="CodePen Embed WNvVjvJ" class="cp_embed_iframe" style="width:100%;overflow:hidden">CodePen Embed Fallback</iframe></div>



<p>Non male anche questo come effetto, è applicabile a qualsiasi elemento, possiamo utilizzarlo per fare finestre di dialogo sovrapposte, menu di navigazione a scomparsa e molto altro, basta solo un po di fantasia. </p>



<p>Ma <strong>backdrop-filter</strong> fa molto di più della &#8220;semplice&#8221; sfocatura. ecco un elenco di possibili effetti, anche sommabili tra loro, che possiamo sfruttare per vestire la nostra pagina a festa.</p>



<pre class="wp-block-code"><code>/* Valore chiave */
backdrop-filter: none;

/* URL per filtro SVG */
backdrop-filter: url(commonfilters.svg#filter);

/* valore disponibili per i filtri */
backdrop-filter: blur(2px);
backdrop-filter: brightness(60%);
backdrop-filter: contrast(40%);
backdrop-filter: drop-shadow(4px 4px 10px blue);
backdrop-filter: grayscale(30%);
backdrop-filter: hue-rotate(120deg);
backdrop-filter: invert(70%);
backdrop-filter: opacity(20%);
backdrop-filter: sepia(90%);
backdrop-filter: saturate(80%);

/* applicazione filtri multipli */
backdrop-filter: url(filters.svg#filter) blur(4px) saturate(150%);

/* valori globali */
backdrop-filter: inherit;
backdrop-filter: initial;
backdrop-filter: unset;</code></pre>



<p>Se ti è piaciuto, ci vediamo al prossimo appuntamento.</p>



<p><strong>Puoi registrarti adesso sul sito <a rel="noreferrer noopener" href="http://bit.ly/CSSSemanticoLibro" target="_blank">CSSsemantico.it</a> per ricevere GRATUITAMENTE la tua copia del mio libro in formato elettronico appena sarà disponibile. </strong> </p>
        <div class="booster-block booster-reactions-block">
            <div class="twp-reactions-icons">
                
                <div class="twp-reacts-wrap">
                    <a react-data="be-react-1" post-id="1313" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/happy.svg" alt="Happy">
                    </a>
                    <div class="twp-reaction-title">
                        Happy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-2" post-id="1313" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sad.svg" alt="Sad">
                    </a>
                    <div class="twp-reaction-title">
                        Sad                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-3" post-id="1313" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/excited.svg" alt="Excited">
                    </a>
                    <div class="twp-reaction-title">
                        Excited                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-6" post-id="1313" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sleepy.svg" alt="Sleepy">
                    </a>
                    <div class="twp-reaction-title">
                        Sleepy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-4" post-id="1313" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/angry.svg" alt="Angry">
                    </a>
                    <div class="twp-reaction-title">Angry</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                        
                    </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-5" post-id="1313" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/surprise.svg" alt="Surprise">
                    </a>
                    <div class="twp-reaction-title">Surprise</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

            </div>
        </div>

    ]]></content:encoded>
					
					<wfw:commentRss>https://www.robertobeccari.it/2020/04/07/css-abbelliamo-parte-i/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1313</post-id>	</item>
		<item>
		<title>CSS &#8211; Creare i layout di pagina</title>
		<link>https://www.robertobeccari.it/2020/04/03/css-creare-i-layout/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=css-creare-i-layout</link>
		
		<dc:creator><![CDATA[Roberto Beccari]]></dc:creator>
		<pubDate>Fri, 03 Apr 2020 07:00:00 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS Semantico - Il libro]]></category>
		<category><![CDATA[Web design]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Css Semantico]]></category>
		<category><![CDATA[framework css]]></category>
		<category><![CDATA[layout]]></category>
		<guid isPermaLink="false">https://www.robertobeccari.it/?p=1235</guid>

					<description><![CDATA[Nell'appuntamento del martedì con i nostri amati CSS , che questa settimana è di venerdì perché ho dovuto sistemare un problema legato alla visualizzazione delle immagini sul blog. Ci occupiamo di layout di pagina. Come creiamo un layout che vada sempre incontro alle nostre esigenze, ma anche future.]]></description>
										<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
                <div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>6 Minute, 30 Second                </div>

            </div>
<p>Nell&#8217;appuntamento del martedì con i nostri amati CSS, che questa settimana è di venerdì perché ho dovuto sistemare un problema legato alla visualizzazione delle immagini sul blog, ci occupiamo di layout di pagina. Come creiamo un layout che vada sempre incontro alle nostre esigenze, ma anche future.</p>



<p><strong>Puoi registrarti adesso sul sito <a rel="noreferrer noopener" href="http://bit.ly/CSSSemanticoLibro" target="_blank">CSSsemantico.it</a> per ricevere GRATUITAMENTE la tua copia del mio libro in formato elettronico appena sarà disponibile. </strong>    </p>



<p>Abbiamo da tempo abbandonato le tabelle HTML con tag <strong>&lt;table&gt;&lt;/table&gt;</strong>, sfruttate a più non posso, per tanti anni, per realizzare il layout delle nostre pagine HTML. <strong>Grazie alla sempre maggiore diffusione di dispositivi diversi per funzionalità e dimensioni dello schermo</strong>, e grazie all&#8217;evolversi della tecnologia, abbiamo adottato layout più flessibili, questo grazie a posizionamenti relativi e assoluti. Partendo da qui, è stato il tempo di Flexbox, ottimo per fare contenuti dinamici ma non giusto per fare l&#8217;impaginazione e poi la griglia (Grid). </p>



<p><strong>Finalmente tutti i browser in circolazione supportano a pieno le novità introdotte nei CSS</strong> per queste nuove proprietà, e abbandoniamo quelli legacy, proprio per questo, <a href="https://designmodo.com/bootstrap-5/" target="_blank" rel="noreferrer noopener" aria-label="Bootstrap, nella sua versione 5 (opens in a new tab)">Bootstrap, nella sua versione 5</a>, quando uscirà, non supporterà più IE 10 e 11, e possiamo dire, <strong>finalmente</strong>.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="395" src="https://www.robertobeccari.it/wp-content/uploads/2020/03/31-03-2020-14-33-01-1-1024x395.png" alt="" class="wp-image-1245" srcset="https://www.robertobeccari.it/wp-content/uploads/2020/03/31-03-2020-14-33-01-1-1024x395.png 1024w, https://www.robertobeccari.it/wp-content/uploads/2020/03/31-03-2020-14-33-01-1-300x116.png 300w, https://www.robertobeccari.it/wp-content/uploads/2020/03/31-03-2020-14-33-01-1-768x297.png 768w, https://www.robertobeccari.it/wp-content/uploads/2020/03/31-03-2020-14-33-01-1.png 1142w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption> <a href="https://www.w3counter.com/trends">https://www.w3counter.com/trends</a> </figcaption></figure>



<p> Tra le altre cose, sempre Bootstrap 5, introduce alcune novità interessanti:</p>



<ul class="wp-block-list"><li>Rimozione di jQuery (a vantaggio di altri framework come Rect, Angular, ecc. per evitare problemi di incompatibilità)</li><li><strong>Rimuove il supporto per IE 10 e 11</strong>, basta litigare per adattare la nostra pagina per IE e tutti gli altri.</li><li>Libreria di icone SVG personalizzate</li><li>Passando a Hugo da Jekyll</li><li>Aggiornamenti Javascript</li><li>Aggiornamenti e correzioni di CSS e classi minori</li></ul>



<p>Ma torniamo al discorso principale, anche perché personalmente <strong>non sono un amante dei framework CSS troppo &#8220;invasivi&#8221;</strong>, esempio Bootstrap, magari <strong>farò un post nelle prossime settimane su questo argomento</strong>.</p>



<p>Parliamo di griglie CSS, cosa sono e come funzionano.</p>



<p>La griglia è una rappresentazione di linee verticali e orizzontali che si intersecano rappresentando così le righe e le colonne. Gli elementi possono essere posizionati e gestiti all&#8217;interno di questa griglia con diverse modalità.</p>



<h4 class="wp-block-heading" id="The_Grid_container">La griglia come contenitore</h4>



<p>Per creare un&nbsp;<em>contenitore griglia</em>&nbsp;dichiariamo <code>display: grid</code>o&nbsp;<code>display: inline-grid</code>su un elemento.&nbsp;Non appena lo facciamo, tutti&nbsp;<em>i figli diretti</em>&nbsp;di quell&#8217;elemento diventano&nbsp;<em>elementi della griglia</em>&nbsp;.</p>



<pre class="wp-block-code"><code>.wrapper {
  display: grid;
}

&lt;div class="wrapper">
  &lt;div>One&lt;/div>
  &lt;div>Two&lt;/div>
  &lt;div>Three&lt;/div>
  &lt;div>Four&lt;/div>
  &lt;div>Five&lt;/div>
&lt;/div></code></pre>



<p>In un browser Web, non vedrai alcuna differenza nel modo in cui questi elementi vengono visualizzati prima di trasformarli in una griglia, poiché la griglia, grazie all&#8217;algoritmo di <em>griglia implicita</em> applicato dal motore di render del browser, crea una griglia a colonna singola per gli elementi.&nbsp;</p>



<h4 class="wp-block-heading">Tips&amp;Tricks</h4>



<p>Utilizzando <a rel="noreferrer noopener" aria-label="Firefox  (opens in a new tab)" href="https://www.mozilla.org/en-US/firefox/new/?redirect_source=getfirefox-com" target="_blank">Firefox</a>, potresti trovare utile lavorare con&nbsp;<a href="https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/How_to/Examine_grid_layouts">Grid Inspector</a>&nbsp;, disponibile come parte degli Strumenti per sviluppatori di Firefox.&nbsp;Se visualizzi questo esempio in Firefox e controlli la griglia, vedrai una piccola icona accanto al valore&nbsp;<code>grid</code>.&nbsp;Fare clic su questo e quindi la griglia su questo elemento verrà sovrapposta nella finestra del browser. </p>



<figure class="wp-block-image"><img decoding="async" src="https://mdn.mozillademos.org/files/15979/grid-overlay.png" alt="A screenshot of the Firefox web browser, showing a colored overlay on top of a section of the page laid out like a grid "/></figure>



<p><strong>Puoi registrarti adesso sul sito <a rel="noreferrer noopener" href="http://bit.ly/CSSSemanticoLibro" target="_blank">CSSsemantico.it</a> per ricevere GRATUITAMENTE la tua copia del mio libro in formato elettronico appena sarà disponibile. </strong>     </p>



<h3 class="wp-block-heading">Dimensione fissa e flessibile</h3>



<p>È possibile creare una griglia con dimensioni fisse espresse in pixel.&nbsp;Questo è comodo se dobbiamo avere un&#8217;impaginazione che rispecchi pienamente un&#8217;esigenza, che questa sia di tipo grafico o dovuta ad una gestione particolare del contenuto.&nbsp;In alternativa è possibile utilizzare dimensioni flessibili con percentuali o con la nuova unità&nbsp;<code><strong>fr</strong></code> progettata per questo scopo. Rappresenta una frazione dello spazio disponibile nel contenitore della griglia.&nbsp;La successiva definizione della griglia creerebbe tre tracce di uguale larghezza che crescono e si restringono in base allo spazio disponibile. Capirai meglio negli esempi di seguito a questo articolo. </p>



<p>Vediamo quali sono le caratteristiche principali della griglia CSS. </p>



<h4 class="wp-block-heading">Posizionamento</h4>



<p>È possibile posizionare gli elementi in una posizione precisa sulla griglia utilizzando numeri di riga, nomi o specificando un&#8217;area definita all&#8217;interno della griglia.&nbsp;La griglia CSS contiene anche un algoritmo per controllare il posizionamento di elementi non assegnati a una posizione esplicita sulla griglia, questo aiuta ma è evidente che dobbiamo definire questi puntatori in modo corretto per evitare risultato inaspettati. Se aggiungo un elemento un elemento alla griglia, devo sempre dargli un riferimento di dove questo debba essere posizionato.</p>



<h4 class="wp-block-heading">Tracce per i contenuti</h4>



<p>Grazie a due proprietà specifiche, possiamo definire righe e colonne sulla nostra griglia utilizzando le&nbsp;proprietà&nbsp;<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-columns"><code>grid-template-columns</code></a>e&nbsp;<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-rows"><code>grid-template-rows</code></a>.&nbsp;Questi definiscono le tracce della griglia.&nbsp;Una&nbsp;<em>traccia della griglia</em>&nbsp;è lo spazio tra due linee qualsiasi sulla griglia.</p>



<p>Nell&#8217;esempio che segue, ho evidenziato quanto detto fino ad ora. Un esempio di come applicare la dimensione fissa e variabile e come utilizzare le tracce. Sono quattro esempi di come definire <code>grid-template-columns</code>.</p>



<div class="wp-block-cp-codepen-gutenberg-embed-block cp_embed_wrapper"><iframe id="cp_embed_oNXOddY" src="//codepen.io/anon/embed/oNXOddY?height=500&amp;theme-id=1&amp;slug-hash=oNXOddY&amp;default-tab=result" height="500" scrolling="no" frameborder="0" allowfullscreen allowpaymentrequest name="CodePen Embed oNXOddY" title="CodePen Embed oNXOddY" class="cp_embed_iframe" style="width:100%;overflow:hidden">CodePen Embed Fallback</iframe></div>



<p>Nell&#8217;esempio, creiamo anche una definizione con una&nbsp;<code>2fr</code> e poi due&nbsp;<code>1fr</code>, seguita poi dall&#8217;utilizzo della funziona <code>repeat()</code>. Lo spazio disponibile è diviso in quattro.&nbsp;Due parti vengono assegnate alla prima traccia e una parte ciascuna alle due tracce successive. </p>



<h4 class="wp-block-heading">Allineamento</h4>



<p>La griglia contiene funzionalità di allineamento in modo da poter controllare come gli elementi si allineano una volta posizionati in un&#8217;area della griglia e come viene allineata l&#8217;intera griglia.&nbsp;</p>



<h4 class="wp-block-heading">Contenuto sovrapposto</h4>



<p>È possibile posizionare più di un elemento in una cella o area della griglia e possono sovrapporsi parzialmente.&nbsp;Questa stratificazione può quindi essere controllata con la&nbsp;<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/z-index"><code>z-index</code></a>proprietà.</p>



<h4 class="wp-block-heading">Aree</h4>



<p>Questa è la mia proprietà preferita nell&#8217;utilizzo della griglia. Grazie alle aree, e sfruttando le media queries @media, possiamo realizzare layout veramente dinamici, flessibili, e perfettamente adattabili ad ogni situazione. È possibile ridefinire l&#8217;intera pagina cambiando solo il template di riferimento. Ecco come funziona.</p>



<p>Nel seguente esempio, al contenitore della griglia, aggiungiamo la proprietà <code>grid-template-areas</code>, questa proprietà permette di definire il modello di distribuzione degli elementi.</p>



<pre class="wp-block-code"><code>.wrapper {
  display: grid;
  grid-template-areas: "intestazione  intestazione"
                       "navigazione   contenuto"
                       "navigazione   piedipagina";
}
header {
  grid-area: intestazione;
  background-color: #8ca0ff;
}
nav {
  grid-area: navigazione;
  background-color: #ffa08c;
}
main {
  grid-area: contenuto;
  background-color: #ffff64;
}
footer {
  grid-area: piedipagina;
  background-color: #8cffa0;
}

&lt;div class="wrapper">
  &lt;header>Intestazione&lt;/header>
  &lt;nav>Navigazione&lt;/nav>
  &lt;main>Contenuto della pagina&lt;/main>
  &lt;footer>Informazioni&lt;/footer>
&lt;/div></code></pre>



<p>La logica è semplice, crea un modello di griglia definendo dei segnaposto che vadano ad occupare gli spazi. </p>



<p>Se applicassimo una griglia al nostro modello, la vedremo in questo modo </p>



<figure class="wp-block-image size-large"><img decoding="async" width="418" height="140" src="https://www.robertobeccari.it/wp-content/uploads/2020/04/gg.png" alt="" class="wp-image-1281" srcset="https://www.robertobeccari.it/wp-content/uploads/2020/04/gg.png 418w, https://www.robertobeccari.it/wp-content/uploads/2020/04/gg-300x100.png 300w" sizes="(max-width: 418px) 100vw, 418px" /></figure>



<ul class="wp-block-list"><li>Il segnaposto &#8220;intestazione&#8221; occupa due colonne e la prima riga </li><li>Il segnaposto &#8220;navigazione&#8221; prende la seconda e la terza riga della prima colonna</li><li>Il segnaposto &#8220;contenuto&#8221; occupa la seconda colonna della seconda riga</li><li>il segnaposto &#8220;piedipagina&#8221; occupa la seconda colonna della terza riga</li></ul>



<p>Utilizzo poi gli identificativi dei segnaposto, assegnandoli alla proprietà <code>grid-area</code>, per identificare quali elementi andranno ad occupare quegli spazi.</p>



<p>E questo è il risultato, puoi verificare nel CSS come viene applicato rispetto all&#8217;HTML.</p>



<div class="wp-block-cp-codepen-gutenberg-embed-block cp_embed_wrapper"><iframe id="cp_embed_PoqggWK" src="//codepen.io/anon/embed/PoqggWK?height=450&amp;theme-id=1&amp;slug-hash=PoqggWK&amp;default-tab=result" height="450" scrolling="no" frameborder="0" allowfullscreen allowpaymentrequest name="CodePen Embed PoqggWK" title="CodePen Embed PoqggWK" class="cp_embed_iframe" style="width:100%;overflow:hidden">CodePen Embed Fallback</iframe></div>



<p>Tutto molto comodo da utilizzare e semplice da applicare, con le giuste indicazioni e il giusto utilizzo poi di altre proprietà, possiamo rendere il layout dinamico e potremmo riusciamo a dargli qualsiasi forma che potrebbe, con i giusti equilibri, non sembrare una griglia.</p>



<h4 class="wp-block-heading">Un suggerimento video&#8230;</h4>



<p>Questo video di cento secondi è un bel riassunto di quanto detto in questo articolo.</p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" class="youtube-player" width="640" height="360" src="https://www.youtube.com/embed/uuOXPWCh-6o?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=it-IT&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
</div></figure>



<p>La Grid è potente, se combinata con altre parti di CSS come&nbsp;<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout">flexbox</a>&nbsp;, può aiutarti a creare layout che in precedenza erano impossibili da costruire in CSS.</p>



<p>Buon divertimento.</p>



<p><strong>Puoi registrarti adesso sul sito <a rel="noreferrer noopener" href="http://bit.ly/CSSSemanticoLibro" target="_blank">CSSsemantico.it</a> per ricevere GRATUITAMENTE la tua copia del mio libro in formato elettronico appena sarà disponibile. </strong>     </p>
        <div class="booster-block booster-reactions-block">
            <div class="twp-reactions-icons">
                
                <div class="twp-reacts-wrap">
                    <a react-data="be-react-1" post-id="1235" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/happy.svg" alt="Happy">
                    </a>
                    <div class="twp-reaction-title">
                        Happy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-2" post-id="1235" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sad.svg" alt="Sad">
                    </a>
                    <div class="twp-reaction-title">
                        Sad                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-3" post-id="1235" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/excited.svg" alt="Excited">
                    </a>
                    <div class="twp-reaction-title">
                        Excited                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-6" post-id="1235" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sleepy.svg" alt="Sleepy">
                    </a>
                    <div class="twp-reaction-title">
                        Sleepy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-4" post-id="1235" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/angry.svg" alt="Angry">
                    </a>
                    <div class="twp-reaction-title">Angry</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                        
                    </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-5" post-id="1235" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/surprise.svg" alt="Surprise">
                    </a>
                    <div class="twp-reaction-title">Surprise</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

            </div>
        </div>

    ]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1235</post-id>	</item>
		<item>
		<title>BEM — Block Element Modifier</title>
		<link>https://www.robertobeccari.it/2020/03/24/bem%e2%80%8a-%e2%80%8ablock-element-modifier/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=bem%25e2%2580%258a-%25e2%2580%258ablock-element-modifier</link>
		
		<dc:creator><![CDATA[Roberto Beccari]]></dc:creator>
		<pubDate>Tue, 24 Mar 2020 08:00:00 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS Semantico - Il libro]]></category>
		<category><![CDATA[Web design]]></category>
		<category><![CDATA[BEM]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Css Semantico]]></category>
		<category><![CDATA[web design]]></category>
		<guid isPermaLink="false">https://www.robertobeccari.it/?p=1194</guid>

					<description><![CDATA[BEM è una metodologia. Chi crea fogli di stile, si rende conto che non sempre è semplice strutturarli, spesso diamo nomi alle classi che con il tempo continuiamo a modificare per adattarli allo stato del progetto ma spesso non riusciamo a riutilizzare nulla di quello che viene fatto su altri progetti e altre volte il tutto risulta confusionario e poco mantenibile nel tempo.]]></description>
										<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
                <div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>3 Minute, 33 Second                </div>

            </div>
<p>In questo appuntamento del martedì sui CSS, parliamo di <a href="http://getbem.com/introduction/" target="_blank" rel="noreferrer noopener" aria-label="BEM (Block Element Modifier) (opens in a new tab)">BEM (Block Element Modifier)</a>.</p>



<blockquote class="wp-block-quote is-style-large is-layout-flow wp-block-quote-is-layout-flow"><p><strong>BEM — Block Element Modifier</strong> is a methodology that helps you to create reusable components and code sharing in front-end development   </p></blockquote>



<p>BEM è una metodologia. Chi crea fogli di stile, si rende conto che non sempre è semplice strutturarli, spesso diamo nomi alle classi che con il tempo continuiamo a modificare per adattarli allo stato del progetto ma spesso non riusciamo a riutilizzare nulla di quello che viene fatto su altri progetti e altre volte il tutto risulta confusionario e poco mantenibile nel tempo.</p>



<p>Esistono diverse strade per definire un proprio modello di scrittura dei CSS che possiamo utilizzare e riutilizzare più volte, <a href="http://bit.ly/CSSSemanticoLibro" target="_blank" rel="noreferrer noopener" aria-label="nel mio nuovo libro (opens in a new tab)">nel mio nuovo libro</a> vado a suggerire diverse strade per ottimizzare questa parte del lavoro.</p>



<p><strong>Puoi registrarti adesso sul sito <a rel="noreferrer noopener" href="http://bit.ly/CSSSemanticoLibro" target="_blank">CSSsemantico.it</a> per ricevere GRATUITAMENTE la tua copia del mio libro in formato elettronico appena sarà disponibile. </strong>      </p>



<p>BEM definisce una <em>convenzione di denominazione</em> per le classi CSS in modo che possano essere più significative e riutilizzabili. Pensiamo BEM come una nomenclatura da applicare in modo gerarchico, vediamo nel dettaglio in che cosa consiste e come applicarlo.</p>



<h4 class="wp-block-heading">B<strong>lock</strong></h4>



<p>Il <strong>Block</strong> si posiziona al vertice della gerarchia, definisce l&#8217;entità principale del nostro elemento, eccone un esempio.</p>



<pre class="wp-block-code"><code>/* CSS */
.btn {
    /* definisco l'elemento principale */
}

&lt;!-- HTML -->
&lt;input type="submit" class="btn" /></code></pre>



<p>I block possono essere nidificati l&#8217;uno dentro l&#8217;altro e si possono comporre solo con:</p>



<ul class="wp-block-list"><li>lettere</li><li>numeri</li><li>trattini</li></ul>



<h4 class="wp-block-heading"><strong>Element </strong></h4>



<p>L&#8217;<strong>Element</strong> è sempre dipendente dal block e deve essere semanticamente rilevante. Deve essere leggibile e comprensibile nella forma e nel significato. Al contrario dei “block” non può esistere in maniera indipendente, è sempre correlate al “block”. Gli &#8220;element&#8221; possono essere inseriti all&#8217;interno e questi sono indicati da due caratteri di sottolineatura che seguono il nome del blocco. Ecco un esempio di come definirlo.</p>



<pre class="wp-block-code"><code>/* CSS */
.btn {
    /* definisco l'elemento principale */
}
.btn__primary {
    /* definisco le caratteristiche specifiche per questo elemento */
}

&lt;!-- HTML -->
&lt;input type="submit" class="btn btn__primary" /></code></pre>



<p>Gli element si possono comporre solo con:</p>



<ul class="wp-block-list"><li>lettere</li><li>numeri</li><li>trattini</li><li>trattini bassi ( underscore )</li></ul>



<h4 class="wp-block-heading"><strong>Modifier</strong></h4>



<p>Il <strong>Modifier</strong> serve, come suggerisce anche il nome, a modificare block e element. I &#8220;modifier&#8221; possono manipolare il blocco in modo da poter applicare temi o stili a quel particolare componente senza infliggere modifiche su un modulo completamente non correlato.&nbsp;Questo viene fatto aggiungendo due trattini al nome del blocco.</p>



<pre class="wp-block-code"><code>/* CSS */
.btn {
    /* definisco l'elemento principale */
}
.btn__price {
    /* definisco l'elemento nella sua specificità */
}

.btn--red {
    /* definisco un modificatore dell'elemento per il colore rosso */
}
.btn--green {
    /* definisco un modificatore dell'elemento per il colore verde */
}
.btn--big {
    /* definisco un modificatore dell'elemento per la dimensione */
}

&lt;!-- HTML -->
&lt;input type="submit" class="btn btn__price btn--red" /></code></pre>



<p>I modifier si possono comporre solo con:</p>



<ul class="wp-block-list"><li>lettere</li><li>numeri</li><li>trattini</li><li>trattini bassi ( underscore )</li></ul>



<h3 class="wp-block-heading">Vantaggi nell&#8217;utilizzo</h3>



<p>Come avete visto, <strong>grazie alla condivisione di queste semplici regole</strong> possiamo creare componenti che sono chiari e definiti nelle loro caratteristiche e chi legge il nostro codice, capisce molto semplicemente le gerarchie e l&#8217;applicazione delle classi. </p>



<p>Se un altro sviluppatore ha scritto un markup HTML e non conoscevamo i CSS, dovremmo comunque avere una buona idea di quali classi sono responsabili di cosa e come dipendono l&#8217;una dall&#8217;altra.&nbsp;Gli sviluppatori possono quindi creare i propri componenti e modificare il blocco esistente in base al loro contenuto.&nbsp;Senza scrivere molto CSS, gli sviluppatori sono potenzialmente in grado di creare molte diverse combinazioni di pulsanti semplicemente cambiando una classe nel markup.</p>



<h3 class="wp-block-heading">Importante</h3>



<p>La cosa da tenete a mente nell&#8217;applicazione di <strong>BEM </strong>è seguire le regole, se questo non avviene, allora diventa complesso capire come applicarle. Dobbiamo essere attenti se facciamo estensioni,<strong> dobbiamo seguire sempre la gerarchia</strong>  di <strong>Block &gt; Element &gt; Modifier</strong> o del più semplice  <strong>Block &gt; Modifier</strong>.</p>



<p>Nessuno ci vieta di  mettere un selettore di modifier in un element che non appartiene allo stesso block o allo stesso element.</p>



<pre class="wp-block-code"><code>.nav .nav__listItem .btn--orange {
  background-color: green;
}</code></pre>



<p>Questo è un errore perché abbiamo un modifier che è annidato in un element che non appartiene allo stesso block.</p>



<p>Con un po di attenzione, è certamente un modo interessante per scrivere CSS. Se vuoi scoprire altri interessanti suggerimenti per scrivere al meglio i tuoi CSS,<strong> puoi registrarti adesso sul sito <a rel="noreferrer noopener" href="http://bit.ly/CSSSemanticoLibro" target="_blank">CSSsemantico.it</a> per ricevere GRATUITAMENTE la tua copia del mio libro in formato elettronico appena sarà disponibile. </strong>      </p>



<p> </p>
        <div class="booster-block booster-reactions-block">
            <div class="twp-reactions-icons">
                
                <div class="twp-reacts-wrap">
                    <a react-data="be-react-1" post-id="1194" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/happy.svg" alt="Happy">
                    </a>
                    <div class="twp-reaction-title">
                        Happy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-2" post-id="1194" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sad.svg" alt="Sad">
                    </a>
                    <div class="twp-reaction-title">
                        Sad                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-3" post-id="1194" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/excited.svg" alt="Excited">
                    </a>
                    <div class="twp-reaction-title">
                        Excited                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-6" post-id="1194" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sleepy.svg" alt="Sleepy">
                    </a>
                    <div class="twp-reaction-title">
                        Sleepy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-4" post-id="1194" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/angry.svg" alt="Angry">
                    </a>
                    <div class="twp-reaction-title">Angry</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                        
                    </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-5" post-id="1194" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/surprise.svg" alt="Surprise">
                    </a>
                    <div class="twp-reaction-title">Surprise</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

            </div>
        </div>

    ]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1194</post-id>	</item>
		<item>
		<title>CSS &#8211; 5 funzioni che, forse, non conosci</title>
		<link>https://www.robertobeccari.it/2020/03/17/css5funzioni/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=css5funzioni</link>
		
		<dc:creator><![CDATA[Roberto Beccari]]></dc:creator>
		<pubDate>Tue, 17 Mar 2020 08:00:00 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS Semantico - Il libro]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Web design]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Css Semantico]]></category>
		<category><![CDATA[libro]]></category>
		<guid isPermaLink="false">https://www.robertobeccari.it/?p=1172</guid>

					<description><![CDATA[Il nostro appuntamento settimanale di oggi, elenca cinque funzioni che potresti non conoscere di CSS. I fogli di stili nel tempo si sono evoluti molto per consentire una migliore flessibilità. Oggi nel vediamo alcune. ]]></description>
										<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
                <div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>4 Minute, 11 Second                </div>

            </div>
<p>Oggi, nel consueto martedì dedicato ai CSS, parliamo di cinque funzioni che potresti non conoscere. <br>I fogli di stili nel tempo si sono evoluti molto per consentire una migliore e  maggiore flessibilità, vediamo. </p>



<p><strong>Puoi registrarti sul sito <a rel="noreferrer noopener" href="http://bit.ly/CSSSemanticoLibro" target="_blank">CSSsemantico.it</a> per ricevere GRATUITAMENTE la tua copia del mio libro in formato elettronico appena sarà disponibile. </strong>     </p>



<h2 class="wp-block-heading">calc(&#8230;)</h2>



<p>Personalmente è una delle funzioni che più utilizzo, quando vogliamo calcolare la corretta dimensione di un oggetto, ci preoccupiamo sempre di determinare le unità di misura da utilizzare a priori, percentuale, in punti, ecc. La capacità di questa funzione è quella poter calcolare in modo dinamico, anche utilizzando unità diverse, la lunghezza di un valore in ingresso.</p>



<p>Sintassi:</p>



<pre class="wp-block-code"><code>calc(&lt;valore> &lt;operatore> &lt;valore>...);</code></pre>



<p>Esempio:</p>



<pre class="wp-block-code"><code>calc(100% - 80px);

calc(100% / 4);</code></pre>



<p>L&#8217;espressione può essere qualsiasi espressione semplice che combina i operatori standard:</p>



<p>Addizione <strong>+</strong><br>Sottrazione <strong>&#8211; </strong><br>Moltiplicazione <strong>*</strong> (almeno uno degli operatori deve essere numerico)<br>Divisione <strong>/</strong> (il lato destro dell&#8217;operatore deve essere numerico)</p>



<p>Molto comodo che utilizzo percentuali alle quali devo togliere pixel per via di padding o margin applicati a oggetti interni, oppure per determinate la dimensione in rapporto alla pagina con oggetti persistenti con dimensione fissa come barre per strumenti o simili.</p>



<h2 class="wp-block-heading">attr(&#8230;)</h2>



<p>La&nbsp;funzione attr()&nbsp;viene utilizzata per recuperare il valore di un attributo dell&#8217;elemento selezionato e utilizzarlo nel foglio di stile.&nbsp;Può essere utilizzato anche su&nbsp;<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements">pseudo-elementi</a>.</p>



<p>Sintassi:</p>



<pre class="wp-block-code"><code>attr(&lt;nome attributo> &lt;tipo o unità>, &lt;valore di fallback>);</code></pre>



<p>Il tipo di unità è relativo alla tipologia, stringa, numero, ecc.</p>



<p>Alcuni esempi:</p>



<pre class="wp-block-code"><code>&lt;button data-color="red">&lt;/button>
&lt;button data-color="green">&lt;/button>
&lt;button data-color="blue">&lt;/button>

button {
	color:attr(data-color);
}</code></pre>



<p>Utile se vogliamo rendere dinamici gli elementi e utilizzare gli attributi per gestire le proprietà di classi condivise.</p>



<h2 class="wp-block-heading">var(&#8230;)</h2>



<p>CSS ha introdotto di recente il supporto delle variabili, o più precisamente, proprietà personalizzate, queste possono essere riassegnate a cascata per una maggiore flessibilità. Al pari dei preprocessori tipo SASS e LESS, consente di gestire in modo strutturato i valori dei nostri stili. Invece di ripetere lo stesso valore in più classi, oggi possiamo, direttamente in CSS, dichiarare una proprietà personalizzata, assegnarle un valore e usare direttamente la proprietà.</p>



<p>Sintassi:</p>



<pre class="wp-block-code"><code>var(&lt;nome della proprietà>, &lt;valore di fallback>?);</code></pre>



<p>Possiamo utilizzare altre proprietà personalizzate come valori di fallback.</p>



<p>Esempio:</p>



<pre class="wp-block-code"><code>:root {
  --main-bg-color: pink;
}

body {
  background-color: var(--main-bg-color);
}

// Sovrascrivo il valore della variabile
body .content {
  --main-bg-color: red;

  background-color: var(--main-bg-color);
}</code></pre>



<p>Possiamo utilizzare le variabili come parametri per le funzioni come calc(&#8230;) oppure rgb(&#8230;), esempio:</p>



<pre class="wp-block-code"><code>:root {
  --content-size: 100%;

  --color-r: 80;
  --color-g: 120;
  --color-b: 60;
}

.content {
  width: calc(var(--content-size) / 5);

  background-color: rgb( var(--color-r) , var(--color-g) , var(--color-b) );
}</code></pre>



<h2 class="wp-block-heading">@import</h2>



<p>Probabilmente lo conoscete perché si vede spesso utilizzato per includere i font da Google o da altri servizi simili.<br>@Import nella realtà, nasce per includere altri fogli di stili in uno. Molti preprocessori lo utilizzano per combinare i CSS inclusi in fase di compilazione.</p>



<p>Sintassi:</p>



<pre class="wp-block-code"><code>@import &lt;url|string> &lt;lista media queries>;</code></pre>



<p>Esempio:</p>



<pre class="wp-block-code"><code>@import "colori.css" print;

@import "layout.css" screen and (max-width: 768px);</code></pre>



<p>In questo modo, possiamo gestire fogli di stili singoli a seconda delle necessità.<br>Possiamo creare un file principale <strong>main.css</strong> così strutturato: </p>



<pre class="wp-block-code"><code>@import "colors.css";
@import "master.css";
@import "layout.css";
@import "footer.css";

body {
  /* utilizziamo la variabile presente in "colors.css" */
  background-color: var(--main-bg-color); 
}</code></pre>



<h2 class="wp-block-heading">@supports</h2>



<p>Questa è una di quelle che che preferisco. Oggi più che mai, utilizziamo fogli di stile che devono funzionare su diversi dispositivi, ma come spesso succede, non tutti questi hanno un supporto a tutti gli stili, alcuni ne possiedono di personalizzati utili per specifiche funzionalità o personalizzati da produttore, vedi Smart TV, Smart Watch, ecc.</p>



<p>Ma come facciamo a sapere se possiamo o meno utilizzare uno stile specifico su uno specifico dispositivo?</p>



<p><a rel="noreferrer noopener" aria-label=" @supports (opens in a new tab)" href="https://developer.mozilla.org/en-US/docs/Web/CSS/@supports" target="_blank">@supports</a> ci viene in aiuto in questi casi. Lo possiamo utilizzare per applicare stili specifici se viene supportata una specifica proprietà.</p>



<p>Per semplificare, se è supportata la proprietà x, allora applica queste regole, possiamo anche determinare se una proprietà NON viene supportata allora applica altre regole.</p>



<p>Sintassi:</p>



<pre class="wp-block-code"><code>@supports (not) &lt;condizioni supportata> {
  &lt;regole css da applicare>
}</code></pre>



<p>La condizione che vado a verificare può essere anche multipla utilizzando operatori booleani come OR e AND.</p>



<p>Esempio:</p>



<pre class="wp-block-code"><code>// Verifico se supporta il valore grid nella proprietà display
@supports (display: grid) {
  .main {
    display: grid;
  }
}

@supports not (display: grid) {
  .main {
    display: relative;
  }
}

@supports (display: table-cell) and (display:run-in) {}
@supports (transform-style: preserve) or (-moz-transform-style: preserve) {}
</code></pre>



<h4 class="wp-block-heading">Conclusioni</h4>



<p>Se le conoscevate tutte e le usate, bravissimi/e, usate al meglio CSS. <br>Se ne usate solo alcune, non male, mi piacerebbe vedere i vostri fogli di stile.<br>Se invece non ne conoscevate nessuna, non vi preoccupate, adesso le conoscete e potete usarle.</p>



<p><strong>Puoi registrarti sul sito <a rel="noreferrer noopener" href="http://bit.ly/CSSSemanticoLibro" target="_blank">CSSsemantico.it</a> per ricevere GRATUITAMENTE la tua copia del mio libro in formato elettronico appena sarà disponibile. </strong>     </p>



<p>Ci rivediamo settimana prossima, buon divertimento.</p>
        <div class="booster-block booster-reactions-block">
            <div class="twp-reactions-icons">
                
                <div class="twp-reacts-wrap">
                    <a react-data="be-react-1" post-id="1172" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/happy.svg" alt="Happy">
                    </a>
                    <div class="twp-reaction-title">
                        Happy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-2" post-id="1172" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sad.svg" alt="Sad">
                    </a>
                    <div class="twp-reaction-title">
                        Sad                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-3" post-id="1172" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/excited.svg" alt="Excited">
                    </a>
                    <div class="twp-reaction-title">
                        Excited                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-6" post-id="1172" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sleepy.svg" alt="Sleepy">
                    </a>
                    <div class="twp-reaction-title">
                        Sleepy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-4" post-id="1172" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/angry.svg" alt="Angry">
                    </a>
                    <div class="twp-reaction-title">Angry</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                        
                    </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-5" post-id="1172" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/surprise.svg" alt="Surprise">
                    </a>
                    <div class="twp-reaction-title">Surprise</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

            </div>
        </div>

    ]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1172</post-id>	</item>
		<item>
		<title>CSS Variable Fonts</title>
		<link>https://www.robertobeccari.it/2020/03/10/css-variable-fonts/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=css-variable-fonts</link>
		
		<dc:creator><![CDATA[Roberto Beccari]]></dc:creator>
		<pubDate>Tue, 10 Mar 2020 08:00:00 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS Semantico - Il libro]]></category>
		<category><![CDATA[Web design]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Css Semantico]]></category>
		<category><![CDATA[fonts]]></category>
		<category><![CDATA[libro]]></category>
		<category><![CDATA[variable fonts]]></category>
		<guid isPermaLink="false">https://www.robertobeccari.it/?p=1140</guid>

					<description><![CDATA[Oggi parliamo di un'altra novità introdotta da CSS e da qualche settimana disponibile anche sul servizio di Google, i font a dimensione e peso variabile. Sono presenti in rete molti altri servizi che supportano questi nuovi fonts.]]></description>
										<content:encoded><![CDATA[<div class='booster-block booster-read-block'>
                <div class="twp-read-time">
                	<i class="booster-icon twp-clock"></i> <span>Read Time:</span>2 Minute, 57 Second                </div>

            </div>
<p>E&#8217; martedì, non saltiamo il nostro appuntamento settimanale con i Fogli di Stili. </p>



<p><strong>Puoi registrarti sul sito <a rel="noreferrer noopener" href="http://bit.ly/CSSSemanticoLibro" target="_blank">CSSsemantico.it</a> per ricevere GRATUITAMENTE la tua copia del mio libro in formato elettronico appena sarà disponibile. </strong>    </p>



<p>Oggi parliamo nuovamente di <a rel="noreferrer noopener" aria-label="Google Fonts (opens in a new tab)" href="https://fonts.google.com/" target="_blank">Google Fonts</a>. Nel <a href="https://www.robertobeccari.it/2020/03/03/css-ottimizziamo-google-fonts/">precedente articolo</a>, abbiamo capito come poter ottimizzazione il dowload dei soli caratteri che dobbiamo utilizzare. <br>Oggi parliamo di un&#8217;altra novità introdotta da CSS e da qualche settimana disponibile anche sul servizio di Google, i font a dimensione e peso variabile. Sono presenti in rete molti altri servizi che supportano questi nuovi fonts.</p>



<p>Sono passati dieci anni dal lancio del servizio, Google introduce un nuovo layout, nuove funzionalità e un&#8217;interfaccia più dettagliata per la composizione delle risorse da includere nei tuoi CSS.</p>



<p>Google, con un tweet, ha ufficialmente reso disponibile i <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide" target="_blank" rel="noreferrer noopener" aria-label="Variable Fonts (opens in a new tab)">Variable Fonts</a> sulla sua piattaforma.</p>



<figure class="wp-block-image size-large"><a href="https://twitter.com/googlefonts/status/1234967000193150978" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="598" height="405" src="https://www.robertobeccari.it/wp-content/uploads/2020/03/image.png" alt="" class="wp-image-1141" srcset="https://www.robertobeccari.it/wp-content/uploads/2020/03/image.png 598w, https://www.robertobeccari.it/wp-content/uploads/2020/03/image-300x203.png 300w" sizes="auto, (max-width: 598px) 100vw, 598px" /></a></figure>



<p>Come possiamo attivare questa nuova interfaccia? Andate su <a rel="noreferrer noopener" aria-label="Google Fonts (opens in a new tab)" href="https://fonts.google.com/" target="_blank">Google Fonts</a>, vi verrà evidenziato che è disponibile una nuova versione (vedi immagine sotto), cliccate e il gioco è fatto. </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="883" height="203" src="https://www.robertobeccari.it/wp-content/uploads/2020/03/image-2.png" alt="" class="wp-image-1145" srcset="https://www.robertobeccari.it/wp-content/uploads/2020/03/image-2.png 883w, https://www.robertobeccari.it/wp-content/uploads/2020/03/image-2-300x69.png 300w, https://www.robertobeccari.it/wp-content/uploads/2020/03/image-2-768x177.png 768w" sizes="auto, (max-width: 883px) 100vw, 883px" /></figure>



<p>Subito non sembra tanto diverso ma se vi guardate bene attorno, ci sono un tantissime di novità.<br>Una volta sul nuovo layout, ci troviamo il filtro dei Variable Fonts subito disponibile.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="723" height="538" src="https://www.robertobeccari.it/wp-content/uploads/2020/03/image-5.png" alt="" class="wp-image-1149" srcset="https://www.robertobeccari.it/wp-content/uploads/2020/03/image-5.png 723w, https://www.robertobeccari.it/wp-content/uploads/2020/03/image-5-300x223.png 300w" sizes="auto, (max-width: 723px) 100vw, 723px" /></figure>



<p>Selezionandolo, ci verranno filtrati solo i font che supportano la &#8220;variabilità&#8221; del carattere, questo permette, tramite CSS, di specificare diversi valori come peso, larghezza, inclinazione, ecc. del carattere. Questa è la variabilità, poter occupare spazi diversi, senza fermarsi alla classica modalità di gestione dello stile del testo secondo grassetti o corsivi.</p>



<p>Possiamo dettagliare meglio dicendo che: Il termine carattere e carattere tipografico sono usati da molti in modo intercambiabile. Tuttavia c&#8217;è una differenza: un carattere tipografico include un&#8217;intera famiglia di disegni, come il carattere tipografico <a rel="noreferrer noopener" aria-label=" (opens in a new tab)" href="https://fonts.google.com/specimen/Roboto" target="_blank">Roboto</a>. Un font è uno dei file digitali di quella famiglia, come &#8220;Roboto Bold&#8221; o &#8220;Roboto Italic&#8221;. In altre parole, un carattere tipografico è ciò che <em>vedi</em> e il carattere è ciò che <em>usi</em>. </p>



<p>Per semplificare, quando utilizzo un carattere, e scelgo di specificare il grassetto, sto utilizzando un altro carattere della stessa famiglia, come conseguenza quando includo un font nel mio foglio di stile, includo anche l&#8217;intera famiglia se questa mi è utile per mettere in evidenza parti del testo.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="870" height="569" src="https://www.robertobeccari.it/wp-content/uploads/2020/03/image-6.png" alt="" class="wp-image-1151" srcset="https://www.robertobeccari.it/wp-content/uploads/2020/03/image-6.png 870w, https://www.robertobeccari.it/wp-content/uploads/2020/03/image-6-300x196.png 300w, https://www.robertobeccari.it/wp-content/uploads/2020/03/image-6-768x502.png 768w" sizes="auto, (max-width: 870px) 100vw, 870px" /></figure>



<p>Per ottenere un effetto di questo tipo, quando font devo scaricare? il <strong>Roboto Thin</strong>, il <strong>Roboto Black</strong>, il <strong>Roboto Regular Italic,</strong> e così via.</p>



<p>I Variable Fonts cercano, per quando possibile, di migliorare questa situazione. Non tutti i font si adattano a queste nuove caratteristiche perché non per tutti è possibile avere punti mobili che &#8220;spostati&#8221; mantengono le stesse linee o grazie.</p>



<h4 class="wp-block-heading">Ma come lavoriamo con questi nuovi caratteri?</h4>



<p>Dal mio punto di vista ho trovato la modalità poco lineare, si tratta in sostanza di utilizzare una nuova proprietà chiamata &#8220;<code>font-variation-settings</code>&#8221; alla quale possiamo assegnare i valori variabili. Credo che sarà soggetto a cambiamenti in futuro, al momento è stata scelta questa modalità per far convivere le due modalità, fonts variabili e non, probabilmente &#8220;<code>font-weight</code>&#8221; sarà la sua naturale evoluzione, così come è oggi per quelli non variabili. </p>



<p>Questa è la tabella di riferimento</p>



<figure class="wp-block-table"><table class=""><tbody><tr><th>Nomi degli assi e valori CSS</th></tr><tr><td>Peso</td><td><code>wght</code></td></tr><tr><td>Larghezza</td><td><code>wdth</code></td></tr><tr><td>inclinazione</td><td><code>slnt</code></td></tr><tr><td>Dimensione ottica</td><td><code>opsz</code></td></tr><tr><td>Corsivo</td><td><code>ital</code></td></tr><tr><td>Grado</td><td><code>GRAD</code></td></tr></tbody></table></figure>



<p>la sintassi è la seguente, un esempio che utilizza solo Peso e Larghezza.</p>



<pre class="wp-block-code"><code>.fontvariabile {
    font-family: AmstelvarAlpha;
    font-variation-settings: 'wdth' 400, 'wght' 98;
  }</code></pre>



<p>Per darvi un&#8217;idea più ampia della flessibilità di questo modello, <a rel="noreferrer noopener" aria-label="ecco un ottimo esempio (opens in a new tab)" href="https://variable-font-experiments.glitch.me/" target="_blank">ecco un ottimo esempio</a>. </p>



<figure class="wp-block-image size-large"><a href="https://variable-font-experiments.glitch.me/" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="977" height="811" src="https://www.robertobeccari.it/wp-content/uploads/2020/03/image-7.png" alt="" class="wp-image-1153" srcset="https://www.robertobeccari.it/wp-content/uploads/2020/03/image-7.png 977w, https://www.robertobeccari.it/wp-content/uploads/2020/03/image-7-300x249.png 300w, https://www.robertobeccari.it/wp-content/uploads/2020/03/image-7-768x638.png 768w" sizes="auto, (max-width: 977px) 100vw, 977px" /></a></figure>



<p>Vi lascio anche il link alla <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide" target="_blank" rel="noreferrer noopener" aria-label="documentazione developer.mozilla.org (opens in a new tab)">documentazione developer.mozilla.org</a> relativa ai Variable Fonts.</p>



<p>Buone variazioni!</p>



<p><strong>Puoi registrarti sul sito <a rel="noreferrer noopener" href="http://bit.ly/CSSSemanticoLibro" target="_blank">CSSsemantico.it</a> per ricevere GRATUITAMENTE la tua copia del mio libro in formato elettronico appena sarà disponibile. </strong>    </p>



<p></p>
        <div class="booster-block booster-reactions-block">
            <div class="twp-reactions-icons">
                
                <div class="twp-reacts-wrap">
                    <a react-data="be-react-1" post-id="1140" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/happy.svg" alt="Happy">
                    </a>
                    <div class="twp-reaction-title">
                        Happy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">1</span>
                        
                                                <span class="twp-react-percent"><span>100</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-2" post-id="1140" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sad.svg" alt="Sad">
                    </a>
                    <div class="twp-reaction-title">
                        Sad                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-3" post-id="1140" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/excited.svg" alt="Excited">
                    </a>
                    <div class="twp-reaction-title">
                        Excited                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-6" post-id="1140" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/sleepy.svg" alt="Sleepy">
                    </a>
                    <div class="twp-reaction-title">
                        Sleepy                    </div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                        
                                                <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-4" post-id="1140" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/angry.svg" alt="Angry">
                    </a>
                    <div class="twp-reaction-title">Angry</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                        
                    </div>
                </div>

                <div class="twp-reacts-wrap">
                    <a react-data="be-react-5" post-id="1140" class="be-face-icons un-reacted" href="javascript:void(0)">
                        <img decoding="async" src="https://www.robertobeccari.it/wp-content/plugins/booster-extension//assets/icon/surprise.svg" alt="Surprise">
                    </a>
                    <div class="twp-reaction-title">Surprise</div>
                    <div class="twp-count-percent">
                                                    <span style="display: none;" class="twp-react-count">0</span>
                                                                        <span class="twp-react-percent"><span>0</span> %</span>
                                            </div>
                </div>

            </div>
        </div>

    ]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1140</post-id>	</item>
	</channel>
</rss>
