{"id":16789,"date":"2019-04-16T09:11:40","date_gmt":"2019-04-16T09:11:40","guid":{"rendered":"http:\/\/ladderwp.com\/6-motivi-per-cui-dovresti-usare-un-preprocessore-css\/"},"modified":"2025-03-17T12:23:12","modified_gmt":"2025-03-17T12:23:12","slug":"6-motivi-per-cui-dovresti-usare-un-preprocessore-css","status":"publish","type":"post","link":"https:\/\/ladderwp.com\/it\/6-motivi-per-cui-dovresti-usare-un-preprocessore-css\/","title":{"rendered":"6 motivi per cui dovresti usare un preprocessore CSS"},"content":{"rendered":"\n<p>I preprocessori CSS sono linguaggi di scripting che estendono le funzionalit\u00e0 predefinite dei CSS. Ci permettono di utilizzare la logica nel nostro codice CSS, come variabili, annidamento, ereditariet\u00e0, mixin, funzioni e operazioni matematiche. I preprocessori CSS consentono di automatizzare facilmente le attivit\u00e0 ripetitive, di ridurre il numero di errori e il gonfiore del codice, di creare frammenti di codice riutilizzabili e di garantire la compatibilit\u00e0 con il passato.  <\/p>\n<p>Ogni preprocessore CSS ha una propria sintassi che compila in CSS regolari in modo che i browser possano renderizzarli sul lato client. Attualmente i tre preprocessori CSS pi\u00f9 popolari e stabili sono LESS, Sass e Stylus, ma ne esistono molti altri pi\u00f9 piccoli. I preprocessori CSS fanno tutti cose simili ma in modo diverso e con sintassi proprie. Ognuno di essi ha alcune caratteristiche avanzate uniche e un proprio ecosistema (strumenti, framework, librerie).   <\/p>\n<p>Oggi si parla di <strong>MENO<\/strong>.<\/p>\n<p><strong>1. @variabili<\/strong><\/p>\n<p>Le variabili rendono il tuo codice pi\u00f9 facile da mantenere perch\u00e9 ti danno la possibilit\u00e0 di controllare questi valori da un&#8217;unica posizione:<\/p>\n<pre>\/\/ Variables\n@link-color: #428bca; \/\/ sea blue\n@link-color-hover: darken(@link-color, 10%);\n\n\/\/ Usage\na,\n.link {\n  color: @link-color;\n}\na:hover {\n  color: @link-color-hover;\n}\n.widget {\n  color: #fff;\n  background: @link-color;\n}\n<\/pre>\n<p><strong>1.1 Selettori @nidificati<\/strong><\/p>\n<pre>.button {\n  &-ok {\n    background-image: url(\"ok.png\");\n  }\n  &-cancel {\n    background-image: url(\"cancel.png\");\n  }\n\n  &-custom {\n    background-image: url(\"custom.png\");\n  }\n}\n<\/pre>\n<p>Risultato dopo la compilazione:<\/p>\n<pre>.button-ok {\n  background-image: url(\"ok.png\");\n}\n.button-cancel {\n  background-image: url(\"cancel.png\");\n}\n.button-custom {\n  background-image: url(\"custom.png\");\n}\n<\/pre>\n<p><strong>2. @importazioni<\/strong><\/p>\n<p>CSS @import fa un&#8217;altra richiesta http per recuperare un altro foglio di stile, mentre Less @import prende il contenuto dal file importato e lo include nel foglio di stile compilato. Questo significa una sola richiesta http, che ti permette di creare dei partial e di organizzare il tuo css in modo migliore senza alcuno svantaggio! <\/p>\n<p>Una normale importazione prender\u00e0 il contenuto di quel file e lo scaricher\u00e0 nel file che lo richiede. Utilissimo. La concatenazione dei file \u00e8 una funzione di vitale importanza dei preprocessori.  <\/p>\n<pre>\/* Normal import *\/\n@import \"colors-or-whatever.less\";\n<\/pre>\n<p>Un&#8217;importazione (di riferimento) non fa questo. Infatti, non inserisce nulla nel file che la richiede. Il codice contenuto in quel file \u00e8 pronto per essere utilizzato, chiamando un mixin al suo interno o estendendo un selettore.  <\/p>\n<pre>@import (reference) \"https:\/\/s3-us-west-2.amazonaws.com\/s.cdpn.io\/18728\/pure.less\";\n\n.my-button {\n  &:extend(.pure-button all);\n}\n<\/pre>\n<p><strong>3. @mixins<\/strong><\/p>\n<p>I mixin copiano tutte le propriet\u00e0 in un selettore, il che pu\u00f2 portare a inutili duplicazioni. Per questo motivo puoi utilizzare le extends invece dei mixin per spostare il selettore fino alle propriet\u00e0 che desideri utilizzare, il che comporta una minore generazione di CSS. <\/p>\n<pre>.a, #b {\n  color: red;\n}\n.mixin-class {\n  .a();\n}\n.mixin-id {\n  #b();\n}\n<\/pre>\n<p>Risultato dopo la compilazione:<\/p>\n<pre>.a, #b {\n  color: red;\n}\n.mixin-class {\n  color: red;\n}\n.mixin-id {\n  color: red;\n}\n<\/pre>\n<p><strong>4. @estendi<\/strong><\/p>\n<p>Extend \u00e8 una pseudo-classe di Less che fonde il selettore a cui viene associata con altri che corrispondono a ci\u00f2 a cui fa riferimento.<\/p>\n<pre>nav ul {\n  &:extend(.inline);\n  background: blue;\n}\n.inline {\n  color: red;\n}\n<\/pre>\n<p>Risultato dopo la compilazione:<\/p>\n<pre>nav ul {\n  background: blue;\n}\n.inline,\nnav ul {\n  color: red;\n}\n<\/pre>\n<p><strong>5. @math<\/strong><\/p>\n<p>Le funzioni matematiche comprendono metodi utilizzati per eseguire operazioni numeriche come arrotondamento, radice quadrata, potenza, modulo, percentuale, ecc.<\/p>\n<pre>@nav-height: 60px;\n\nbody {\n\tpadding-top: @nav-height + 40px;\n}\n\n.nav {\n\tposition: fixed;\n\ttop: 0;\n\twidth: 100%;\n\theight: @nav-height;\n\n}\n\n.one-third {  \n\twidth: (100% \/ 3);  \n}\n<\/pre>\n<p>Risultato dopo la compilazione:<\/p>\n<pre>body {\n  padding-top: 100px;\n}\n.nav {\n  position: fixed;\n  top: 0;\n  width: 100%;\n  height: 60px;\n}\n.one-third {\n  width: 33.33333333%;\n}\n<\/pre>\n<p><strong>6. @loops<\/strong><\/p>\n<p>Una delle cose migliori di LESS \u00e8 che puoi creare loop e classi in modo dinamico.<\/p>\n<p>L&#8217;esempio che segue \u00e8 quello di creare dinamicamente delle classi, con incrementi di 10. Avrei potuto scrivere 10 classi, ma questo modo \u00e8 molto pi\u00f9 bello e facile da mantenere. <\/p>\n<pre>.mixin-loop (@index) when (@index > 0) {\n  .per-@{index}0 {\n    display: inline-block;\n    width: @index * 10%;\n  }\n  .mixin-loop(@index - 1);\n}\n.mixin-loop(10);\n<\/pre>\n<p>Risultato dopo la compilazione:<\/p>\n<pre>.per-100 {\n  display: inline-block;\n  width: 100%;\n}\n.per-90 {\n  display: inline-block;\n  width: 90%;\n}\n.per-80 {\n  display: inline-block;\n  width: 80%;\n}\n.per-70 {\n  display: inline-block;\n  width: 70%;\n}\n.per-60 {\n  display: inline-block;\n  width: 60%;\n}\n.per-50 {\n  display: inline-block;\n  width: 50%;\n}\n.per-40 {\n  display: inline-block;\n  width: 40%;\n}\n.per-30 {\n  display: inline-block;\n  width: 30%;\n}\n.per-20 {\n  display: inline-block;\n  width: 20%;\n}\n.per-10 {\n  display: inline-block;\n  width: 10%;\n}\n<\/pre>\n<p><style>pre {border: 1px solid #d1d1d1;line-height: 1.3125;margin: 0 0 1.75em;max-width: 100%;overflow: auto;padding: 1.75em;white-space: pre-wrap;word-wrap: break-word;}<\/style> <\/p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I preprocessori CSS sono linguaggi di scripting che estendono le funzionalit\u00e0 predefinite dei CSS. Ci permettono di utilizzare la logica nel nostro codice CSS, come variabili, annidamento, ereditariet\u00e0, mixin, funzioni e operazioni matematiche. I preprocessori CSS consentono di automatizzare facilmente le attivit\u00e0 ripetitive, di ridurre il numero di errori e il gonfiore del codice, di&hellip; <a class=\"more-link\" href=\"https:\/\/ladderwp.com\/it\/6-motivi-per-cui-dovresti-usare-un-preprocessore-css\/\">Continue reading <span class=\"screen-reader-text\">6 motivi per cui dovresti usare un preprocessore CSS<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":16349,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[334,333],"tags":[376,335,336],"class_list":["post-16789","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-design-it","category-tendenza","tag-css-it","tag-design","tag-moderno","entry"],"acf":[],"_links":{"self":[{"href":"https:\/\/ladderwp.com\/it\/wp-json\/wp\/v2\/posts\/16789","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ladderwp.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ladderwp.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ladderwp.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ladderwp.com\/it\/wp-json\/wp\/v2\/comments?post=16789"}],"version-history":[{"count":0,"href":"https:\/\/ladderwp.com\/it\/wp-json\/wp\/v2\/posts\/16789\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ladderwp.com\/it\/wp-json\/wp\/v2\/media\/16349"}],"wp:attachment":[{"href":"https:\/\/ladderwp.com\/it\/wp-json\/wp\/v2\/media?parent=16789"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ladderwp.com\/it\/wp-json\/wp\/v2\/categories?post=16789"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ladderwp.com\/it\/wp-json\/wp\/v2\/tags?post=16789"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}