English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Bootstrap CSS编码规范

sintassi

  • Usa due spazi invece dei tab (tab) -- è l'unico modo per garantire una visualizzazione coerente in tutti gli ambienti.
  • Quando si raggruppano selettori, metti ogni selettore su una riga separata.
  • Per migliorare la leggibilità del codice, aggiungi uno spazio prima del parentesi aperto di ogni blocco di dichiarazioni.
  • Il parentesi di chiusura della dichiarazione deve essere su una riga separata.
  • cada dichiarazione deve avere : dopo di esso dovrebbe essere inserito uno spazio.
  • Per ottenere rapporti di errore più precisi, ogni dichiarazione dovrebbe essere su una riga separata.
  • Ogni dichiarazione deve finire con un punto e virgola. Il punto e virgola alla fine dell'ultima dichiarazione è opzionale, ma se lo ometti, il tuo codice potrebbe essere più soggetto ad errori.
  • Per i valori degli attributi separati da virgola, ogni virgola dovrebbe essere seguita da uno spazio (ad esempiobox-shadow).
  • Non usare rgb(),rgba(),hsl(),hsla() o rect() valoreinternoinserisci uno spazio dopo la virgola. Questo facilita la distinzione tra più valori di colore (solo virgola, senza spazio) da più valori di attributo (entrambi virgola e spazio).
  • Per i valori degli attributi o i parametri dei colori, ometti lo zero prima del numero decimale inferiore a 1 (ad esempio.5 invece di 0.5;-.5px invece di -0.5px).
  • I valori esadecimali dovrebbero essere tutti in minuscolo, ad esempio#fff. Nella scansione del documento, i caratteri minuscoli sono più facili da distinguere perché hanno una forma più distinta.
  • Usa preferibilmente la forma abbreviata dell'hexadecimale, ad esempio, usa #fff invece di #ffffff
  • Aggiungi virgolette doppie per gli attributi del selettore, ad esempioinput[type="text"]è opzionale in alcuni casima, per la coerenza del codice, è consigliabile aggiungerle sempre tra virgolette doppie.
  • Evita di specificare unità per valori 0, ad esempio, usa margin: 0; invece di margin: 0px;

Hai domande sui termini utilizzati? Consulta Wikipedia su Table di stili cascate - sintassi

/* Bad CSS */
.selector, .selector-secondary, .selector[type=text] {
  padding:15px;
  margin:0px 0px 15px;
  background-color:rgba(0, 0, 0, 0.5);
  box-shadow:0px 1px 2px #CCC,inset 0 1px 0 #FFFFFF
}
/* Buon CSS */
.selector,
.selector-secondaria,
.selector[type="text"] {
  padding: 15px;
  margin-bottom: 15px;
  background-color: rgba(0,0,0,.5);
  box-shadow: 0 1px 2px #ccc, inset 0 1px 0 #fff;
}

Ordine delle dichiarazioni

