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

Tutoriales básicos de Bootstrap

Plugins de Bootstrap

Normativa de codificación CSS de Bootstrap

Gramática

  • Reemplace los tabuladores (tab) con dos espacios. -- Esta es la única manera de garantizar una presentación consistente en todos los entornos.
  • Al agrupar selectores, coloque los selectores individuales en una línea separada.
  • Para mejorar la legibilidad del código, añada un espacio en blanco antes del carácter de apertura de llave de cada bloque de declaración.
  • El carácter de cierre de llave de un bloque de declaración debe estar en una línea separada.
  • Cada declaración debe estar en una línea separada. : debe insertarse un espacio.
  • Para obtener informes de errores más precisos, cada declaración debe ocupar una línea.
  • todas las declaraciones deben terminar con un punto y coma. El punto y coma después de la última declaración es opcional, pero si se omite, tu código puede estar más susceptible a errores.
  • Para valores de atributo separados por comas, debe insertarse un espacio después de cada coma (por ejemplo,box-sombra).
  • no en rgb(),rgba(),hsl(),hsla() o rect() del valorinternoinserta un espacio en la coma después de la coma para separar múltiples valores de atributo (con comas y espacios) de múltiples valores de color (solo comas, sin espacios).
  • para valores de atributo o parámetros de color, omite la coma después de < 1 delante del decimal 0 (por ejemplo,.5 en lugar de 0.5;-.5px en lugar de -0.5px).
  • Los valores de hexadecimal deben ser todos minúsculas, por ejemplo,#fffen el proceso de escaneo del documento, las letras minúsculas son fáciles de distinguir porque su forma es más fácil de distinguir.
  • Usa valores de hexadecimal abreviados siempre que sea posible, por ejemplo, usa #fff en lugar de #ffffff.
  • Añade comillas dobles a los atributos del selector, por ejemplo,input[type="text"].solo es opcional en ciertos casospero, para la consistencia del código, se recomienda que todos incluyan comillas dobles.
  • Evita especificar unidades para valores de 0, por ejemplo, usa margen: 0; en lugar de margen: 0px;.

¿Tienes alguna duda sobre los términos utilizados aquí? Consulta Wikipedia. Hoja de estilo en cascada - Gramática.

/* CSS malo */
.selector, .selector-secundario, .selector[type=text] {
  padding:15px;
  margen:0px 0px 15px;
  fondo-color:rgba(0, 0, 0, 0.5);
  box-sombra:0px 1px 2px #CCC,inset 0 1px 0 #FFFFFF
}
/* Buen CSS */
.selector,
.selector-secundario,
.selector[type="text"] {
  padding: 15px;
  margen-abajo: 15px;
  fondo-color: rgba(0,0,0,.5);
  box-shadow: 0 1px 2px #ccc, inset 0 1px 0 #fff;
}

Orden de declaración

