Una collezione di dritte per aiutarti a migliorare le tue capacità con CSS.
Per altre fantastiche liste di questo tipo guarda la lista di fantastiche liste curata da [@sindresorhus](https://github.com/sindresorhus/).
box-sizing
      unset invece di Reimposta tutte le proprietà
      :not() per
          applicare/rimuovere-i-bordi-su-elementi-di-navigazione
      line-height al body
      :focus per gli elementi del modulo
      nth-child negativi
      max-height per slider fatti solo con CSS
      rem per le grandezze globali; usa
          em per le dimensioni locali
      :root per caratteri flessibili
      font-size sugli elementi dei form per una
          migliore esperienza da mobile
      display: none su Line Breaks usati come
          Spaziatura
      reset CSS aiutare a far rispettare lo stile coerenza tra diversi browser da zero per gli elementi stilistici. È possibile utilizzare libreria di reset CSS come Normalize, et al, oppure è possibile utilizzare un approccio più semplificato di ripristino.:
      Ora elementi saranno spogliati di margini e padding, e
      box-sizing consente di gestire i layout con il box model CSS.
    
      Nota: Se si segue la punta
      Eredita il box-sizing in
      basso si potrebbe optare di non includere la proprietà box-sizing nel
      ripristino CSS.
    
box-sizingEredita il box-sizing dall’elemento html:
      In questo modo diventa più facile cambiare box-sizing in
      plugin o altri componenti che ne sfruttano un altro.
    
unset invece di Reimposta tutte le proprietà
    Quando si ripristinano le proprietà di un elemento, non è necessario reimpostare ogni singola proprietà:
button {
  background: none;
  border: none;
  color: inherit;
  font: inherit;
  outline: none;
  padding: 0;
}
    
      Puoi specificare tutte le proprietà di un elemento usando la stenografia
      all. L’impostazione del valore su unset modifica
      le proprietà di un elemento ai valori iniziali:
    
      Nota: la stenografia all eunset
      non è supportata in IE11.
    
:not() per applicare/rimuovere i bordi su elementi di
      navigazione
    Invece di impostare il bordo…
…e poi rimuoverlo dall’ultimo elemento…
      …usa la pseudo classe :not() per applicarlo solo agli
      elementi che vuoi:
    
Il selettore CSS definisce il confine nel modo in cui un essere umano lo descrive.
Puoi verificare se un font è installato localmente prima di recuperarlo da remoto, il che è anche un buon suggerimento per le prestazioni.
@font-face {
  font-family: "Dank Mono";
  src:
    /* Full name */
    local("Dank Mono"),
    /* Postscript name */
    local("Dank Mono"),
    /* Otherwise, download it! */
    url("//...a.server/fonts/DankMono.woff");
}
code {
  font-family: "Dank Mono", system-ui-monospace;
}
    Punta del cappello ad Adam Argyle per aver condiviso questo prototipo e questa dimostrazione.
line-height al body
    
      Non è necessario aggiungere line-height a ogni
      <p>,<h *>, et al.
      separatamente. Invece, aggiungilo a body:
    
      In questo modo gli elementi di testo possono ereditare facilmente da
      body.
    
:focus per gli elementi del modulo
    Gli utenti con tastiera a vista si affidano alla messa a fuoco per determinare dove vanno gli eventi della tastiera nella pagina. Fai attenzione agli elementi del modulo che si distinguono e coerenti rispetto all’implementazione predefinita del browser:
a:focus,
button:focus,
input:focus,
select:focus,
textarea:focus {
  box-shadow: none;
  outline: #000 dotted 2px;
  outline-offset: .05em;
}
    No, non è magia nera. Puoi veramente centrare gli elementi verticalmente:
html,
body {
  height: 100%;
  margin: 0;
}
body {
  -webkit-align-items: center;
  -ms-flex-align: center;
  align-items: center;
  display: -webkit-flex;
  display: flex;
}
    …e anche con CSS Grid:
Vuoi centrare qualcos’altro? In verticale, in orizzontale… qualsiasi cosa, in qualsiasi momento ovunque? Su CSS-Tricks trovi un ottimo articolo a riguardo.
Nota bene: si verificano dei comportamenti anomali con flexbox e IE11.
Visualizza gli elementi di una lista come fossero una vera lista con le virgole:
      Usa la pseudo classe :not() in modo da non aggiungere la
      virgola all’ultimo elemento.
    
Nota bene: può non essere l’ideale per garantire l’accessibilità, nello specifico per gli screen reader. Inoltre il copia/incolla dal browser non funziona con il contenuto generato mediante CSS. Procedi con attenzione.
nth-child negativi
    
      Usa gli nth-child negativi di CSS per selezionare gli
      elementi da 1 a n.
    
li {
  display: none;
}
/* seleziona gli elementi da 1 a 3 e li mostra */
li:nth-child(-n+3) {
  display: block;
}
    
      Oppure, dato che hai già imparato un po’ di cose circa l’uso di :not(), prova:
    
/* selezionare tutti gli elementi tranne i primi 3 e visualizzarli */
li:not(:nth-child(-n+3)) {
  display: none;
}
    Beh… era abbastanza facile.
Non c’è ragione per non usare SVG per le icone:
SVG scala molto bene a tutti i tipi di risoluzione ed è supportata in tutti i browser fino a IE9. Perciò butta i tuoi file .png, .jpg o .gif-jif-qualsiasicosa.
Nota bene: se usi bottoni con esclusivamente grafica SVG e le icone SVG non vengono caricate, questo ti aiuterà a preservare l’accessibilità:
      Sebbene il suo nome sia un po’ strano, l’uso del selettore universale
      (*) insieme al selettore del fratello adiacente
      (+) può fornire una potenzialità CSS molto potente:
    
      In questo esempio, tutti gli elementi nel flusso del documento che seguono
      altri elementi riceveranno la proprietà margin-top: 1.5em.
    
Per saperne di più sul selettore detto “lobotomized owl”, leggi l’articolo di Heydon Pickering su A List Apart.
max-height per slider fatti solo con CSS
    
      Realizza slider fatti solo con CSS usando max-height con
      overflow hidden:
    
.slider {
  max-height: 200px;
  overflow-y: hidden;
  width: 300px;
}
.slider:hover {
  max-height: 600px;
  overflow-y: scroll;
}
    
      L’elemento si espande al valore max-height all’hover e lo
      slider diventa visibile come risultato dell’overflow.
    
      Lavorare con le tabelle può dare il tormento, perciò prova a usare
      table-layout: fixed per avere celle di larghezza uguale:
    
Layout con le tabelle e senza tormento.
      Quando lavori con gli spazi tra colonne puoi sbarazzarti di
      nth-, first- e last-child usando la
      proprietà space-between di flexbox:
    
Ora le colonne avranno sempre una spaziatura uniforme.
      Quando l’elemento <a> non ha testo al suo interno ma
      l’attributo href ha un link, lo mostra:
    
Decisamente comodo.
Aggiunge uno stile per i link “default”:
      Ora i link inseriti mediante un CMS, che solitamente non hanno un
      attributo class, saranno distinti senza intaccare tutti gli
      altri in cascata.
    
      Per creare un contenitore con proporzioni intrinseche tutto ciò che devi
      fare è applicare a un div del padding superiore o inferiore:
    
.container {
  height: 0;
  padding-bottom: 20%;
  position: relative;
}
.container div {
  border: 2px dashed #ddd;
  height: 100%;
  left: 0;
  position: absolute;
  top: 0;
  width: 100%;
}
    
      Uare un padding del 20% rende l’altezza del contenitore pari
      al 20% della sua larghezza. Non importa quale sia la larghezza della
      finestra, il div figlio manterrà le proporzioni stabilite (100% / 20% =
      5:1).
    
Rendi le immagini non scaricate più piacevoli esteticamente con un po’ di CSS:
img {
  display: block;
  font-family: sans-serif;
  font-weight: 300;
  height: auto;
  line-height: 2;
  position: relative;
  text-align: center;
  width: 100%;
}
    Ora aggiungi le regole per gli pseudo elementi al fine di mostrare un messaggio e un riferimento URL dell’immagine non scaricata:
img::before {
  content: "Siamo spiacenti, l'immagine non è stata scaricata. :(";
  display: block;
  margin-bottom: 10px;
}
img::after {
  content: "(url: " attr(src) ")";
  display: block;
  font-size: 12px;
}
    Ulteriori informazioni sullo styling secondo questo pattern nell’articolo di Ire Aderinokun.
rem per le grandezze globali; usa em per le
      dimensioni locali
    
      Dopo avere impostato la dimensione di base del font sull’elemento root
      (html { font-size: 100%; }), imposta la dimensione del font
      per gli elementi testuali con em:
    
Poi imposta il font-size per i moduli con rem:
A questo punto ogni modulo diventa compartimentalizzato, più facile da modellare, più manutenibile e più flessibile.
Questo è un fantastico trucchetto per un foglio di stile personalizzato per un utente. Evita di sovraccaricare un utente col suono di un video che parte in riproduzione automatica quando la pagina viene caricata. Se il suono non è disabilitato non mostrare il video:
      Ancora una volta stiamo sfruttando la pseudo classe
      :not().
    
:root per caratteri flessibili
    
      In un layout responsive la grandezza del carattere dovrebbe essere in
      grado di adattarsi a ogni risoluzione. Puoi calcolare la dimensione del
      font basandoti sull’altezza e sulla larghezza della finestra usando
      :root:
    
      Adesso puoi usare l’unità basata su root em sul valore
      calcolato da :root:
    
font-size sugli elementi dei form per una migliore
      esperienza da mobile
    
      Per evitare lo zoom sugli elementi dei form dai browser mobile (iOS
      Safari, et al.) quando si tocca una <select>,
      aggiungi font-size alle regole del selettore:
    
:dancer:
Eventi puntatore consentono di specificare come il mouse interagisce con l’elemento che sta toccando. Per disabilitare l’evento puntatore predefinito su un pulsante, ad esempio:
È così semplice.
display: none su Line Breaks usati come Spaziatura
    Come Harry Roberts ha sottolineato, questo può aiutare a impedire agli utenti CMS di utilizzare interruzioni di riga aggiuntive per la spaziatura:
Le attuali versioni di Chrome, Firefox, Safari, Opera, Edge ed IE11.