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

Bootstrap базовый учебник

Bootstrap плагины

Стандарты кодирования CSS Bootstrap

грамматика

  • Используйте два пробела вместо табулятора (tab) -- это единственный способ обеспечить единообразное отображение во всех средах.
  • При分组 селекторов ставьте отдельные селекторы на отдельные строки.
  • Для улучшения читаемости добавляйте пробел перед левой скобкой каждого блока объявления.
  • правая скобка блока объявления должна быть на отдельной строке.
  • каждое объявление : за
  • Чтобы получить более точные сообщения об ошибках, каждое объявление должно занимать отдельную строку.
  • Все объявления должны заканчиваться точкой с запятой. Последняя точка с запятой после последнего объявления является опциональной, но если вы пропустите её, ваш код может стать более уязвимым к ошибкам.
  • Для свойств, разделенных запятыми, после каждой запятой должна следовать пробел (например,box-shadow).
  • Не используйте rgb(),rgba(),hsl(),hsla() или rect() значениевнутреннийвставьте пробел после запятой. Это помогает отличить несколько значений цвета (только запятая, без пробела) от нескольких значений свойств (и запятая, и пробел).
  • Пропустите ноль перед десятичным значением, если оно меньше 1 (например,.5 вместо 0.5;-.5px вместо -0.5px).
  • Шестнадцатеричные значения должны быть написаны lowercase, например,#fff. В процессе сканирования документа малые буквы легко различить, так как их форма более легко различима.
  • Используйте сокращенные шестнадцатеричные значения, например, вместо #fff вместо #ffffff.
  • Добавляйте двойные кавычки для свойств в селекторе, например,input[type="text"].является обязательным только в некоторых случаяхно, чтобы обеспечить единообразие кода, рекомендуется добавлять двойные кавычки.
  • Избегайте указания единиц для значений 0, например, используйте margin: 0; вместо margin: 0px;.

У вас есть вопросы по использованию этих терминов? Пожалуйста, обратитесь к Wikipedia Слоеный стиль - грамматика.

/* 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
}
/* Good CSS */
.selector,
.selector-secondary,
.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;
}

Порядок объявления