Las declaraciones relacionadas deben agruparse en un grupo y colocarse en el siguiente orden:

  • Posicionamiento
  • Modelo de caja
  • Tipográfico
  • Visual
  • Debido a que la ubicación (ubicación) puede quitar elementos del flujo de documento normal y aún puede cubrir las estilos relacionados con el modelo de caja (modelo de caja), se coloca en primer lugar. El modelo de caja se coloca en segundo lugar, porque determina el tamaño y la ubicación del componente.

    otras propiedades solo afectan a los componentesinternoo que no afecta a los primeros dos grupos de propiedades, por lo que se colocan al final.

    La lista completa de propiedades y su orden se puede consultar Recesión.

    .declaración-orden {
      /* Posicionamiento */
      posición: absoluta;
      arriba: 0;
      derecha: 0;
      abajo: 0;
      izquierda: 0;
      z-índice: 100;
      /* Caja-modelo */
      mostrar: bloque;
      flotar: derecha;
      width: 100px;
      height: 100px;
      /* Tipografía */
      fuente: normal 13px "Helvetica Neue", sans-serif;
      línea-height: 1.5;
      color: #333;
      texto-alineación: centro;
      /* Visual */
      fondo-color: #f5f5f5;
      border: 1px sólido #e5e5e5;
      borde-radio: 3px;
      /* Misc */
      opacity: 1;
    }
    

    No usar @import

    con <link> etiquetas en comparación con@import Las instrucciones son mucho más lentas, no solo aumentan el número de solicitudes adicionales, sino que también pueden causar problemas imprevistos. Las alternativas incluyen lo siguiente:

    • Usar múltiples <link> Elemento
    • A través de preprocesadores CSS como Sass o Less, compilar múltiples archivos CSS en uno solo
    • A través de la función de combinación de archivos CSS proporcionada por sistemas como Rails, Jekyll u otros.

    Consulte Artículo de Steve SoudersPara obtener más información.

    <!-- Usar elementos link -->
    <link rel="stylesheet" href="core.css">
    <!-- Evitar @imports -->
    <style>
      @import url("more.css");
    </style>
    

    Ubicación de la consulta de medios (Media query)

    Colocar las consultas de medios lo más cerca posible de las reglas relacionadas. No las empaqueten en un solo archivo de estilo o al final del documento. Si las separan, en el futuro solo serán olvidadas. A continuación, se muestra un ejemplo典型.

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

    Propiedades con prefijo

    Al usar propiedades con prefijo de fabricantes específicos, alinear verticalmente cada valor de propiedad mediante sangría, lo que facilita la edición en múltiples líneas.

    En Textmate, usar Texto → Editar Cada Línea de la Selección (⌃⌘A)。在 Sublime Text 2 中,使用 Selection → Add Previous Line (⌃⇧↑) 和 Selection → Add Next Line (⌃⇧↓)。

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

    单行规则声明

    对于只包含一条声明的样式,为了易读性和便于快速编辑,建议将语句放在同一行。对于带有多条声明的样式,还是应当将声明分为多行。

    这样做的关键因素是为了错误检测 -- 例如,CSS 校验器指出在 183 行有语法错误。如果是单行单条声明,你就不会忽略这个错误;如果是单行多条声明的话,你就要仔细分析避免漏掉错误了。

    /* Single declarations on one line */
    .span1 { width: 60px; }
    .span2 { width: 140px; }
    .span3 { width: 220px; }
    /* Multiple declarations, one per line */
    .sprite {
      display: inline-block;
      width: 16px;
      height: 15px;
      fondo-image: url(../img/sprite.png);
    }
    .icon           { background-position: 0 0; }
    .icon-home      { background-position: 0 -20px; }
    .icon-account   { background-position: 0 -40px; }
    

    简写形式的属性声明

    在需要显示地设置所有值的情况下,应当尽量限制使用简写形式的属性声明。常见的滥用简写属性声明的情况如下:

    • padding
    • margen
    • font
    • fondo
    • borde
    • borde-radius

    大部分情况下,我们不需要为简写形式的属性声明指定所有值。例如,HTML 的 heading 元素只需要设置上、下边距(margin)的值,因此,在必要的时候,只需覆盖这两个值就可以。过度使用简写形式的属性声明会导致代码混乱,并且会对属性值带来不必要的覆盖从而引起意外的副作用。

    MDN(Mozilla Developer Network)上一篇非常好的关于shorthand properties 的文章,对于不太熟悉简写属性声明及其行为的用户很有用。

    /* Malo ejemplo */
    .element {
      margin: 0 0 10px;
      background: red;
      fondo: url("image.jpg");
      borde-radio: 3px 3px 0 0;
    }
    /* Buen ejemplo */
    .element {
      margen-abajo: 10px;
      fondo-color: rojo;
      fondo-image: url("image.jpg");
      borde-arriba-izquierda-radio: 3px;
      borde-arriba-derecha-radio: 3px;
    }
    

    Anidamiento en Less y Sass

    evitar anidamientos innecesarios. Esto se debe a que, aunque puedes usar anidamientos, no significa que debas usarlos. Úsalos solo cuando necesites limitar los estilos al elemento padre (es decir, los selectores de descendiente) y existan varios elementos que necesiten anidarse.

    // Sin anidamiento
    .table > thead > tr > th { … }
    .table > thead > tr > td { … }
    // Con anidamiento
    .table > thead > tr {
      > th { … }
      > td { … }
    }
    

    comentarios

    el código es escrito y mantenido por personas. Asegúrate de que tu código sea autoexplicativo, bien comentado y fácil de entender para otros. Buenas anotaciones de código pueden transmitir la relación contextual y el propósito del código. No repitas simplemente nombres de componentes o class.

    para comentarios más largos, asegúrate de escribir frases completas; para anotaciones generales, puedes escribir frases breves.

    /* Malo ejemplo */
    /* cabecera del modal */
    .modal-header {
      ...
    }
    /* Buen ejemplo */
    /* elemento envolvente para .modal-título y .modal-cerrar */
    .modal-header {
      ...
    }
    

    nombres de class

    • sólo pueden aparecer caracteres en minúscula y guiones (dashe) en los nombres de class (no subrayados, ni en estilo de camelCase). Los guiones deben usarse en nombres de class relacionados (similares a un espacio de nombres) (por ejemplo,.btn y .btn-danger).
    • evitar abreviaturas demasiado arbitrarias..btn representa buttonpero .s no puede expresar ningún significado.
    • los nombres de class deben ser lo más cortos posible y claros.
    • usar nombres significativos. Utilizar nombres organizados o con un propósito claro, no nombres que representen la forma (presentational).
    • usar la class del padre más cercano o la class base (base) como prefijo para la nueva class.
    • usar .js-* class para identificar comportamientos (en contraste con los estilos) y no incluir estas class en archivos CSS.

    También puedes seguir las normas enumeradas anteriormente al nombrar variables de Sass y Less.

    /* Malo ejemplo */
    .t { ... }
    .red { ... }
    .header { ... }
    /* Buen ejemplo */
    .tweet { ... }
    .important { ... }
    .tweet-header { ... }
    

    Selector

    • Usa class para elementos genéricos, lo que facilita la optimización del rendimiento de renderizado.
    • Evita el uso de selectores de atributo para componentes que aparecen con frecuencia (por ejemplo,[class^="..."]). El rendimiento del navegador se verá afectado por estos factores.
    • Los selectores deben ser lo más cortos posible y limitar la cantidad de elementos que componen el selector, se recomienda no superar 3 .
    • SóloLimita las clases solo en el elemento padre más cercano cuando sea necesario (es decir, selectores de descendencia), por ejemplo, no utilices clases con prefijo cuando no sea necesario. -- Los prefijos son similares a los espacios de nombres).

    Leer más:

    /* Malo ejemplo */
    span { ... }
    .page-container #stream .stream-item .tweet .tweet-header .username { ... }
    .avatar { ... }
    /* Buen ejemplo */
    .avatar { ... }
    .tweet-header .username { ... }
    .tweet .avatar { ... }
    

    Organización del código

    • Organiza los segmentos de código en función del componente.
    • Establece una norma de comentarios consistentes.
    • Usa espacios en blanco consistentes para separar el código en bloques, lo que facilita la exploración de documentos más grandes.
    • Si se utilizan varios archivos CSS, descompóselos en función del componente y no del página, ya que la página se reorganizará, mientras que el componente solo se moverá.
    /*
     * Encabezado de sección del componente
     */
    .element { ... }
    /*
     * Encabezado de sección del componente
     *
     * A veces es necesario incluir contexto opcional para todo el componente. Hazlo aquí si es lo suficientemente importante.
     */
    .element { ... }
    /* sub contextual-componente o modificador */
    .element-heading { ... }
    

    Configuración del editor

    Configura tu editor según la siguiente configuración para evitar la incoherencia y las diferencias comunes en el código:

    • Se utilizan dos espacios en blanco en lugar del tabulador (soft tab).-tab se representa con un espacio en blanco).
    • Elimine los caracteres en blanco al final del archivo al guardar
    • Configurar la codificación del archivo como UTF-8.
    • Añada una línea en blanco al final del archivo.

    refiérase al documento y agregue esta información de configuración al .editorconfig en el archivo. Por ejemplo:ejemplos de .editorconfig en Bootstrap. Para más información, consulte acerca de EditorConfig.