Правила оформления HTML/CSS кода

Всё о HTML, XHTML, XML, CSS.

Все про HTML, XHTML, XML, CSS.
Ответить
Аватара пользователя
alexbel
Друг Zzz
Сообщения: 137
Зарегистрирован: Пт мар 11, 2016 5:58 am
Откуда: Беларусь
Пол: Мужчина
Агент пользователя: Firefox Windows 1920x1080
Контактная информация:

Правила оформления HTML/CSS кода

Сообщение alexbel »

Это тема будет полезна как новичкам так и уже уверенно шагающим WEB-программистам. Тут описаны правила для оформления и форматирования HTML и CSS кода. Цель — повысить качество кода и облегчить совместную работу и поддержку инфраструктуры.

Это относится к рабочим версиям файлов использующих HTML, CSS и GSS

Общие правила оформления

Протокол

Не указывайте протокол при включении ресурсов на страницу.
Опускайте название протокола (http:, https:) в ссылках на картинки или другие медиа-ресурсы, файлы стилей или скрипты, конечно, если эти файлы доступны по обоим протоколам.
Отсутствие протокола делает ссылку относительной, что предотвращает смешивание ресурсов из разных протоколов и незначительно уменьшает размер файлов.

Не рекомендуется:

Код: Выделить всё

<script src="http://www.google.com/js/gweb/analytics/autotrack.js"></script>
Рекомендуется:

Код: Выделить всё

<script src="//www.google.com/js/gweb/analytics/autotrack.js"></script>
Не рекомендуется:

