Бесконечно масштабируй проект с помощью CSS не редактируя базовых шаблонов компонентов

Простые переменные формата элемент-свойство --block-title--padding определенные в контексте класса компонента, и константы формата --content-indent-big вместо произвольных значений решают 99% задач, сокращают код, стандартизируют и улучшают понимание.

image alt
CLVC
Constant, Level, Variable, Context

Методология создания дизайн систем для интерфейсов сайтов и приложений

Предисловие

Методология родилась и в процессе решения банальной прикладной задачи, по систематизации корректировки css для проектов на фронт-энд конструкторе

Суть метода

Константы - определяют набор значений параметров оформления элементов. Константы определиться для всех состояний экранов.

Уровни являются префиксами и определяют размерность констант и область применения значений переменных

Переменные определяются для всех сущностей на каждом уровне вложенности интерфейса значениями констант, или абсолютными значениями (0, 100% и т.д.) Переменные не имеют определяться в разных состояниях экранов, это происходит на уровне констант.

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

Для чего
Дизайн

Для дизайна это простой и понятный способ определить границы возможных инвариантов компонентов дизайна.

По сути определив константы для CLVC мы получаем палитру не только цветов, а величин, визуальных эффектов, параметров анимации и любых других значений используемых параметров дизайна допустимых в рамках конкретной дизайн системы

Вёрстка
Для вёрстки применение clvc это способ в сократить объем работы и кода, существенно упростить создание новых компонентов.

Вёрстка

Для вёрстки применение clvc это способ в сократить объем работы и кода, существенно упростить создание новых компонентов.

Пример 1
У нас есть баннер с заголовком, подзаголовком и фоном на всю ширину.

Новая версия компонента - баннер с тем же набором элементов но заголовок 64px (константа дизайна --const-textsize-big) , а сам блок на плашке со скруглёнными углами максимальной ширины 1200px (константа дизаqна --const-bl-width-middle).
и отступом от блоков сверху и снизу в 60px (константа дизаqна --const-bl-indent-middle)

Чтоб создать новый блок по методологии CLVC нам нужно задать контекст, а именно контейнеру присвоить класс нового блока .cover-02-01

и переопределить переменные в контексте нового класса

Определение стилей через контекст по методолгии CLVC
    .cover-02-01 {
        --a-bl-wrap-max-width: var(--const-bl-width-rgular);
        --a-bl-wrap-border-radius: var(--const-bl-br-big);
        --a-bl-title-font-size: var(--const-text-size-big);
    }
Обычный код
    .cover-02-01 {
        max-width: 1200px;
        border-radius: 60px;
        margin: 60px auto;
    }
    .cover-02-01__title {
        font-size: 64px;
    }
    @media (max-width: 1200px) {
        .cover-02-01 {
            border-radius: 50px;
        }
        .cover-02-01__title {
            font-size: 56px;
        }
    }
    @media (max-width: 667px) {
        .cover-02-01 {
            border-radius: 36px;
            margin: 36px auto;
        }
        .cover-02-01__title {
            font-size: 42px;
        }
    }
Еще меньше кода в продашене

CSS построенный на CLVC методологии состоит из определения свойств через переменные по умолчанию и переменных определённых в контексте. Соответвенно его можно существенно минифицировать для продакшена, причем чем больше проект тем выше % сжатия.



Генерируемая верстка

Для средств генерирующих верстку через визуальный интерфейс (конструкторов сайтов) clvc это способ сократить объем и повысить чистоту генерируемого кода

Пример
У нас есть базовый блок - баннер с заголовком, подзаголовком и фоном на всю ширину.

Пользователь изменил ряд параметров:
- изменил размер заголовка на 58px
- установил подзаголовок 21px
- изменил размер контейнера контента на 1100px
- скруглил радиус углов блока на 30px

Один из самых лучших конструкторов (по чистоте генерируемого кода) нам сгенерирует id каждого элемента и сгенерирует css примерно следующего вида

    #idcr123 {
        border-radius: 30px;
    }
    #idcr123 {
        max-width: 1100px;
    }
    #idbltitle123 {
        font-size: 58px;
    }
    #idsubltitle123 {
        font-size: 21px;
    }

генератор кода построенный на CLVC сгенерирует следующий код

    #idbl123 {
        --bf: 30px;
        --ad: 1100px;
        --az: 58px;
        --as: 21px;
    }
Для мини-проектов

CLVC прекрасно подходит для любого размера приложений. Объем кода с определением переменных по умолчанию не критично увеличит объём вашего кода, а в замен вы получаете готовность приложения для масштабирования до бесконечности.

Правила названия констант и переменных

Константа
--const-<уровень/назначение> -<название свойства>-<версия>

Пример:
--const-block-witdth-regular: 1200px

константа определяющая средние значение для ширины элементов уровня блок

Переменная
--a-<уровень> -<название сущности>-<название свойства>

Пример:
--a-block-container-max-witdth: var(--const-block-witdth-regular)

переменная задающая свойство максимальной ширины для обертки блока определённая константой средней ширины элемента