Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Andrey Liapin</title>
- <link rel="stylesheet" href="index.css">
- </head>
- <body>
- <h1 class="main-header">Именование классов в CSS</h1>
- <h2 class="section-title">Назначайте классы как можно ниже по DOM-дереву</h2>
- <p>Это сказывается на названии классов. Всегда пишите название класса прямо в HTML-элементе, для которого нужно оформление, даже если на это приходится потратить дополнительные усилия. Если не ясно почему, почитайте нижеприведённую статью Криса Койера.</p>
- <h4>Пример:</h4>
- <pre class="code">
- <main class='mainly'>
- <p>Lorem ipsum</p> <!-- Я хотел бы застилизовать этот абзац -->
- </main>
- main.mainly p { /* Не делайте этого */
- }
- /* Вместо этого присвойте название класса p : <p class='paragraphly' /> */
- .paragraphly {
- }
- </pre>
- <span class="source">Источник:</span> <a href="http://vk.com">Крис Койер</a>
- <h2 class="section-title">Называйте классы по содержимому</h2>
- <h4>Пример:<h4>
- <pre>
- .c-header-logo {
- /* Просто прочитав это название, я догадался, что этот селектор указывает на лого в шапке. */
- }
- </pre>
- <span class="example">Источник:</span>
- <a href="phpied.com">phpied.com</a>
- <h2 class="section-title">Не называйте класс по содержимому, если картинка нагляднее</h2>
- <p>Скажем, лого шапки на самом деле выглядит так:</p>
- <img src="trapecia.png" alt="">
- <p>Тогда не называйте его header-logo.</p>
- <pre>
- .guillotine {
- /* О, сразу видно, что мы хотим стилизовать */
- }
- </pre>
- <h2 class="section-title">
- 4. Попробуйте суффикс <span class="thin-text">-like</span> для лучшей переносимости кода.
- </h2>
- <h4>Пример:</h4>
- <pre>
- h3, .h3-like {
- /* какое-то оформление */
- }
- <p class='h3-like'>
- <!-- Я НЕ заголовок h3, но поскольку дизайнер велел мне выглядеть так же,
- я не могу жаловаться на своё название класса -->
- </p>
- </pre>
- <span class="source">Источник:</span><a href="vk.com">KNACSS v4</a>
- <h4 class="section-title">5. Не используйте верблюжийРегистр</h4>
- <p>Это затрудняет чтение</p>
- <h4>Пример:</h4>
- <pre>
- .navToOneModuleICreated {
- font-size:2em;
- }
- /* против */
- .nav-to-one-module-i-created {
- font-size:2em;
- }
- </pre>
- <span class="source">Источник:</span>
- <a href="vk.com">Гарри Робертс</a>
- <h4 class="section-title">6. Пробуйте БЭМ</h4>
- <p>На сегодняшний день это одно из самых популярных соглашений.</p>
- <ul>
- <li>Поначалу он кажется странным, но не бойтесь.</li>
- <li>Порог вхождения очень низкий</li>
- <li>Можно использовать его уже сейчас в любой части проекта.</li>
- <li>Долгосрочные перспективы колоссальны</li>
- </ul>
- <p>(двойной дефис) означает вариант элемента.</p>
- <p>(двойное подчёркивание) означает дочерний элемент.</p>
- <span class="source">Пример:</span>
- <pre>
- <button class='btn btn--warning'> <!-- oдин из вариантов .btn — .btn--warning -->
- <div class='btn__text'></div> <!-- один из дочерних элементов .btn — .btn__text-->
- </button>
- .btn--warning {
- /* Ура! По соглашению я знаю, что код относится к варианту кнопки «warning», даже не заглядывая в HTML-код. Какое облегчение! */
- }
- .btn__text {
- /* По той же причине я знаю, что эти стили предназначаются для текста в кнопке */
- }
- </pre>
- <span class="source">Источник:</span>
- <a href="vk.com">Калиг, пятьдесят оттенков БЭМ</a>
- <<span class="source">Рекомендовано:</span>
- <a href="vk.com">Smashing Magazine, боремся с БЭМ</a>
- <h2 class="section-title">7. Пробуйте ещё страшнее</h2>
- <p>БЭМ открывает новые возможности, даже если поначалу их соглашения выглядят мерзко.</p>
- <p>Тем не менее, такая своеобразность помогает глазу моментально уловить суть происходящего, и в случае БЭМ, поверьте, это работает.</p>
- <p>Теперь можете пробовать более мерзкое соглашение, пока вы придерживаетесь его на всём проекте.</p>
- <h4>Пример:</h4>
- <pre>
- .DIMENSIONS_OF_mycomponent {
- /* Куда ещё противнее. Зато теперь понятнее, о чём речь. */
- /* Я использую его для классов-заготовок в SASS. */
- /* Но всё же не злоупотребляйте этим правилом. */
- }
- </pre>
- <h4 class="section-title">8. Не сокращайте описывающие слова</h4>
- <p>Помимо уже устоявшихся nav, txt, url… следует избегать любых аббревиатур.</p>
- <span class="source">Источник:</span>
- <a href="phpied.com">phpied.com</a>
- <h4 class="section-title">9. Пробуйте использовать только одну букву в качестве осмысленного префикса</h4>
- <p>В случае визуального компонента начинайте с c-, а в случае объекта (напр. макет) — с o-, мне просто нравится этот трюк Гарри Робертса.</p>
- <h4>Пример:</h4>
- <pre>
- <button class='o-layout'>
- <div class='o-layout-item o-grid c-button'></div>
- <!-- С первого взгляда на HTML видно, что за что отвечает.->
- </button>
- </pre>
- <span class="source">Источник:</span>
- <a href="vk.com">Гарри Робертс</a>
- <h2 class="section-title">10. Пробуйте [], когда слишком много классов одного типа</h2>
- <p>Этот небольшой трюк помогает быстрее изучить HTML. Заметьте, в CSS-файле нет классов .[ и .], они нужны только здесь, чтобы помочь другим читать HTML.</p>
- <h4>Пример:</h4>
- <pre>
- <button class='[ o-layout ]'>
- <div class='[ o-layout-item o-layout-item--first ] c-button'></div>
- <!-- С первого взгляда на HTML видно, что за что отвечает.-->
- </button>
- </pre>
- <span class="source">Источник:</span>
- <a href="vk.com">исходный код «Inuit Kitchen Sink»</a>
- <h2 class="section-title">11. Используйте префикс js-, если он используется только для JavaScript</h2>
- <p>Если Javascript требуется выбрать элемент, не полагайтесь на CSS-стили. Задайте специальный префикс вроде js-.</p>
- <h4>Пример:</h4>
- <pre>
- <button class='js-click-me'>
- <!-- При беглом просмотре HTML я понимаю, что у этой кнопки нет CSS-селектора для оформления.
- Но JavaScript использует её, видимо, чтобы поймать какое-то событие. -->
- </button>
- </pre>
- <span class="source">Источник:</span>
- <a href="vk.com">Дерик Бейли, книга по marionnette.js</a>
- <h3 class="section-title">12. Старайтесь отделить родительский элемент от дочернего</h3>
- <p>Если у класса слишком много обязанностей, разделите его на 2 отдельных свойства.</p>
- <h4>Пример:</h4>
- <p>(плохо)</p>
- <pre>
- <button class='a'>
- <!-- Этот класс ниже включает сочетание свойств,
- некоторые из которых участвуют в отношении a-b,
- а некоторые — в отношении b-c,
- CSS-файл будет трудно читать.-->
- <div class='child-of-a-and-parent-of-c'>
- <div class='c'>
- </div>
- </div>
- </button>
- </pre>
- <p>(хорошо)</p>
- <pre>
- <button class='a'>
- <!-- Разделите на 2 класса-->
- <div class='child-of-a parent-of-c'>
- <div class='c'>
- </div>
- </div>
- </button>
- </pre>
- <div class="section-title">13. Несемантические классы должны явно описывать свои свойства.</div>
- <p>Большинство из них содержат только одно свойство, и незачем его скрывать.</p>
- <pre>
- .horizontal-alignment { /* Не делайте этого. Выровнять по горизонтали можно разными способами, но при виде этого селектора в HTML-файле совершенно не ясно, КАК ИМЕННО это сделано. */
- text-align: center;
- }
- /* Предпочитайте этот способ. Смотрите выше про использование БЭМ и односимвольного префикса */
- .u-text-align--center {
- text-align: center;
- }
- </pre>
- <h2 class="section-title">14. Явные хаки (I)</h2>
- <p>Если вы не довольны вашем CSS-селектором, скажите это всем.</p>
- <p>Это произойдёт в любом случае, даже с лучшими CSSупергеро(ин)ями, поэтому не стыдитесь этого.</p>
- <p>Подберите в вашей команде слово, подходящее для таких случаев, и придерживайтесь его на протяжении всего проекта.</p>
- <p>Лично я использую слово «HACK», потому что IDE Atom его автоматически подсвечивает.</p>
- <h4>Пример:</h4>
- <pre>
- .my-component {
- margin-left: -7px; /* ХАК здесь: магическое число, нужное, чтобы компенсировать пробел */
- }
- </pre>
- <h2 class="section-title">15. Явные хаки (II)</h2>
- <p>Еще толковый вариант — собрать весь код со «странностями» в отдельный файл, shame.css</p>
- <p>Опять же, Гарри Робертс подсказал</p>
- <span class="source">Источник:</span>
- <a href="vk.com">Гарри Робертс</a>
- <h2 class="section-title">16. Старайтесь избегать более двух слов для одного имени</h2>
- <p>Название должно говорить само за себя, в одно-два слова, иначе код будет трудно поддерживать.</p>
- <h4>Пример:</h4>
- <pre>
- .button {
- /* Хорошо */
- }
- .dropdown-button {
- /* Всё ещё хорошо */
- }
- .dropdown-button-part-one {
- /* Хм, по-прежнему хорошо, но будет нечитаемым при добавлении дочернего элемента, например: */
- }
- .dropdown-button-part-one__button-admin {
- /* Ой, всё!!! */
- }
- </pre>
- <h2 class="section-title">17. Используйте атрибут data-state для указания состояния компонента</h2>
- <p>Манипуляция состоянием — далеко не редкость. Это происходит насколько часто, что специальный атрибут для состояния экономит время и силы в долгосрочной перспективе.</p>
- <h4>Пример:</h4>
- <pre>
- <button class='c-button c-button--warning is-active'>
- <!-- Не делайте этого -->
- </button>
- <button class='c-button c-button--warning' data-state='is-active'>
- <!-- Так-то лучше.
- Я удалил объявление класа,
- это гарантирует единственность состояния,
- и для тех, кто использует Sass, это сделает код чище.-->
- </button>
- </pre>
- <span class="source">Источник:</span>
- <a href="vk.com">к сожалению, не могу вспомнить, кто об этом писал, но его совет оказался весьма полезным.</a>
- <h2 class="section-title">18. Используйте префиксы has- или is- для состояния</h2>
- <p>Манипуляция состоянием происходит очень часто (ещё раз). Поэтому придерживаться строгого соглашения наименования для состояния будет очень полезно.</p>
- <h4>Пример:</h4>
- <pre>
- .activated {
- /* Не делайте этого. Я не совсем понимаю, о чём вы говорите? */
- }
- .is-activated {
- /* Да, вы оформляете состояние. */
- }
- </pre>
- <span class="source">Источник:</span>
- <a href="vk.com">оформление кода в Mobify</a>
- <h2 class="section-title">19. Используйте дефис в качестве префикса при сочетании нескольких состояний</h2>
- <p>Нужно избегать сочетания состояний любой ценой. А когда это невозможно, на помощь придёт очень полезный трюк Бена Смифета.</p>
- <h4>Пример:</h4>
- <pre>
- <button class="btn -color-red -size-large -shape-round"></button>
- </pre>
- <span class="source">Источник:</span>
- <a href="vk.com">Бен Смифет</a>
- <h2 class="section-title">20. При объявлении селектора в HTML придерживайтесь одиночных кавычек вместо двойных</h2>
- <p>Это упрощает чтение документа.</p>
- <h4>Пример:</h4>
- <pre>
- <button class="c-button">
- <!-- ПЛОХОЙ ПРИМЕР: в нём используются " вместо '. В этом крошечном примере это не играет особой роли, но когда дело касается сотни селекторов в HTML-файле, одиночные кавычки — лучшая идея. -->
- </button>
- <button class='c-button'>
- <!-- Хорошо!-->
- </button>
- </pre>
- <span class="source">Источник:</span>
- <a href="vk.com">я узнал это, когда работал с командой Predicsis</a>
- <h2 class="section-title">21. Не следуйте правилам</h2>
- <p>Я попытался дать некоторые рекомендации, основанные на личном опыте и статьях, которые оказались для меня наиболее полезными.</p>
- <p>Я не говорю, что всё это пригодится и в вашем случае, поэтому мой наилучший совет: </p>
- <ol>
- <li>Постарайтесь улучшать своё именование классов, </li>
- <li>соблюдайте его последовательно для данного проекта, </li>
- <li>но избегайте переусложнения.</li>
- </ol>
- <p>Если правило вам не подходит, просто пропустите его.</p>
- <p class="goodbye-text">Наслаждайтесь!</p>
- </body>
- </html>
Add Comment
Please, Sign In to add comment