Le dichiarazioni correlate alle proprietà devono essere raggruppate e ordinate secondo l'ordine seguente:

  • Posizionamento
  • Modello di scatola
  • Tipografico
  • Visivo
  • Poiché la posizionamento può rimuovere un elemento dal flusso normale del documento e coprire anche lo stile del modello di scatola (box model), è elencato in primo luogo. Il modello di scatola è elencato al secondo posto, poiché determina le dimensioni e la posizione del componente.

    Altre proprietà influenzano solo il componenteInterno (interno)o non influenzano i primi due gruppi di proprietà, quindi sono elencati dopo.

    L'elenco completo delle proprietà e l'ordine di loro elenco possono essere consultati Ritiro

    .declaration-order {
      /* Posizionamento */
      position: absolute;
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
      z-index: 100;
      /* Modello di scatola */
      display: block;
      float: right;
      width: 100px;
      height: 100px;
      /* Tipografia */
      font: normal 13px "Helvetica Neue", sans-serif;
      line-height: 1.5;
      color: #333;
      text-align: center;
      /* Visivo */
      background-color: #f5f5f5;
      border: 1px solid #e5e5e5;
      border-radius: 3px;
      /* Varietà */
      opacity: 1;
    }
    

    non utilizzare @import

    con <link> in confronto con il tag@import Le istruzioni sono molto più lente, non solo aumentano il numero di richieste aggiuntive, ma possono anche causare problemi imprevisti. Le soluzioni alternative sono le seguenti:

    • Usare più <link> Elemento
    • Attraverso Sass o Less e simili pre-processori CSS per compilare più file CSS in un file singolo
    • Attraverso la funzione di fusione dei file CSS fornita da sistemi come Rails, Jekyll o altri

    Si prega di consultare Articolo di Steve SoudersPer saperne di più.

    <!-- Usa elementi link -->
    <link rel="stylesheet" href="core.css">
    <!-- Evita @imports -->
    <style>
      @import url("more.css");
    </style>
    

    Posizione della query di media (Media query)

    Metti le query di media il più vicino possibile alle regole correlate. Non metterle in un singolo file di stile o alla fine del documento. Se le separi, verranno dimenticate in futuro. Di seguito è riportato un esempio tipico.

    .element { ... }
    .element-avatar { ... }
    .element-selected { ... }
    @media (min-width: 480px) {
      .element { ...}
      .element-avatar { ... }
      .element-selected { ... }
    }
    

    Proprietà con prefisso

    Quando si utilizzano proprietà con prefisso di un produttore specifico, utilizzare il rientro per allineare i valori di ciascuna proprietà verticalmente, il che facilita la modifica multi-riga.

    In Textmate, utilizzare Text → Edit Each Line in Selection Selection → Modifica Ogni Riga della Selezione in Sublime Text 2, utilizzare Selection → Aggiungi Riga Precedente (⌃⇧↑) e Selection → Aggiungi Riga Successiva (⌃⇧↓)。

    /* Proprietà preficate */
    .selector {
      -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.15);
              box-shadow: 0 1px 2px rgba(0,0,0,.15);
    }
    

    Dichiarazione di regola su una singola riga

    PerContiene solo una dichiarazionePer facilità di lettura e di modifica rapida, si consiglia di posizionare le dichiarazioni sulla stessa riga. Per lo stile con più dichiarazioni, è ancora meglio dividere le dichiarazioni in più righe.

    Il fattore chiave per fare questo è il rilevamento degli errori - ad esempio, il validator CSS indica che ci sono errori di sintassi alla riga 183. Se si tratta di una dichiarazione singola su una singola riga, non si dovrebbe ignorare questo errore; se si tratta di più dichiarazioni su una singola riga, si deve analizzare attentamente per evitare di perdere errori.

    /* Dichiarazioni singole su una riga */
    .span1 { width: 60px; }
    .span2 { width: 140px; }
    .span3 { width: 220px; }
    /* Declarationi multiple, una per riga */
    .sprite {
      display: inline-block;
      width: 16px;
      height: 15px;
      background-image: url(../img/sprite.png);
    }
    .icon           { background-position: 0 0; }
    .icon-home      { background-position: 0 -20px; }
    .icon-account   { background-position: 0 -40px; }
    

    proprietà abbreviate

    In presenza della necessità di impostare esplicitamente tutti i valori, è consigliabile limitare l'uso delle proprietà abbreviate. Esempi comuni di abuso delle proprietà abbreviate sono i seguenti:

    • padding
    • margin
    • font
    • background
    • border
    • border-radius

    Nella maggior parte dei casi, non è necessario specificare tutti i valori per le proprietà abbreviate. Ad esempio, l'elemento heading di HTML necessita solo di impostare i margini superiori e inferiori (margin), quindi, quando necessario, è sufficiente sovrascrivere questi due valori. Un uso eccessivo delle proprietà abbreviate può portare a un codice disordinato e a sovrascritture indesiderate dei valori delle proprietà, causando effetti collaterali inaspettati.

    Un ottimo articolo su MDN (Mozilla Developer Network)proprietà abbreviate Per gli utenti che non sono familiarizzati con la notazione abbreviata delle proprietà e il loro comportamento, è molto utile.

    /* Esempio cattivo */
    .element {
      margin: 0 0 10px;
      background: red;
      background: url("image.jpg");
      border-radius: 3px 3px 0 0;
    }
    /* Esempio buono */
    .element {
      margin-bottom: 10px;
      background-color: red;
      background-image: url("image.jpg");
      border-top-left-radius: 3px;
      border-top-right-radius: 3px;
    }
    

    Annidamento in Sass e Less

    Evitare annidamenti non necessari. Questo perché, anche se puoi utilizzare annidamenti, non significa che debbano essere utilizzati. Utilizza l'annidamento solo quando è necessario limitare lo stile all'elemento padre (cioè il selettore discendente) e ci sono più elementi che devono essere annidati.

    // Senza annidamento
    .table > thead > tr > th { … }
    .table > thead > tr > td { … }
    // Con annidamento
    .table > thead > tr {
      > th { … }
      > td { … }
    }
    

    Commenti

    Il codice è scritto e mantenuto dagli esseri umani. Assicurati che il tuo codice sia auto-descrittivo, ben annotato e facile da comprendere per altri. Buone annotazioni di codice possono trasmettere il contesto e l'obiettivo del codice. Non ripetere semplicemente i nomi dei componenti o delle classi.

    Per le annotazioni più lunghe, scrivere sempre frasi complete; per annotazioni generali, è possibile scrivere frasi brevi.

    /* Esempio cattivo */
    /* Intestazione del modulo */
    .modal-header {
      ...
    }
    /* Esempio buono */
    /* Elemento avvolgente per .modal-title e .modal-close */
    .modal-header {
      ...
    }
    

    Nomina delle classi

    • Il nome della classe può contenere solo caratteri minuscoli e trattini (non trattini obliqui, né notazione camelCase). I trattini devono essere utilizzati nel nome delle classi correlate (simili a uno spazio dei nomi) (ad esempio,.btn E .btn-danger).
    • Evitare abbreviazioni troppo arbitrarie..btn Rappresenta buttonMa .s Non dovrebbe esprimere alcun significato.
    • Il nome della classe dovrebbe essere il più breve possibile e chiaro.
    • Utilizzare nomi significativi. Utilizzare nomi organizzati o chiaramente finalizzati, non nomi di rappresentazione (presentational).
    • Utilizzare come prefisso per la nuova classe il padre classico (base) o la classe più recente.
    • Utilizzare .js-* Utilizzare la classe per identificare il comportamento (in opposizione allo stile) e non includere queste classi nei file CSS.

    Nella nomina delle variabili di Sass e Less, è possibile fare riferimento anche alle norme elencate sopra.

    /* Esempio cattivo */
    .t { ... }
    .red { ... }
    .header { ... }
    /* Esempio buono */
    .tweet { ... }
    .important { ... }
    .tweet-header { ... }
    

    Selettori

    • Usa class per elementi comuni, il che facilita l'ottimizzazione delle prestazioni di rendering.
    • Evita l'uso di selettori attributo per componenti che si presentano spesso (ad esempio,[class^="..."])). Le prestazioni del browser possono essere influenzate da questi fattori.
    • I selettori devono essere il più corti possibile e limitare il numero di elementi che compongono il selettore, è consigliabile non superare i 3.
    • SoloLimita la classe solo all'elemento genitore più vicino quando necessario (cioè con selettori discendenti), ad esempio, non utilizzare classi con prefisso (i prefissi sono simili a uno spazio nome).

    Leggi anche:

    /* Esempio cattivo */
    span { ... }
    .page-container #stream .stream-item .tweet .tweet-header .username { ... }
    .avatar { ... }
    /* Esempio buono */
    .avatar { ... }
    .tweet-header .username { ... }
    .tweet .avatar { ... }
    

    Organizzazione del codice

    • Organizza i segmenti di codice per componenti.
    • Stabilisci una norma uniforme per i commenti.
    • Dividi il codice in块con spazi bianchi uniformi, il che facilita la scansione di documenti più grandi.
    • Se vengono utilizzati più file CSS, suddividili in base al componente piuttosto che alla pagina, poiché la pagina verrà riorganizzata, mentre il componente verrà solo spostato.
    /*
     * Intestazione sezione del componente
     */
    .element { ... }
    /*
     * Intestazione sezione del componente
     *
     * A volte è necessario includere un contesto opzionale per l'intero componente. Fallo qui sopra se è abbastanza importante.
     */
    .element { ... }
    /* Componente sub-contesto o modificatore */
    .element-heading { ... }
    

    Configurazione dell'editor

    Configura il tuo editor secondo le seguenti impostazioni per evitare discrepanze e differenze comuni nel codice:

    • Sostituisci i tabulatori con due spazi (soft-tab, ovvero usa gli spazi per rappresentare il tabulatore).
    • 保存文件時,刪除尾部的空白符。
    • 設置文件編碼為 UTF-8。
    • 在文件結尾添加一個空白行。

    參照文档並將這些配置信息添加到項目的 .editorconfig 文件中。例如:更多信息請參考 Bootstrap 中的 .editorconfig 示例about EditorConfig