Методология Cube CSS и другие основы
Не буду много расписывать о "Кубе", потому что вы можете сами прочитать о нем здесь и здесь, скажу в двух словах: никаких rem'ов, избегаем GRID-CSS, избегаем калькуляций в значениях CSS-свойств, меньше CSS-переменных и ни в коем случае никаких огромных вложенностей и дубликатов в HTML.
Причем, некоторые правила компании нивелирует сами понятия Cube CSS, отчего сложится впечатление, что это гибридный формат интерпретации самой методологии. Основные правила, которых стоит придерживаться, изложены в предыдущем абзаце. Наглядный пример можно посмотреть в одном из проектов:
Что необходимо принять для начала работы:
- Методология БЭМ может являться признаком множества споров. Вам следует продумать четко-выверенную и структурированную аргументированную доказательную базу в пользу её использования.
- Методология mobile-first (по мнению владельца бизнеса) является неверным методом разработки проектов студии. Просто смиритесь и пишите код от большего к меньшему (desktop-first), даже если проект имеет дизайн-структуру mobile-first.
-
Использование единиц измерения REM - является фатальной ошибкой и плохо тестируется (по
мнению
компании). Здесь вам нечего предложить, кроме как использовать значения в
px
. - Использование вычислений (калькуляции) в CSS - является ошибкой (по мнению компании), которую необходимо избегать. Здесь вы должны иметь понимание того, для чего вообще и в какой момент нужно использовать калькуляцию. Если в данном блоке или элементе это можно обойти стороной - обходите.
- Использование GRID-контейнеров в CSS - является ошибкой и плохо тестируется (по мнению владельца бизнеса), которую необходимо избегать. В данном случае, это связано с тем, что нет понимания, как работают GRID-CSS. Просто старайтесь использовать как можно меньше "гридов" в вашей верстке.
- Использование большого количества вложенности в HTML - является фатальной ошибкой: старайтесь избегать, а в некоторых случаях включать смекалку и использовать минимальное количество вложенности в HTML. Это важно, если проект имеет SEO-подготовку для дальнейшего продвижения. Ключевыми элементами может оказаться навигация и текстовые ссылки (например в шапке).
- Использование CSS-переменных типа var(--color) возможно, но только для служебных стилей. Например, использовать для белого цвета (#ffffff) переменную нельзя, потому что это является фатальной ошибкой (по мнению владельца бизнеса).
-
Написание такого класса для шапки сайта, как:
<header class="header"> </header>
- лучше так не делать, но все же возможно. - Узкая система брейкпоинтов: 360 ⬅ 720 ⬅ 1000 ⬅ 1500. На самом деле, можно сделать так: 0 ⬅ 576 ⬅ 720 ⬅ 992 ⬅ 1024 ⬅ 1200 ⬅ 1360 ⬅ 1440 ⬅ 1500 (не для всех случаев), чаще будете использовать: 0 ⬅ 720 ⬅ 992 ⬅ 1200 ⬅ 1500
- Нет возможности создавать отдельные повторяющиейся элементы, например бургер-меню, не должно быть отдельным элементом. Если навигация есть в шапке, то при схлопывании на брейкпоинте она же становится схлопнутым бургер-меню. Это важно помнить при проектировании шаблона сайта на зачатках разработки.
-
Во FLEXBOX-контейнерах обращение к дочерним элементам лучше писать так:
.flex > * {};
- Придется дорабатывать или иногда додумывать дизайн-структуру в макете Figma, собирать свой иконочный шрифт, icon-pack для работы (советую использовать сервис Glyther)
- Необходимо категорически избегать inline-стилей для элементов. Исключением могут быть повторяющиейся элементы в стеке, либо стили из вашего JS-кода.
- Глобально определить стили для основных семантических элементов, таких как: h1-6, a, b, p, ul, ol и др.
-
Ваш JS-код должен быть сосредоточен в одном файле
app.js
и содержать всю логику работы функций на сайте. Только в крайнем случае, если у вас есть логика (например, для работы с личным кабинетом пользователя) и она достаточно объемная - допускается поместить её в отдельный файл. В противном случае - все критически важные и функции, которые выполнимы на всех страницах сайта должны оставаться в одном файле.
Обозначим вашу структуру статического сайта с СЕО-продвижением
В вашей структуре могут находится файлы вендоров, но только непосредственно скачанные из облака или (в редких случаях) вся "либа" целиком.
Примерно так будет выглядеть структура вашего проекта:
- /assets
- /images
- image.webp
- bg.webp
- gradient.webp
- video.webp
- /icons
- sprite.svg
- icon_1.svg
- icon_2.svg
- icon_3.svg
- /fonts
- font.eot
- font.woff
- font.woff2
- font.ttf
- /images
- /dist
- /css
- app.css
- /css
- /src
- /scss
- _variables.scss
- app.scss
- /js
- app.js
- /scss
- index.html
Обратите внимание: максимально 3 уровня для критически важных файлов. Для графики можно использовать больше уровней, если на то есть необходимость