Код: Выделить всё

  .example {
    background: url(http://www.google.com/images/example);
  }
Рекомендуется:

Код: Выделить всё

  .example {
    background: url(//www.google.com/images/example);
  }
Общее форматирование

Отступы

Всегда используйте для отступа два пробела.
Не используйте табуляцию и не смешивайте табуляцию с пробелами.

Рекомендуется:

Код: Выделить всё

  <ul>
    <li>Пять
    <li>Погулять
  </ul>
Рекомендуется:

Код: Выделить всё

  .example {
    color: blue;
  }
Регистр

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

Не рекомендуется:

Код: Выделить всё

  <A HREF="/">Домой</A>
Рекомендуется:

Код: Выделить всё

  <img src="google.png" alt="Google">
Пробелы в конце строки

Убирайте пробелы в конце строки.
Пробелы в конце строк не обязательны и усложняют использование diff.

Не рекомендуется:

Код: Выделить всё

  <p>Что?_
Рекомендуется:

Код: Выделить всё

  <p>Вот так.
Общие мета правила

Кодировка

Используйте UTF-8 (без BOM).
Убедитесь, что ваш редактор использует кодировку UTF-8 без метки порядка байтов (BOM). Указывайте кодировку в HTML шаблонах и документах с помощью <meta charset="utf-8">. Опускайте кодировку для сss-файлов: для них UTF-8 задана по умолчанию.

Комментарии

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

Задачи

Отмечайте задачи для списка дел с помощью TODO.
Отмечайте задачи с помощью ключевого слова TODO. не используйте другие часто встречающиеся форматы, такие как @@. Заключайте контакты (имя пользователя или список адресатов) в круглые скобки: TODO(контакт). Описывайте задачу после двоеточия, например: TODO: Задача.

Рекомендуется:

Код: Выделить всё

  {# TODO(Ivan Ivanov): Разобраться с центровкой #}
  <center>Тест</center>
Рекомендуется:

Код: Выделить всё

  <!-- TODO: Убрать необязательные теги -->
  <ul>
    <li>Огурцы</li>
    <li>Помидоры</li>
  </ul>
Правила оформления HTML

Тип документа

Используйте HTML5.
HTML5 (HTML синтаксис) рекомендуется для всех html-документов: <!DOCTYPE html>. (Рекомендуется использовать HTML с типом контента text/html. Не используйте XHTML, так как application/xhtml+xml (англ.), хуже поддерживается браузерами и ограничивает возможность оптимизации. )

Валидность HTML

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

Не рекомендуется:

Код: Выделить всё

  <title>Проверка</title>
  <article>Просто проверка
Рекомендуется:

Код: Выделить всё

  <!DOCTYPE html>
  <meta charset="utf-8">
  <title>Проверка</title>
  <article>Просто проверка.</article>
Семантика

Используйте HTML так, как это было задумано.
Используйте элементы (Иногда неверно называемые “тегами”) по назначению: заголовки для заголовков, p для абзацев, a для ссылок и т.д. Это облегчает чтение, редактирование и поддержку кода.

Не рекомендуется:

Код: Выделить всё

  <div onclick="goToRecommendations();">All recommendations</div>
Рекомендуется:

Код: Выделить всё

  <a href="recommendations/">All recommendations</a>
Альтернатива для мультимедиа

Всегда указывайте альтернативное содержимое для мультимедиа.
Постарайтесь указать альтернативное содержимое для мультимедиа: например для картинок, видео или анимаций, заданных с помощью canvas. Для картинок это осмысленный альтернативный текст (alt), а для видео и аудио расшифровки текста и подписи если это возможно. Альтернативное содержимое может помочь людям с с ограниченными возможностями. Например человеку со слабым зрением сложно понять, что на картинке если для нее не задан @alt. Другим людям может быть тяжело понять о чем говорится в видео или аудио записи. (Если для картинки alt избыточен, или она используется только в декоративных целях в местах, где нельзя использовать CSS, используйте пустой альтернативный текст alt="")

Не рекомендуется:

Код: Выделить всё

    <img src="spreadsheet.png">
Рекомендуется:

Код: Выделить всё

    <img src="spreadsheet.png" alt="Spreadsheet screenshot.">
Разделение ответственности

Разделяйте структуру, оформление и поведение.
Держите структуру (разметка), оформление (стили) и поведение (скрипты) раздельно и постарайтесь свести взаимодействие между ними к минимуму. Убедитесь, что документы и шаблоны содержат только HTML, и что HTML служит только для задания структуры документа. Весь код, отвечающий за оформление, перенесите в файлы стилей, а код отвечающий за поведение — в скрипты. Старайтесь сократить их пересечения к минимуму, включая в шаблоны минимальное количество файлов стилей и скриптов. Отделение структуры от представления и поведения помогает облегчить поддержку кода. Изменение шаблонов и HTML-документов всегда занимает больше времени чем изменение файлов стилей или скриптов.

Не рекомендуется:

Код: Выделить всё

  <!DOCTYPE html>
  <title>HTML sucks</title>
  <link rel="stylesheet" href="base.css" media="screen">
  <link rel="stylesheet" href="grid.css" media="screen">
  <link rel="stylesheet" href="print.css" media="print">
  <h1 style="font-size: 1em;">HTML Отстой</h1>
  <p>Я об этом и раньше где-то читал, но теперь точно все ясно:
    <u>HTML - полная фигня!!1</u>
  <center>Не могу поверить, что для того чтобы изменить оформление,
  нужно каждый раз все переделывать заново. </center>
Рекомендуется:

Код: Выделить всё

  <!DOCTYPE html>
  <title>My first CSS-only redesign</title>
  <link rel="stylesheet" href="default.css">
  <h1>Мой новый CSS дизайн</h1>
  <p>Я читал об этом и раньше, но наконец-то сделал сам:
    Использую принцип разделения ответственности и не пихаю оформление в HTML
  <p>Как круто!
Ссылки-мнемоники

Не используйте ссылки-мнемоники.
Нет смысла использовать ссылки-мнемоники, такие как &mdash;, &rdquo;, или &#x263a;, когда все команды в файлах, редакторах используют одну кодировку (UTF-8). Единственное исключение из этого правила — служебные символы HTML (например < и &) а так же вспомогательные и “невидимые” символы (например неразрывный пробел).

Не рекомендуется:

Код: Выделить всё

  Валютный знак евро: &ldquo;&eur;&rdquo;.
Рекомендуется:

Код: Выделить всё

  Валютный знак евро: “€”.
Необязательные теги

Не используйте необязательные теги. (не обязательно)
Для уменьшения размера файлов и лучшей читаемости кода можно опускать необязательные теги. В спецификации HTML5 (англ.) есть список необязательных тегов. (Может потребоваться некоторое время для того, чтобы этот подход начал использоваться повсеместно, потому что это сильно отличается от того, чему обычно учат веб-разработчиков. С точки зрения, согласованности, и простоты кода лучше всего опускать все необязательные теги, а не некоторые из них).

Не рекомендуется:

Код: Выделить всё

  <!DOCTYPE html>
  <html>
    <head>
      <title>Тратим байты - тратим деньги.</title>
    </head>
    <body>
      <p>Вот.</p>
    </body>
  </html>
Рекомендуется:

Код: Выделить всё

  <!DOCTYPE html>
  <title>Байты-деньги!</title>
  <p>Так-то
Атрибут 'type'

Не указывайте атрибут type при подключении стилей и скриптов в документ.
Не используйте атрибут type при подключении стилей (кроме вариантов когда используется что-то кроме CSS) и скриптов (кроме вариантов когда это не JavaScript). Указывать атрибут type в данном случае не обязательно потому что HTML5 использует text/css (англ.) и text/javascript (англ.) по умолчанию. Это будет работать даже в старых браузерах.

Не рекомендуется:

Код: Выделить всё

  <link rel="stylesheet" href="//www.google.com/css/maia.css"
  type="text/css">
Рекомендуется:

Код: Выделить всё

  <link rel="stylesheet" href="//www.google.com/css/maia.css">
Не рекомендуется:

Код: Выделить всё

  <script src="//www.google.com/js/gweb/analytics/autotrack.js"
  type="text/javascript"></script>
Рекомендуется:

Код: Выделить всё

  <script src="//www.google.com/js/gweb/analytics/autotrack.js"></script>
Правила форматирования HTML

Форматирование

Выделяйте новую строку для каждого блочного, табличного или списочного элемента и ставьте отступы для каждого дочернего элемента.
Независимо от стилей заданных для элемента (CSS позволяет изменить поведение элемента с помощью свойства display), переносите каждый блочный или табличный элемент на новую строку. Также ставьте отступы для всех элементов вложенных в блочный или табличный элемент. (Если у вас возникнут сложности из-за пробельных символов между списочными элементами, допускается поместить все li элементы в одну строку. Линту [прим. утилита для проверки качества кода] рекомендуется в данном случае выдавать предупреждение вместо ошибки.

Рекомендуется:

Код: Выделить всё

  <blockquote>
    <p><em>Space</em>, the final frontier.</p>
  </blockquote>
Рекомендуется:

Код: Выделить всё

  <ul>
    <li>Маша
    <li>Глаша
    <li>Чебураша
  </ul>
Рекомендуется:

Код: Выделить всё

  <table>
    <thead>
      <tr>
        <th scope="col">Прибыль
        <th scope="col">Налоги
    <tbody>
      <tr>
        <td>$ 5.00
        <td>$ 4.50
  </table>
Правила оформления CSS

Валидность CSS

По возможности используйте валидный CSS-код.
Кроме случаев, где необходим браузеро-зависимый код, или ошибок валидатора, используйте валидный CSS код. Используйте такие инструменты как W3C CSS Валидатор (англ.) для проверки своего кода. Валидность — это важное и при этом измеряемое качество кода. Написание валидного CSS помогает избавиться от избыточного кода и обеспечивает правильное использование таблиц стилей…

Идентификаторы и названия классов

Используйте шаблонные или имеющие смысл имена классов и идентификаторы.
Вместо использования шифров, или описания внешнего вида элемента, попробуйте в имени класса или идентификатора выразить смысл его создания, или дайте ему шаблонное имя… Рекомендуется выбирать имена, отражающие сущность класса, потому что их проще понять и, скорее всего, не понадобится менять в будущем. Шаблонные имена — это просто вариант названия для элементов, у которых нет специального предназначения или которые не отличаются от своих братьев и сестер. Обычно они необходимы в качестве “Помощников.” Использование функциональных или шаблонных имен уменьшает необходимость ненужных изменений в документа или шаблонах.

Не рекомендуется:

Код: Выделить всё

  /* Не рекомендуется: не имеет смысла */
  #yee-1901 {}
  
  /* Не рекомендуется: описание внешнего вида */
  .button-green {}
  .clear {}
Рекомендуется:

Код: Выделить всё

  /* Рекомендуется: точно и по делу */
  #gallery {}
  #login {}
  .video {}
  
  /* Рекомендуется: шаблонное имя */
  .aux {}
  .alt {}
Названия идентификаторов и классов

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

Не рекомендуется:

Код: Выделить всё

  /* Не рекомендуется */
  #navigation {}
  .atr {}
Рекомендуется:

Код: Выделить всё

  /* Рекомендуется */
  #nav {}
  .author {}
Селекторы типа

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

Не рекомендуется:

Код: Выделить всё

  /* Не рекомендуется */
  ul#example {}
  div.error {}
Рекомендуется:

Код: Выделить всё

  /* Рекомендуется */
  #example {}
  .error {}
Сокращенные формы записи свойств

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

Не рекомендуется:

Код: Выделить всё

  /* Не рекомендуется */
  border-top-style: none;
  font-family: palatino, georgia, serif;
  font-size: 100%;
  line-height: 1.6;
  padding-bottom: 2em;
  padding-left: 1em;
  padding-right: 1em;
  padding-top: 0;
Рекомендуется:

Код: Выделить всё

  /* Рекомендуется */
  border-top: 0;
  font: 100%/1.6 palatino, georgia, serif;
  padding: 0 1em 2em;
0 и единицы измерения

Не указывайте единицы измерения для нулевых значений
Не указывайте единицы измерения для нулевых значений если на это нет причины.

Рекомендуется:

Код: Выделить всё

  margin: 0;
  padding: 0;
0 в целой части дроби

Не ставьте “0” в целой части дробных чисел.
Не ставьте 0 в целой части в значениях между -1 и 1.

Рекомендуется:

Код: Выделить всё

  font-size: .8em;
Кавычки в ссылках

Не используйте кавычки в ссылках
Не используйте кавычки ("", '') с url().

Рекомендуется:

Код: Выделить всё

  @import url(//www.google.com/css/go.css);
Шестнадцатеричные названия цветов

Используйте трехсимвольную шестнадцатеричную запись где это возможно.
Трехсимвольная шестнадцатиричная запись для цветов короче и занимает меньше места.

Не рекомендуется:

Код: Выделить всё

  /* Не рекомендуется */
  color: #eebbcc;
Рекомендуется:

Код: Выделить всё

  /* Рекомендуется */
  color: #ebc;
Префиксы

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

Рекомендуется:

Код: Выделить всё

  .adw-help {} /* AdWords */
  #maia-note {} /* Maia */
Разделители в классах и идентификаторах

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

Не рекомендуется:

Код: Выделить всё

  /* Не рекомендуется: слова “demo” и “image” не разделены */
  .demoimage {}
  
  /* Не рекомендуется: используется подчеркивание вместо дефиса */
  .error_status {}
Рекомендуется:

Код: Выделить всё

  /* Рекомендуется */
  #video-id {}
  .ads-sample {}
Хаки

Избегайте использования информации о версии браузеров, или CSS “хаков”— сперва попробуйте другие способы.
Кажется заманчивым бороться с различиями в работе разных браузеров с помощью CSS-фильтров, хаков или прочих обходных путей. Все эти подходы могут быть рассмотрены лишь в качестве последнего средства, если вы хотите получить эффективную и легко поддерживаемую кодовую базу. Проще говоря, допущение хаков и определения браузера повредит проекту в долгосрочной перспективе, так как это означает, что проект идет по пути наименьшего сопротивления. Что облегчает использование хаков и позволяет использовать их все чаще и чаще, что в результате приведет к слишком частому их использованию.

Правила форматирования CSS

Упорядочивание объявлений

Сортируйте объявления по алфавиту.
Задавайте объявления в алфавитном порядке, чтобы получить согласованный код, с которым легко работать. При сортировке игнорируйте браузерные префиксы. При этом, если для одного свойства используются несколько браузерных префиксов, они также должны быть отсортированы (например -moz должен быть перед --webkit)

Рекомендуется:

Код: Выделить всё

  background: fuchsia;
  border: 1px solid;
  -moz-border-radius: 4px;
  -webkit-border-radius: 4px;
  border-radius: 4px;
  color: black;
  text-align: center;
  text-indent: 2em;
Отступы в блоках.

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

Рекомендуется:

Код: Выделить всё

  @media screen, projection {
  
    html {
      background: #fff;
      color: #444;
    }
  
  }
После объявлений

Ставьте точку с запятой после каждого объявления.
После каждого объявления ставьте точку с запятой для согласованности кода и облегчения добавления новых свойств.

Не рекомендуется:

Код: Выделить всё

  .test {
    display: block;
    height: 100px
  }
Рекомендуется:

Код: Выделить всё

  .test {
    display: block;
    height: 100px;
  }
После названий свойств

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

Не рекомендуется:

Код: Выделить всё

  h3 {
    font-weight:bold;
  }
Рекомендуется:

Код: Выделить всё

  h3 {
    font-weight: bold;
  }
Отделение селектора и объявления

Отделяйте селекторы и объявления переносом строки.
Начинайте каждый селектор или объявление с новой строки.

Не рекомендуется:

Код: Выделить всё

  a:focus, a:active {
    position: relative; top: 1px;
  }
Рекомендуется:

Код: Выделить всё

  h1,
  h2,
  h3 {
    font-weight: normal;
    line-height: 1.2;
  }
Разделение правил

Разделяйте правила переносом строки.
Всегда ставьте перенос строки между правилами.

Рекомендуется:

Код: Выделить всё

  html {
    background: #fff;
  }
  
  body {
    margin: auto;
    width: 50%;
  }
Мета правила CSS

Группировка правил

Группируйте правила и обозначайте группы комментарием. (не обязательно)
По возможности объединяйте правила в группы. Обозначайте группы комментариями и разделяйте переносом строки.

Рекомендуется:

Код: Выделить всё

  /* Header */
  
  #adw-header {}
  
  /* Footer */
  
  #adw-footer {}
  
  /* Gallery */
  
  .adw-gallery {}
Заключение

Будьте последовательны.
Если вы редактируете код, потратьте несколько минут, чтобы разобраться в том, как он написан. Если математические операторы обособлены пробелами, делайте то же самое. Если комментарии окружены скобочками или черточками, сделайте то же со своими комментариями. Идея этой темы на форуме ZZZ в том, чтобы создать общий словарь, который позволил бы разработчикам сконцентрироваться на том что они хотят выразить, а не на том, как. Это единые правила оформления позволяющие писать код в одном стиле. Если ваш код будет сильно отличаться от существующего, это может сбить читающего с ритма и затруднить чтение. Постарайтесь этого избежать.

Спасибо всем кто дочитал до этого места.
_________________________
Изображение
Ответить

Вернуться в «HTML, CSS»