{"id":76053,"date":"2024-01-22T12:24:23","date_gmt":"2024-01-22T11:24:23","guid":{"rendered":"https:\/\/kinqsta.com\/it\/?p=76053&#038;preview=true&#038;preview_id=76053"},"modified":"2024-01-26T09:28:03","modified_gmt":"2024-01-26T08:28:03","slug":"tecniche-css-avanzate","status":"publish","type":"post","link":"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/","title":{"rendered":"Tecniche CSS avanzate: un approfondimento su transizioni, animazioni e trasformazioni"},"content":{"rendered":"<p>Il CSS non serve pi\u00f9 solo a rendere belli i siti. Si \u00e8 evoluto in uno strumento che d\u00e0 vita ai siti web con movimenti e interazioni che un tempo si pensava fossero impossibili.<\/p>\n<p>Per questo motivo, questa guida vi aiuter\u00e0 a familiarizzare con tre potenti funzioni in particolare: transizioni, animazioni e trasformazioni. La comprensione e l&#8217;utilizzo di queste tecniche avanzate sono essenziali per i web designer e gli sviluppatori che gi\u00e0 conoscono le <a href=\"https:\/\/kinqsta.com\/it\/blog\/best-practice-css\/\">basi del CSS<\/a> e vogliono creare siti web che si distinguano e che resistano alla prova del tempo.<\/p>\n<p>Leggendo questa guida, acquisirete competenze preziose per elevare i vostri progetti web al di l\u00e0 dell&#8217;ordinario. E ci auguriamo ne trarrete anche un po&#8217; di ispirazione.<br \/>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc><\/p>\n<h2>Transizioni CSS avanzate<\/h2>\n<p>Le transizioni CSS avanzate rendono gli elementi dell&#8217;interfaccia utente interattivi, coinvolgenti e piacevoli da vedere. Immaginate di avere un pulsante sul vostro sito. Normalmente se ne sta l\u00ec, ma con le transizioni CSS, quando qualcuno ci passa sopra, cambia colore o magari cresce un po&#8217; di dimensioni.<\/p>\n<p>Il concetto ruota attorno all&#8217;idea dell&#8217;interpolazione, ovvero la transizione fluida tra diversi stati di una propriet\u00e0 CSS.<\/p>\n<p>Per creare questi effetti, bisogna conoscere alcune propriet\u00e0 CSS:<\/p>\n<ul>\n<li><strong>Propriet\u00e0 di transizione<\/strong>: queste comprendono l&#8217;indicazione della propriet\u00e0 che volete animare (come <code>background-color<\/code> o <code>opacity<\/code>), l&#8217;impostazione della durata della transizione e la scelta del parametro <code>transition-timing-function<\/code> (come <code>ease-in<\/code> o <code>linear<\/code>), che determina l&#8217;andamento della transizione.<\/li>\n<li><strong>Funzioni di temporizzazione<\/strong>: sono indispensabili perch\u00e9 controllano l&#8217;accelerazione e la decelerazione della transizione. Una delle opzioni pi\u00f9 versatili \u00e8 la funzione <code>cubic-bezier<\/code>. Questa funzione permette di creare curve di velocit\u00e0 personalizzate, dando un controllo completo sul ritmo della transizione. All&#8217;inizio pu\u00f2 essere un po&#8217; complicato, ma strumenti come <a href=\"https:\/\/cubic-bezier.com\/#.64,.55,.93,.18\" target=\"_blank\" rel=\"noopener noreferrer\">cubic-bezier<\/a> aiutano nella visualizzazione e nella creazione di queste curve.<\/li>\n<\/ul>\n<figure id=\"attachment_173234\" aria-describedby=\"caption-attachment-173234\" style=\"width: 900px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-173234\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2024\/01\/cubic-bezier.png\" alt=\"cubic-bezier\" width=\"900\" height=\"364\"><figcaption id=\"caption-attachment-173234\" class=\"wp-caption-text\">Un esempio di cubic-bezier in azione.<\/figcaption><\/figure>\n<p>Ecco un semplice esempio che illustra come utilizzare questo strumento nel vostro CSS:<\/p>\n<pre><code class=\"language-css\">.my-element {\n\ntransition-property: opacity;\n\ntransition-duration: 0.5s;\n\ntransition-timing-function: cubic-bezier(0.17, 0.67, 0.83, 0.67);\n\n}\n<\/code><\/pre>\n<p>In questo snippet, <code>.my-element<\/code> cambier\u00e0 opacit\u00e0 con una curva di velocit\u00e0 unica definita dalla funzione <code>cubic-bezier<\/code>. Questa curva impone un tipo di movimento specifico, ad esempio inizia lentamente, accelera e poi rallenta verso la fine.<\/p>\n<p>Assegnando valori personalizzati a <code>transition-timing-function<\/code>, \u00e8 possibile muovere gli elementi web in modo pi\u00f9 naturale, dinamico o semplicemente diverso dallo standard. \u00c8 un ottimo strumento per aggiungere personalit\u00e0 e finezza alle animazioni web.<\/p>\n<p>Ed ecco alcune tecniche avanzate:<\/p>\n<ol>\n<li><strong>Combinare pi\u00f9 propriet\u00e0<\/strong>: perch\u00e9 accontentarsi di animare solo una cosa? I CSS permettono di allineare diverse propriet\u00e0 e di animarle tutte insieme. Questo \u00e8 perfetto per aggiungere livelli all&#8217;animazione.<\/li>\n<li><strong>Animazioni sincronizzate<\/strong>: \u00e8 anche possibile allineare diverse propriet\u00e0 per far muovere gli elementi allo stesso ritmo, creando un effetto pi\u00f9 coordinato.<\/li>\n<li><strong>Transizioni annidate<\/strong>: \u00e8 possibile applicare le transizioni agli elementi all&#8217;interno di un container. In questo modo, quando interagite con il container, gli elementi child si comportano nel modo che preferite.<\/li>\n<\/ol>\n<p>Assicuratevi che queste animazioni non siano solo belle da vedere ma anche fluide, soprattutto sui dispositivi meno potenti. Propriet\u00e0 come <code>transform<\/code> e <code>opacity<\/code> sono pi\u00f9 semplici per i browser e non dovrebbero influire troppo sulle prestazioni.<\/p>\n<p>Inoltre, un avviso con la propriet\u00e0 <code>will-change<\/code> consente al browser di prepararsi per l&#8217;azione, assicurando che tutto fili liscio.<\/p>\n<p>Questa \u00e8 solo un&#8217;ultima nota per garantire che tutto questo funzioni ovunque: i browser possono essere esigenti. I prefissi dei vendor garantiscono che le transizioni funzionino correttamente su diversi browser. Si tratta di un po&#8217; di lavoro in pi\u00f9, ma strumenti come gli <a href=\"https:\/\/autoprefixer.github.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">autoprefixers<\/a> sono molto utili ed evitano eventuali errori.<\/p>\n<h2>Le trasformazioni nei CSS<\/h2>\n<p>Le trasformazioni CSS sono un ottimo strumento per rendere pi\u00f9 interessante il vostro design. Possono essere utilizzate per spostare le cose, ovviamente, ma possono cambiare l&#8217;intera atmosfera di una pagina. La propriet\u00e0 <code>transform<\/code> \u00e8 l&#8217;elemento principale.<\/p>\n<p>\u00c8 versatile e permette di spostare gli elementi da un punto all&#8217;altro, come far scorrere un&#8217;immagine sullo schermo o cambiarne le dimensioni: ad esempio, facendo sembrare qualcosa pi\u00f9 vicino o pi\u00f9 lontano, proprio come lo zoom di una foto. E se volete essere un po&#8217; pi\u00f9 fantasiosi, potreste anche far ruotare gli elementi.<\/p>\n<p>La parte impressionante sono le trasformazioni 3D. Con funzioni come <code>translate3d<\/code>, <code>scale3d<\/code> e <code>rotate3d<\/code>, gli elementi possono saltare fuori dallo schermo, creando un&#8217;esperienza pi\u00f9 coinvolgente all&#8217;interno del browser.<\/p>\n<p>Prendiamo, ad esempio, l&#8217;effetto flipping card. Si tratta di un&#8217;interessante funzione in cui un lato di una card mostra determinate informazioni e, quando si capovolge, viene rivelato un nuovo contenuto sull&#8217;altro lato. Questo elemento interattivo pu\u00f2 davvero catturare l&#8217;attenzione dei visitatori.<\/p>\n<p>Per ottenere questo effetto si pu\u00f2 utilizzare la propriet\u00e0 <code>backface-visibility<\/code>. In questo modo il <a href=\"https:\/\/css-tricks.com\/almanac\/properties\/b\/backface-visibility\/\" target=\"_blank\" rel=\"noopener noreferrer\">retro della card rimane nascosto<\/a> fino a quando non deve essere visto.<\/p>\n<p>Ma perch\u00e9 fermarsi qui? Si pu\u00f2 ottenere molto di pi\u00f9 combinando queste trasformazioni con transizioni e animazioni. Potreste avere un pulsante che cresce elegantemente di dimensioni quando ci si passa sopra il mouse o un&#8217;icona che si muove allegramente sullo schermo. Questi cambiamenti dinamici aggiungono fluidit\u00e0 agli elementi della pagina, rendendo l&#8217;esperienza dell&#8217;utente ancora pi\u00f9 coinvolgente.<\/p>\n<p>Designmodo offre diversi ottimi esempi di questo tipo di azione. Permette di visualizzare il <a href=\"https:\/\/designmodo.com\/backface-visibility-css-animation\" target=\"_blank\" rel=\"noopener noreferrer\">CSS per le trasformazioni 3D<\/a> e <a href=\"https:\/\/designmodo.com\/demo\/backface-visibility\/index.html\" target=\"_blank\" rel=\"noopener noreferrer\">vedere il codice in azione<\/a>:<\/p>\n<figure id=\"attachment_173235\" aria-describedby=\"caption-attachment-173235\" style=\"width: 900px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-173235\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2024\/01\/designmodo-spinning-donut.png\" alt=\"ciambella rotante designmodo\" width=\"900\" height=\"395\"><figcaption id=\"caption-attachment-173235\" class=\"wp-caption-text\">Designmodo offre un ottimo esempio di trasformazione 3D.<\/figcaption><\/figure>\n<h2>Container query<\/h2>\n<p>Le container query sono un&#8217;altra funzionalit\u00e0 CSS che vale la pena esplorare. Permettono di modellare gli elementi in base alle dimensioni del loro contenitore, anzich\u00e9 in base alle dimensioni dell&#8217;intero schermo. Immaginate di avere una scatola e volete che gli elementi al suo interno abbiano un bell&#8217;aspetto indipendentemente dalle dimensioni della scatola. Le container query sono perfette per questo.<\/p>\n<p>Sono molto utili quando si vuole che diverse parti della pagina, come le barre laterali o le schede, cambino aspetto a seconda dello spazio che hanno a disposizione. Ogni componente pu\u00f2 <a href=\"https:\/\/www.smashingmagazine.com\/2023\/07\/writing-css-2023\/\" target=\"_blank\" rel=\"noopener noreferrer\">decidere il proprio stile<\/a>, indipendentemente dal resto della pagina.<\/p>\n<p>Ecco in breve come utilizzarle:<\/p>\n<ul>\n<li><strong>Impostare il container<\/strong>: per prima cosa, indicate al CSS quale parte della pagina \u00e8 un container utilizzando propriet\u00e0 come <code>container-type<\/code> e <code>container-name<\/code>.<\/li>\n<li><strong>Scrivere le query<\/strong>: proprio come le media query, ma per i container. Scrivete una regola che dice: &#8220;Ehi, se il contenitore \u00e8 largo almeno cos\u00ec, allora apporta queste modifiche allo stile&#8221;<\/li>\n<\/ul>\n<p>Ecco come si presenta il codice di base:<\/p>\n<pre><code class=\"language-css\">@container (min-width: 300px) {\n\n.component {\n\n\/* styles *\/\n\n}\n\n}<\/code><\/pre>\n<p>In questo esempio, gli stili della classe <code>.component<\/code> verranno applicati quando il suo contenitore raggiunge una larghezza minima di 300px.<\/p>\n<p>Ora, le container query possono essere utilizzate in vari contesti, come ad esempio:<\/p>\n<ul>\n<li><strong>Sidebar e footer reattivi<\/strong>: regolazione della larghezza e del layout delle barre laterali o dei footer in base alle dimensioni del container.<\/li>\n<li><strong>Schede reattive<\/strong>: modifica del layout o dello stile delle schede in un layout a griglia o flexbox in base alla larghezza del loro contenitore.<\/li>\n<\/ul>\n<p>Sebbene le container query siano supportate dai principali browser, tra cui Chrome, Firefox, Safari ed Edge, \u00e8 comunque buona norma utilizzarle come progressive enhancement. Iniziate con gli stili di base per i browser che non le supportano e aggiungete le container query per i browser che le supportano.<\/p>\n<h2>Utilizzare Flexbox per l&#8217;allineamento verticale<\/h2>\n<p><a href=\"https:\/\/web.dev\/learn\/css\/flexbox\" target=\"_blank\" rel=\"noopener noreferrer\">Flexbox<\/a> \u00e8 uno strumento incredibilmente utile nei CSS, soprattutto per quanto riguarda l&#8217;allineamento verticale. Anche se esiste da un po&#8217; di tempo, \u00e8 sempre molto importante, soprattutto per allineare gli elementi lungo l&#8217;asse trasversale (che, a seconda del layout, pu\u00f2 essere verticale).<\/p>\n<h3>Utilizzare align-items per l&#8217;allineamento verticale<\/h3>\n<p>La propriet\u00e0 <code>align-items<\/code> di Flexbox \u00e8 ideale per allineare gli elementi in verticale all&#8217;interno di un contenitore. Funziona quando il contenitore flex ha un <code>flex-direction<\/code> row. Questa propriet\u00e0 permette di controllare l&#8217;allineamento di tutti i child di un flex container lungo l&#8217;asse trasversale.<\/p>\n<p>Se avete un gruppo di elementi in un contenitore flessibile e volete che siano tutti centrati verticalmente, dovrete usare <code>align-items: center;<\/code>. Ecco le opzioni principali disponibili per <code>align-items<\/code>:<\/p>\n<ul>\n<li><code>flex-start<\/code>: allinea gli elementi all&#8217;inizio del container.<\/li>\n<li><code>flex-end<\/code>: allinea gli elementi alla fine del container.<\/li>\n<li><code>center<\/code>: centra gli elementi nel container.<\/li>\n<li><code>baseline<\/code>: allinea gli elementi in base alla linea di base.<\/li>\n<li><code>stretch<\/code>: allunga gli elementi per riempire il contenitore (comportamento predefinito).<\/li>\n<\/ul>\n<h3>Utilizzare align-self per il controllo individuale<\/h3>\n<p><code>align-items<\/code> \u00e8 ottimo per allineare tutti gli elementi di un contenitore, ma a volte pu\u00f2 essere necessario allineare un solo elemento in modo diverso. Ecco perch\u00e9 <code>align-self<\/code> \u00e8 molto utile. Questa propriet\u00e0 permette di sovrascrivere il valore di <code>align-items<\/code> per i singoli elementi del flex. Accetta gli stessi valori di <code>align-items<\/code>.<\/p>\n<p>Supponiamo di avere un contenitore flex con <code>align-items: center;<\/code> ma c&#8217;\u00e8 un elemento che volete allineare all&#8217;inizio. Potete applicare <code>align-self: flex-start;<\/code> a quell&#8217;elemento specifico. In questo modo avrete un controllo preciso sull&#8217;allineamento dei singoli elementi.<\/p>\n<p>Pu\u00f2 essere molto utile vederlo in azione.<\/p>\n<p>Supponiamo che stiate progettando una barra di navigazione con un logo, alcuni link e una barra di ricerca. Volete che i link siano centrati, che il logo sia allineato in alto e che la barra di ricerca sia allineata in basso.<\/p>\n<p>Ecco come fare:<\/p>\n<pre><code class=\"language-css\">.nav-container {\n\ndisplay: flex;\n\nflex-direction: row;\n\nalign-items: center;\n\n}\n\n.logo {\n\nalign-self: flex-start;\n\n}\n\n.search-bar {\n\nalign-self: flex-end;\n\n}<\/code><\/pre>\n<p>In questo esempio, il sito <code>.nav-container<\/code> \u00e8 un contenitore flessibile con gli elementi generalmente centrati. Il logo e la barra di ricerca, tuttavia, si discostano da questa regola generale, allineandosi rispettivamente all&#8217;inizio e alla fine del contenitore.<\/p>\n<h2>Le moderne funzioni colore nei CSS<\/h2>\n<p>Le funzioni di colore nei CSS si sono evolute in modo significativo, e oggi offrono soluzioni pi\u00f9 sofisticate per definire e manipolare i colori nel web design. Analizziamo alcune di queste funzioni:<\/p>\n<h3>1. rgb() e rgba()<\/h3>\n<p>La funzione <code>rgb()<\/code> definisce i colori utilizzando i canali rosso, verde e blu. Ogni canale pu\u00f2 avere un valore compreso tra 0 e 255. La variante <code>rgba()<\/code> aggiunge un canale alfa per l&#8217;opacit\u00e0, dove 1 \u00e8 completamente opaco e 0 completamente trasparente.<\/p>\n<p>Ecco un esempio:<\/p>\n<pre><code class=\"language-css\">.example {\n\ncolor: rgb(255, 0, 0); \/* Red *\/\n\nbackground-color: rgba(255, 0, 0, 0.5); \/* Semi-transparent red *\/\n\n}<\/code><\/pre>\n<h3>2. hsl() e hsla()<\/h3>\n<p><code>hsl()<\/code> rappresenta i colori in termini di tonalit\u00e0, saturazione e luminosit\u00e0, rendendo pi\u00f9 intuitiva la selezione delle variazioni di colore. Come <code>rgba()<\/code>, <code>hsla()<\/code> ha un canale alfa per l&#8217;opacit\u00e0. Eccone un esempio:<\/p>\n<pre><code class=\"language-css\">.example {\n\ncolor: hsl(120, 100%, 50%); \/* Green *\/\n\nbackground-color: hsla(120, 100%, 50%, 0.3); \/* Semi-transparent green *\/\n\n}<\/code><\/pre>\n<h3>3. oklch() e oklab()<\/h3>\n<p><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/color_value\/oklch\"><code>oklch()<\/code><\/a> e <code>oklab()<\/code> sono state aggiunte pi\u00f9 di recente alle funzioni di colore dei CSS. Si basano sullo <a href=\"https:\/\/www.hunterlab.com\/blog\/what-is-cielab-color-space\/\" target=\"_blank\" rel=\"noopener noreferrer\">CIELAB color space<\/a>, che \u00e8 stato progettato per essere percettivamente uniforme. Ci\u00f2 significa che le variazioni dei valori del colore corrispondono pi\u00f9 fedelmente alle variazioni percepite dall&#8217;occhio umano.<\/p>\n<p>Nello specifico:<\/p>\n<ul>\n<li><code>oklab()<\/code> \u00e8 utilizzato per definire i colori in uno spazio percettivamente uniforme.<\/li>\n<li><code>oklch()<\/code> \u00e8 simile ma utilizza coordinate cilindriche (luminosit\u00e0, colore e sfumatura).<\/li>\n<\/ul>\n<p>Queste funzioni permettono di manipolare i colori in modo pi\u00f9 accurato e intuitivo, soprattutto per attivit\u00e0 come la creazione di gradienti di colore uniformi. Vediamo un esempio:<\/p>\n<pre><code class=\"language-css\">.example {\n\ncolor: oklch(75%, 0.25, 250); \/* A color in oklch *\/\n\nbackground-color: oklab(0.623, 0.172, -0.079); \/* A color in oklab *\/\n\n}<\/code><\/pre>\n<h3>Schemi di colore avanzati<\/h3>\n<p>Con queste funzioni, in particolare con le pi\u00f9 avanzate <code>oklch()<\/code> e <code>oklab()<\/code>, \u00e8 possibile implementare schemi di colore complessi e visivamente coerenti e accattivanti. Offrono un maggiore controllo sul modo in cui i colori vengono resi e percepiti, facendo s\u00ec che i vostri progetti siano esteticamente gradevoli e accessibili.<\/p>\n<p>Se combinate queste funzioni di colore con caratteristiche CSS come le propriet\u00e0 personalizzate (variabili CSS) e i calcoli, potrete sviluppare sistemi di colore dinamici e flessibili che si adattano a temi, stati e ambienti diversi.<\/p>\n<p>Dato che gli standard web e il supporto dei browser per queste funzioni continuano a cambiare, l&#8217;adozione di queste moderne funzioni cromatiche pu\u00f2 migliorare notevolmente il design visivo e l&#8217;esperienza utente dei vostri progetti web.<\/p>\n<h2>Curvare il testo intorno alle immagini<\/h2>\n<p>La propriet\u00e0 CSS <code>shape-outside<\/code> <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/shape-outside\" target=\"_blank\" rel=\"noopener noreferrer\">avvolge il testo intorno alle immagini<\/a>, permettendo di creare layout pi\u00f9 dinamici e visivamente interessanti e uno <a href=\"https:\/\/kinqsta.com\/it\/blog\/styling-immagini-css\/\">stile delle immagini<\/a> pi\u00f9 avanzato.<\/p>\n<p>Permette di definire una forma attorno alla quale il contenuto in linea deve avvolgersi. \u00c8 utile per avvolgere il testo intorno alle immagini in una forma non rettangolare, creando layout pi\u00f9 organici e visivamente accattivanti rispetto all&#8217;avvolgimento rettangolare standard del testo.<\/p>\n<h3>Come funziona?<\/h3>\n<p>\u00c8 possibile definire varie forme come cerchi, ellissi e poligoni, oppure utilizzare il canale alfa di un&#8217;immagine per definire la forma.<\/p>\n<p>La propriet\u00e0 <code>shape-outside<\/code> si applica tipicamente agli elementi fluttuanti. Quando si fa fluttuare un&#8217;immagine e si applica una propriet\u00e0 <code>shape-outside<\/code>, il testo si avvolge intorno ad essa secondo la forma definita.<\/p>\n<p>Ecco un esempio di shape-outside con un cerchio:<\/p>\n<pre><code class=\"language-css\">.image {\n\nfloat: left;\n\nshape-outside: circle(50%);\n\nwidth: 200px;\n\nheight: 200px;\n\nmargin-right: 15px;\n\n}<\/code><\/pre>\n<p>In questo esempio, la classe <code>.image<\/code> viene applicata a un elemento immagine. L&#8217;immagine \u00e8 spostata a sinistra e <code>shape-outside: circle(50%);<\/code> crea una forma circolare attorno alla quale si avvolger\u00e0 il testo. <code>shape-outside<\/code> pu\u00f2 aprire nuove possibilit\u00e0 all&#8217;interno dei vostri progetti poich\u00e9 permette al testo di scorrere intorno a forme complesse, rendendo possibile la creazione di layout simili a quelli di una rivista e di pagine web visivamente ricche.<\/p>\n<h2>Blend mode CSS<\/h2>\n<p>I blend mode CSS permettono di mescolare colori e immagini, creando effetti visivi unici. Queste modalit\u00e0 di blend (fusione) permettono di creare effetti di testo accattivanti, sovrapposizioni di immagini e intricati motivi di sfondo. Questa propriet\u00e0 viene utilizzata per definire il modo in cui le immagini e il colore di sfondo di un elemento devono fondersi tra loro. Ad esempio, se avete un&#8217;immagine di sfondo e un colore di sfondo, potete fonderli utilizzando diverse modalit\u00e0 di fusione come multiply, screen, overlay, ecc. Ecco come potrebbe apparire il codice:<\/p>\n<pre><code class=\"language-css\">.element {\n\nbackground-image: url('image.jpg');\n\nbackground-color: blue;\n\nbackground-blend-mode: multiply;\n\n}<\/code><\/pre>\n<p>Ora <code>mix-blend-mode<\/code> fonde il contenuto di un elemento (comprese le immagini e il testo) con il suo sfondo. Questo \u00e8 utile soprattutto per gli <a href=\"https:\/\/kinqsta.com\/it\/blog\/contorno-testo-css\/\">effetti di testo<\/a> o per sovrapporre un&#8217;immagine a un&#8217;altra. In questo modo:<\/p>\n<pre><code class=\"language-css\">&lt;\n\n.element {\n\nmix-blend-mode: screen;\n\n}<\/code><\/pre>\n<h3>Modalit\u00e0 di fusione pi\u00f9 diffuse<\/h3>\n<p>Come riferimento, ecco alcune delle modalit\u00e0 di fusione pi\u00f9 diffuse da conoscere per utilizzare correttamente questo effetto:<\/p>\n<ul>\n<li><strong>Multiply<\/strong>: moltiplica i colori del livello di fusione e del livello base, ottenendo un colore pi\u00f9 scuro.<\/li>\n<li><strong>Screen<\/strong>: rende i colori pi\u00f9 chiari, all&#8217;opposto di Multiply. \u00c8 utile per creare effetti di luce.<\/li>\n<li><strong>Overlay<\/strong>: combina le modalit\u00e0 di fusione Multiply e Screen. Le parti chiare dell&#8217;immagine diventano pi\u00f9 chiare e quelle scure pi\u00f9 scure.<\/li>\n<li><strong>Darken &#038; lighten<\/strong>: seleziona rispettivamente il colore pi\u00f9 scuro o pi\u00f9 chiaro.<\/li>\n<li><strong>Color dodge &#038; color burn<\/strong>: schiarisce o scurisce il colore di base per riflettere il colore di fusione.<\/li>\n<li><strong>Difference &#038; exclusion<\/strong>: creano effetti di colore pi\u00f9 artistici e invertiti.<\/li>\n<\/ul>\n<h2>Adattarsi alle preferenze degli utenti<\/h2>\n<p>L&#8217;adattamento alle preferenze degli utenti nel web design \u00e8 fondamentale per creare siti web accessibili e di facile utilizzo. Le media query CSS per preferenze come <a href=\"https:\/\/www.smashingmagazine.com\/2023\/07\/writing-css-2023\/\"><code>prefers-color-scheme<\/code><\/a> e <code>prefers-reduced-motion<\/code> svolgono un ruolo importante in questo processo.<\/p>\n<h3>prefers-color-scheme<\/h3>\n<p>Questa media query viene utilizzata per rilevare se l&#8217;utente ha chiesto al sistema di utilizzare un tema di colore chiaro o scuro. \u00c8 un modo conveniente per implementare una modalit\u00e0 scura nel design di un sito web.<\/p>\n<p>Potete utilizzare <code>prefers-color-scheme<\/code> per specificare stili diversi per le modalit\u00e0 chiare e scure.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code class=\"language-css\">\/* Default light mode styles *\/\n\nbody {\n\nbackground-color: white;\n\ncolor: black;\n\n}\n\n\/* Dark mode styles *\/\n\n@media (prefers-color-scheme: dark) {\n\nbody {\n\nbackground-color: black;\n\ncolor: white;\n\n}\n\n}<\/code><\/pre>\n<p>In questo frammento, gli stili predefiniti si applicano alla modalit\u00e0 chiara, mentre gli stili all&#8217;interno della query <code>@media<\/code> si applicano quando l&#8217;utente preferisce una combinazione di colori scuri.<\/p>\n<h3>prefers-reduced-motion<\/h3>\n<p>Questa media query \u00e8 progettata per rilevare se l&#8217;utente ha richiesto al sistema di ridurre al minimo la quantit\u00e0 di animazioni o movimenti utilizzati. \u00c8 fondamentale per gli utenti che soffrono di cinetosi o di disturbi vestibolari.<\/p>\n<p>Potete utilizzare <code>prefers-reduced-motion<\/code> per ridurre o rimuovere le animazioni e le transizioni:<\/p>\n<pre><code class=\"language-css\">\/* Standard animations *\/\n\n.animate {\n\ntransition: transform 0.3s ease;\n\n}\n\n\/* Reduced motion *\/\n\n@media (prefers-reduced-motion: reduce) {\n\n.animate {\n\ntransition: none;\n\n}\n\n}<\/code><\/pre>\n<p>In questo caso, vedrete che le animazioni sono disabilitate quando l&#8217;utente ha indicato la preferenza per un movimento ridotto.<\/p>\n<p>Aggiungere <code>prefers-color-scheme<\/code> e <code>prefers-reduced-motion<\/code> al codice CSS \u00e8 un passo avanti verso un web pi\u00f9 inclusivo e garantisce un sito accessibile e confortevole per un&#8217;ampia gamma di utenti con esigenze e preferenze diverse.<\/p>\n<h2>Gli pseudo-selettori :is() e :where()<\/h2>\n<p>Gli pseudo-selettori <code>:is()<\/code> e <code>:where()<\/code> sono strumenti CSS avanzati che permettono di gestire la specificit\u00e0 e semplificare complesse catene di selettori. Vediamo come funzionano.<\/p>\n<h3>pseudo-selettore :is()<\/h3>\n<p>Questo selettore permette di indirizzare pi\u00f9 elementi con un&#8217;unica regola e riduce la ripetizione di selettori simili. La specificit\u00e0 della pseudo-classe <code>:is()<\/code> \u00e8 la specificit\u00e0 del selettore pi\u00f9 specifico tra i suoi argomenti.<\/p>\n<pre><code class=\"language-css\">\/* Selects any paragraph or heading inside an article *\/\n\narticle :is(h1, h2, h3, p) {\n\ncolor: blue;\n\n}<\/code><\/pre>\n<h3>pseudo-selettore :where()<\/h3>\n<p>\u00c8 simile a <code>:is()<\/code>, ma con una differenza fondamentale: <code>:where()<\/code> ha sempre una specificit\u00e0 pari a zero. Ci\u00f2 lo rende utile per sovrascrivere gli stili senza aumentare la specificit\u00e0. Potete utilizzarlo in questo modo:<\/p>\n<pre><code class=\"language-css\">\/* Selects any paragraph or heading, but with no added specificity *\/\n\n:where(article, section) p {\n\nmargin-bottom: 1em;\n\n}<\/code><\/pre>\n<p>Utilizzando <code>:is()<\/code> e <code>:where()<\/code>, potrete creare fogli di stile pi\u00f9 flessibili e mantenibili, soprattutto quando si tratta di progetti complessi. Questi pseudo-selettori possono essere utili se avete bisogno di:<\/p>\n<ul>\n<li><strong>Semplificare i selettori annidati<\/strong>: possono semplificare selettori annidati in profondit\u00e0 o raggruppati, rendendo il vostro CSS pi\u00f9 leggibile e mantenibile nel tempo.<\/li>\n<li><strong>Sovrascrivere gli stili<\/strong>: <code>:where()<\/code> \u00e8 ottimo per creare stili di base che possono essere facilmente sovrascritti senza preoccuparsi della specificit\u00e0.<\/li>\n<li><strong>Riutilizzare gli stili<\/strong>: entrambi gli pseudo-selettori consentono di creare stili pi\u00f9 modulari e riutilizzabili, in quanto potrete raggruppare diversi elementi sotto un&#8217;unica regola.<\/li>\n<\/ul>\n<p>Per un&#8217;applicazione pratica, immaginate un menu di navigazione con diverse sezioni. Potete usare <code>:is()<\/code> per creare uno stile uniforme per tutti i link del menu, indipendentemente dal livello di annidamento:<\/p>\n<pre><code class=\"language-css\">nav :is(ul, ol, div) &gt; li &gt; a {\n\npadding: 10px;\n\ncolor: white;\n\n}<\/code><\/pre>\n<h2>Riepilogo<\/h2>\n<p>Ci auguriamo che ora abbiate compreso meglio alcune delle tecniche CSS pi\u00f9 avanzate disponibili nel 2026 e oltre, dalle transizioni CSS alle trasformazioni 3D.<\/p>\n<p>Questa guida illustra queste tecniche avanzate e sottolinea la loro importanza nella realizzazione di progetti web reattivi, facili da usare e visivamente accattivanti. Indipendentemente da quale deciderete di utilizzare, ricordate di dare priorit\u00e0 all&#8217;accessibilit\u00e0 e alle <a href=\"https:\/\/kinqsta.com\/it\/blog\/ottimizzare-css\/\">prestazioni dei CSS<\/a> in tutto ci\u00f2 che fate.<\/p>\n<p>Utilizzate gi\u00e0 alcune di queste tecniche CSS avanzate? Avete consigli da suggerire ad altri?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il CSS non serve pi\u00f9 solo a rendere belli i siti. Si \u00e8 evoluto in uno strumento che d\u00e0 vita ai siti web con movimenti e &#8230;<\/p>\n","protected":false},"author":199,"featured_media":76054,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[25945,25982],"class_list":["post-76053","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-linguaggi-sviluppo-web","topic-web-design"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Tecniche CSS avanzate - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Se sei pronto ad andare oltre le basi, questa raccolta di tecniche CSS avanzate ti aiuter\u00e0 a far evolvere i tuoi progetti.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tecniche CSS avanzate: un approfondimento su transizioni, animazioni e trasformazioni\" \/>\n<meta property=\"og:description\" content=\"Se sei pronto ad andare oltre le basi, questa raccolta di tecniche CSS avanzate ti aiuter\u00e0 a far evolvere i tuoi progetti.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstaitalia\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-01-22T11:24:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-26T08:28:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/01\/wp-advanced-css-techniques-4.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Jeremy Holcombe\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Se sei pronto ad andare oltre le basi, questa raccolta di tecniche CSS avanzate ti aiuter\u00e0 a far evolvere i tuoi progetti.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/01\/wp-advanced-css-techniques-4.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Holcombe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinqsta.com\/it\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"Tecniche CSS avanzate: un approfondimento su transizioni, animazioni e trasformazioni\",\"datePublished\":\"2024-01-22T11:24:23+00:00\",\"dateModified\":\"2024-01-26T08:28:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/\"},\"wordCount\":2783,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/01\/wp-advanced-css-techniques-4.jpg\",\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/\",\"url\":\"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/\",\"name\":\"Tecniche CSS avanzate - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/01\/wp-advanced-css-techniques-4.jpg\",\"datePublished\":\"2024-01-22T11:24:23+00:00\",\"dateModified\":\"2024-01-26T08:28:03+00:00\",\"description\":\"Se sei pronto ad andare oltre le basi, questa raccolta di tecniche CSS avanzate ti aiuter\u00e0 a far evolvere i tuoi progetti.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/#primaryimage\",\"url\":\"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/01\/wp-advanced-css-techniques-4.jpg\",\"contentUrl\":\"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/01\/wp-advanced-css-techniques-4.jpg\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinqsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Web Design\",\"item\":\"https:\/\/kinqsta.com\/it\/argomenti\/web-design\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Tecniche CSS avanzate: un approfondimento su transizioni, animazioni e trasformazioni\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinqsta.com\/it\/#website\",\"url\":\"https:\/\/kinqsta.com\/it\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluzioni di hosting premium, veloci e sicure\",\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinqsta.com\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinqsta.com\/it\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinqsta.com\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/it\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstaitalia\/\",\"https:\/\/x.com\/Kinsta_IT\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinqsta.com\/it\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\",\"name\":\"Jeremy Holcombe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinqsta.com\/it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"caption\":\"Jeremy Holcombe\"},\"description\":\"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/jeremyholcombe\/\"],\"url\":\"https:\/\/kinqsta.com\/it\/blog\/author\/jeremyholcombe\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Tecniche CSS avanzate - Kinsta\u00ae","description":"Se sei pronto ad andare oltre le basi, questa raccolta di tecniche CSS avanzate ti aiuter\u00e0 a far evolvere i tuoi progetti.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/","og_locale":"it_IT","og_type":"article","og_title":"Tecniche CSS avanzate: un approfondimento su transizioni, animazioni e trasformazioni","og_description":"Se sei pronto ad andare oltre le basi, questa raccolta di tecniche CSS avanzate ti aiuter\u00e0 a far evolvere i tuoi progetti.","og_url":"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2024-01-22T11:24:23+00:00","article_modified_time":"2024-01-26T08:28:03+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/01\/wp-advanced-css-techniques-4.jpg","type":"image\/jpeg"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"Se sei pronto ad andare oltre le basi, questa raccolta di tecniche CSS avanzate ti aiuter\u00e0 a far evolvere i tuoi progetti.","twitter_image":"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/01\/wp-advanced-css-techniques-4.jpg","twitter_creator":"@Kinsta_IT","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Jeremy Holcombe","Tempo di lettura stimato":"15 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/#article","isPartOf":{"@id":"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinqsta.com\/it\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"Tecniche CSS avanzate: un approfondimento su transizioni, animazioni e trasformazioni","datePublished":"2024-01-22T11:24:23+00:00","dateModified":"2024-01-26T08:28:03+00:00","mainEntityOfPage":{"@id":"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/"},"wordCount":2783,"commentCount":0,"publisher":{"@id":"https:\/\/kinqsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/01\/wp-advanced-css-techniques-4.jpg","inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/","url":"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/","name":"Tecniche CSS avanzate - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinqsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/#primaryimage"},"image":{"@id":"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/01\/wp-advanced-css-techniques-4.jpg","datePublished":"2024-01-22T11:24:23+00:00","dateModified":"2024-01-26T08:28:03+00:00","description":"Se sei pronto ad andare oltre le basi, questa raccolta di tecniche CSS avanzate ti aiuter\u00e0 a far evolvere i tuoi progetti.","breadcrumb":{"@id":"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/#primaryimage","url":"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/01\/wp-advanced-css-techniques-4.jpg","contentUrl":"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/01\/wp-advanced-css-techniques-4.jpg","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/kinqsta.com\/it\/blog\/tecniche-css-avanzate\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinqsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"Web Design","item":"https:\/\/kinqsta.com\/it\/argomenti\/web-design\/"},{"@type":"ListItem","position":3,"name":"Tecniche CSS avanzate: un approfondimento su transizioni, animazioni e trasformazioni"}]},{"@type":"WebSite","@id":"https:\/\/kinqsta.com\/it\/#website","url":"https:\/\/kinqsta.com\/it\/","name":"Kinsta\u00ae","description":"Soluzioni di hosting premium, veloci e sicure","publisher":{"@id":"https:\/\/kinqsta.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinqsta.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/kinqsta.com\/it\/#organization","name":"Kinsta","url":"https:\/\/kinqsta.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinqsta.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinqsta.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstaitalia\/","https:\/\/x.com\/Kinsta_IT","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinqsta.com\/it\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21","name":"Jeremy Holcombe","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinqsta.com\/it\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","caption":"Jeremy Holcombe"},"description":"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.","sameAs":["https:\/\/www.linkedin.com\/in\/jeremyholcombe\/"],"url":"https:\/\/kinqsta.com\/it\/blog\/author\/jeremyholcombe\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinqsta.com\/it\/wp-json\/wp\/v2\/posts\/76053","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinqsta.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinqsta.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/it\/wp-json\/wp\/v2\/users\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/it\/wp-json\/wp\/v2\/comments?post=76053"}],"version-history":[{"count":6,"href":"https:\/\/kinqsta.com\/it\/wp-json\/wp\/v2\/posts\/76053\/revisions"}],"predecessor-version":[{"id":76147,"href":"https:\/\/kinqsta.com\/it\/wp-json\/wp\/v2\/posts\/76053\/revisions\/76147"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinqsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76053\/translations\/en"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinqsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76053\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinqsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76053\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinqsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76053\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinqsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76053\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinqsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76053\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinqsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76053\/translations\/es"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinqsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76053\/translations\/it"},{"href":"https:\/\/kinqsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76053\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/it\/wp-json\/wp\/v2\/media\/76054"}],"wp:attachment":[{"href":"https:\/\/kinqsta.com\/it\/wp-json\/wp\/v2\/media?parent=76053"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinqsta.com\/it\/wp-json\/wp\/v2\/tags?post=76053"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinqsta.com\/it\/wp-json\/wp\/v2\/topic?post=76053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}