Свойства, связанные с этим, должны быть объединены в одну группу и расположены в следующем порядке:

  • Positioning
  • Box model
  • Typographic
  • Visual
  • Из-за позиционирования (positioning) элементы могут быть удалены из обычного потока документа и даже могут перекрывать стили, связанные с盒овым моделью (box model), поэтому они расположены на первом месте.Box model расположен на втором месте, так как он определяет размер и положение компонента.

    Другие свойства влияют только на компонентвнутренние (inside)или они не влияют на первые два набора свойств, поэтому они расположены в конце.

    Полный список свойств и их порядок排列 можно найти в Recess.

    .declaration-order {
      /* Positioning */
      position: absolute;
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
      z-index: 100;
      /* Box-model */
      display: block;
      float: right;
      width: 100px;
      height: 100px;
      /* Typography */
      font: normal 13px "Helvetica Neue", sans-serif;
      line-height: 1.5;
      color: #333;
      text-align: center;
      /* Visual */
      background-color: #f5f5f5;
      border: 1px solid #e5e5e5;
      border-radius: 3px;
      /* Misc */
      opacity: 1;
    }
    

    не использовать @import

    с <link> теги по сравнению с@import Инструкции должны быть выполнены медленнее, что не только увеличит количество дополнительных запросов, но и может привести к непредсказуемым проблемам.Возможные решения включают следующие:

    • Использование нескольких <link> Элемент
    • Используйте CSS предобработчики, такие как Sass или Less, чтобы скомпилировать несколько файлов CSS в один файл.
    • Используйте функцию слияния CSS файлов, предоставляемую в системах Rails, Jekyll или других.

    См. также Статья Steve SoudersУзнайте больше.

    <!-- Используйте элементы link -->
    <link rel="stylesheet" href="core.css">
    <!-- Избегайте @imports -->
    <style>
      @import url("more.css");
    </style>
    

    Местоположение медиа-запросов (Media query)

    Разместите медиа-запросы как можно ближе к соответствующим правилам. Не собирайте их в один файл стиля или в нижней части документа. Если вы их разнесете, их просто забудут. Вот пример.

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

    Свойства с префиксом

    Когда вы используете свойства с префиксом от определенного производителя, через отступы выравниваете значения каждого свойства по вертикали, что упрощает редактирование на несколько строк.

    в Textmate используйте Text → Edit Each Line in Selection в Sublime Text 2 используйте Selection → Add Previous Line (⌃⇧↑) и Selection → Add Next Line (⌃⇧↓).

    /* Предварительные свойства */
    .selector {
      -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.15);
              box-shadow: 0 1px 2px rgba(0,0,0,.15);
    }
    

    Однострочные правила для declarations

    ДляТолько один пунктСтиль, для удобства чтения и быстрого редактирования, рекомендуется помещать предложения на одну строку. Для стилей с несколькими пунктами рекомендуется разделить их на несколько строк.

    Ключевым фактором для этой задачи является обнаружение ошибок - например, проверщик 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;
      background-image: url(../img/sprite.png);
    }
    .icon           { background-position: 0 0; }
    .icon-home      { background-position: 0 -20px; }
    .icon-account   { background-position: 0 -40px; }
    

    сокращенные формы свойств

    В тех случаях, когда необходимо явно указать все значения, следует по возможности ограничивать использование сокращенных форм свойств. Примеры распространенного滥用 сокращенных свойств:

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

    В большинстве случаев нам не нужно указывать все значения для сокращенных форм свойств. Например, элемент heading в HTML требует только установки значений верхнего и нижнего отступов (margin), поэтому при необходимости достаточно просто изменить эти два значения. Избыточное использование сокращенных форм свойств может привести к хаосу в коде и нежелательному перекрытию значений свойств, что может вызвать неожиданные побочные эффекты.

    MDN (Mozilla Developer Network) имеет очень хорошую статью осокращенные свойства Для пользователей, которые не очень знакомы с сокращенными свойствами и их поведением, это может быть полезно.

    /* Пример плохого использования */
    .element {
      margin: 0 0 10px;
      background: red;
      background: url("image.jpg");
      border-radius: 3px 3px 0 0;
    }
    /* Пример хорошего использования */
    .element {
      margin-bottom: 10px;
      background-color: red;
      background-image: url("image.jpg");
      border-top-left-radius: 3px;
      border-top-right-radius: 3px;
    }
    

    Наложение в Sass и Less

    Избегайте ненужного наложения. Это потому, что, хотя вы можете использовать наложение, это не означает, что вам следует использовать его. Используйте наложение только когда необходимо ограничить стиль в родительском элементе (т.е. наследование), и когда есть несколько элементов, которые необходимо наложить.

    // Без наложения
    .table > thead > tr > th { … }
    .table > thead > tr > td { … }
    // С наложением
    .table > thead > tr {
      > th { … }
      > td { … }
    }
    

    Комментарии

    Код пишется и поддерживается людьми. Убедитесь, что ваш код сам по себе описателен, хорошо комментирован и легко понимаем другими. Хорошие комментарии могут передавать контекст и цель кода. Не просто повторяйте имена компонентов или class.

    Для较长ких комментариев обязательно используйте полные предложения; для общих замечаний можно использовать краткие фразы.

    /* Пример плохого использования */
    /* Заголовок модального окна */
    .modal-header {
      ...
    }
    /* Пример хорошего использования */
    /* Обертка элемента для .modal-title и .modal-close */
    .modal-header {
      ...
    }
    

    Именование class

    • Имена class могут содержать только строчные буквы и дефисы (не подчеркивания, не заглавные буквы в начале каждого слова). Дефисы должны использоваться в именовании связанных class (аналогично пространствам имён) (например,.btn и .btn-danger).
    • Избегайте чрезмерно произвольных сокращений..btn представляет buttonно .s Не должны выражать никакого смысла.
    • Имена class должны быть как можно короче и иметь ясное значение.
    • Используйте значимые имена. Используйте организованные или целеустремленные имена, не используйте именования, отражающие только внешнее представление.
    • Используйте ближайший родительский class или базовый (base) class в качестве префикса для нового class.
    • Использование .js-* Используйте class для обозначения поведения (по отношению к стилю), и не включайте эти class в файл CSS.

    В命名 Sass и Less переменных также можно руководствоваться приведенными выше правилами.

    /* Пример плохого использования */
    .t { ... }
    .red { ... }
    .header { ... }
    /* Пример хорошего использования */
    .tweet { ... }
    .important { ... }
    .tweet-header { ... }
    

    Выборщики

    • Используйте class для общих элементов, так как это помогает оптимизировать производительность рендеринга.
    • Избегайте использования свойственных выборщиков для часто出现的 компонентов (например,[class^="..."])。Производительность браузера может быть afectada этими факторами.
    • Выборщики должны быть как можно короче и ограничивать количество элементов, участвующих в составлении выборщика, рекомендуется не более 3.
    • ТолькоОграничивайте классы только до ближайшего родительского элемента, когда это необходимо (то есть используйте descendant selectors), например, не используйте классы с префиксами (префиксы类似命名ному пространству).

    Дополнительное чтение:

    /* Пример плохого использования */
    span { ... }
    .page-container #stream .stream-item .tweet .tweet-header .username { ... }
    .avatar { ... }
    /* Пример хорошего использования */
    .avatar { ... }
    .tweet-header .username { ... }
    .tweet .avatar { ... }
    

    Организация кода

    • Организуйте фрагменты кода по компонентам.
    • Установитеconsistent стандарты для комментариев.
    • Используйтеconsistent пробельные символы для разделения кода на блоки, так как это помогает сканировать большие документы.
    • Если используется несколько файлов CSS, разбирайте их по компонентам, а не по страницам, так как страницы будут реорганизованы, а компоненты просто будут перемещены.
    /*
     * Заголовок раздела компонента
     */
    .element { ... }
    /*
     * Заголовок раздела компонента
     *
     * В некоторых случаях вам может потребоваться включить опциональный контекст для всего компонента. Сделайте это здесь, если это важно.
     */
    .element { ... }
    /* Контекстный подкомпонент или модификатор */
    .element-heading { ... }
    

    Конфигурация редактора

    Настройте ваш редактор по следующей конфигурации, чтобы избежать распространенных不一致ностей и различий в коде:

    • Используйте два пробела вместо табулятора (soft-tab, то есть используйте пробелы вместо табулятора).
    • Удаляйте пробельные символы в конце файла при сохранении.
    • Установите кодировку файла в UTF-8.
    • .В конце файла добавьте пустую строку.

    С参照ением документа добавьте эти конфигурационные данные в проект .editorconfig файле. Например:Пример .editorconfig в Bootstrap.Для получения дополнительной информации обратитесь к о редакторе Config.