isengine/isscss

Библиотека стилей для isEngine framework на SASS/SCSS

Installs: 55

Dependents: 1

Suggesters: 0

Security: 0

Stars: 0

Watchers: 1

Forks: 0

Open Issues: 0

Language:SCSS

Type:project

dev-main 2022-10-02 20:31 UTC

This package is auto-updated.

Last update: 2024-03-30 00:17:39 UTC


README

Библиотека стилей для isEngine framework на SASS/SCSS.

Быстрый старт

Подключите библиотеку к своему проекту.

@import "/path/to/isengine/isscss/src/is";

Вы можете использовать библиотеку как utility first, назначая классы элемента, например:

// html код в стиле utility first
<div class="flex my-1 px-2 justify-content-between">
    ...
</div>

Или использовать ее для простроения своих классов через наследование от классов-шаблонов:

// style sheet
.flex-block {
    @extend %flex;
    @extend %my-1;
    @extend %px-2;
    @extend %justify-content-between;
}

// html код по методологии BEM
<div class="flex-block">
    ...
</div>

Оглавление

О проекте

Данный проект создан как вспомогательная SCSS библиотека для простого управления стилями в вашем проекте.

Если вы использовали такие фреймворки как Bootstrap, Foundation, Materialize, Tailwind и подобные, эта библиотека будет для вас интуитивно понятной.

^ к оглавлению

Совместимость

Вы можете совершенно спокойно подключить isScss к абсолютно любому проекту.

Данная библиотека написана на чистом SCSS и НЕ использует сторонние JavaScript-библиотеки.

Чтобы устранить возможные конфликты с повторением классов, вы можете использовать префикс.

^ к оглавлению

Установка

Для использования, просто импортируйте библиотеку в свой проект

@import "/vendor/isengine/isscss/src/is";

^ к оглавлению

Варианты использования

Вы можете использовать isScss как utility first / functional / atomic библиотеку, прописывая стили в класс элемента, например:

<div class="flex py-1 px-2">
    ...
</div>

За использование библиотеки как utility first отвечают Компоненты.

Если вы не хотите иметь лишние классы в своем проекте, которые будут занимать лишнее место и снижать скорость загрузки, отключите их использование на уровне компонентов.

Вы также можете использовать isScss для простроения своих классов, например, по методологии BEM.

Подробнее смотрите в разделе Создание собственных классов.

^ к оглавлению

Настройка

Вы можете настроить isScss так, как вам нужно.

Для этого подключите файл настроек ПЕРЕД подключением бибилиотеки:

@import "settings";

В настройках вы можете задать:

  • контрольные точки,
  • адаптивная сетка,
  • цвета,
  • шрифты,
  • размерный ряд,
  • компоненты,
  • префикс.

^ к оглавлению

Основные параметры

Контрольные точки

isScss предлагает адаптивную сетку со следующими контрольными точками:

Префикс Минимальная ширина экрана Ширина контейнера
320 px 100 %
xs 480 px 100 %
sm 640 px 100 %
md 720 px 720 px
lg 960 px 940 px
xl 1200 px 1140 px
hd 1900 px 1600 px
x4 3800 px 3200 px

Указанные в таблице размеры экранов и контейнеров тоже выбраны не случайно. Мы собрали наиболее часто встречающиеся разрешения экранов, разбили их по группам и на основе полученных данных составили следующий список.

  • смартфоны: 480 x 320, 640 x 480, 800 x 480, 854 x 480, 960 x 540, 960 x 640, 1136 x 640,
  • мониторы: 800 x 600, 1024 × 768, 1280 х 1024,
  • HD экраны: 1280 х 720, 1280 х 800, 1366 x 768, 1440 x 900,
  • Full HD экраны: 1920 x 1080, 1920 x 1200,
  • 2k: 2048 x 1400, 2048 × 1536, 2560 x 1400, 2560 x 1440,
  • Ultra HD: 3840 x 2160, 4096 x 1400, 4096 x 2160, 5120 x 2160, 6016 x 3384, 7680 x 4320.

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

Префиксы обозначают название контрольных точек и задают минимальную ширину экрана.

// блок настроек
$is-layout: (
    breakpoints: (
        xs: (480px, 100%),
        sm: (640px, 100%),
        md: (720px, 720px),
        lg: (960px, 940px),
        xl: (1200px, 1140px),
        hd: (1900px, 1600px),
        x4: (3800px, 3200px)
    ),
    ...
);

Пример использования:

<div class="col-12 sm-col-6 lg-col-4">
    <div class="py-0 sm-py-1 lg-py-2">
        ...
    </div>
</div>

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

Также в блоке настроек вы можете указать минимальную ширину для тега 'body'.

// блок настроек
$is-layout: (
    ...
    min-width: 320px,
    ...
);

По-умолчанию стоит значение '320px'. Если экран становится ниже этого значения, появляется горизонтальная полоса прокрутки. Это удобно для того, чтобы ограничить адаптивную верстку.

Нужно помнить, что это только значение параметра. Сам параметр используется в модуле нормализации. Если у вас выключен этот модуль, параметр не будет работать.

^ к оглавлению

Адаптивная сетка

В isScss, как и в большинстве похожих библиотек, используется адаптивная сетка для блочной верстки.

Сетка включает в себя следующие элементы:

  • контейнер,
  • строки,
  • колонки.

В целом код выглядит следующим образом:

<div class="container">
    <div class="row">
        <div class="col">
            ...
        </div>
        <div class="col">
            ...
        </div>
    </div>
    <div class="row">
        ...
    </div>
</div>

По-умолчанию сетка состоит из 12 колонок. Это означает, что любая строка бьется на 12 равных частей. Вы можете задавать размер каждой колонки, устанавливая, сколько частей она занимает.

Например:

// две равные колонки
<div class="col-6">
    ...
</div>
<div class="col-6">
    ...
</div>

// три равные колонки
<div class="col-4">
    ...
</div>
<div class="col-4">
    ...
</div>
<div class="col-4">
    ...
</div>

// две колонки, ворая больше первой в два раза
<div class="col-4">
    ...
</div>
<div class="col-8">
    ...
</div>

И так далее.

Можно также использовать разную ширину колонок для разных размеров экрана. Для этого нужно к колонкам добавить префикс контрольных точек.

// по одной колонке в строке на маленьких экранах,
// по две колонки на строку для средних
// и по четыре - для больших
<div class="col-12 md-col-6 xl-col-3">
    ...
</div>

Если колонки не имеют значений, они будут равной ширины.

Дополнительные значения, которые не указываются в настройках:

  • 0,
  • auto.

Существует дополнительное значение 'auto', которое задает автоматическую ширину колонки в зависимости от ее содержимого.

Если у вас есть хотя бы одна колонка со значением 'auto', то вам нужно также иметь хотя бы одну колону без значений.

<div class="col-auto">
    ...
</div>
<div class="col">
    ...
</div>

В isScss также есть значение '0', которое полностью скрывает колонку.

Это сделано для удобства вывода разных колонок для разных размеров экрана.

// эта колонка не будет видна на больших экранах
<div class="col-12 lg-col-0">
    ...
</div>

// эта колонка будет видна только на больших экранах
<div class="col-0 lg-col-12">
    ...
</div>

Стоит обратить внимание, что колонки всегда должны быть вложены в строку. Строки, в свою очередь, должны быть вложены в контейнер.

Допускается иметь в колонках вложенные строки, при этом они могут не иметь контейнера:

<div class="container">
    <div class="row">
        <div class="col">
            <div class="row">
                <div class="col">
                    ...
                </div>
            </div>
        </div>
        ...
    </div>
    ...
</div>

Число колонок в строке задается в настройках и это значение можно менять.

// блок настроек
$is-layout: (
    ...
    cols: 12,
    ...
);

Кроме этого, каждая колонка имеет некоторые отступы. Эти отступы также задаются в настройках.

// блок настроек
$is-layout: (
    ...
    indent: 15px,
    ...
);

Еще вы можете задать расстояние между колонками по-умолчанию.

// блок настроек
$is-layout: (
    ...
    gap: 2px,
    ...
);

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

Внимание! Мы все еще используем flex box для данной сетки. Вы можете использовать классы и стили flex box для строк и колонок.

Сетка на свойствах grid представлена отдельными элементами.

^ к оглавлению

Цвета

В isScss, как в других библиотеках, предлагается цветовая палитра из цветов радуги и оттенков серого.

// блок настроек
$is-colors: (
    theme:   #6DB13F,
    primary: #6DB13F,
    second:  #EF8720,
    third:   #F3E759,
    ...
);

Самыми главными являются рабочие цвета:

theme:    #...,
primary:  #...,
second:   #...,
third:    #...,

Хотя обычно четыре цвета не требуется, достаточно одного-двух.

Также есть белый, черный и темный цвета.

black:  #000000,
dark:   #212121,
light:  #F6F6F6,
white:  #FFFFFF,

Отдельно обозначается прозрачный цвет.

none:     transparent,

Оттенки серого используют градацию от 1 до 9, где 1 обозначает самый светлый, а 9 - самый темный цвет.

gray-1: #ECECEC,
gray-2: #D0D0D0,
gray-3: #B9B9B9,
gray-4: #A2A2A2,
gray-5: #8B8B8B,
gray-6: #737373,
gray-7: #5C5C5C,
gray-8: #454545,
gray-9: #2E2E2E,

Стандартная палитра состоит из 10 цветов радуги:

red: 	  #E54142,
orange:   #EF8720,
yellow:   #F9C82D,
green: 	  #6DB13F,
teal: 	  #128c7e,
blue: 	  #5BA3D4,
purple:   #444A9E,
pink: 	  #D64381,
beige: 	  #F0E1CE,
brown: 	  #795548,

Эти цвета подобраны таким образом, чтобы быть не сильно яркими, скорее пастельных тонов, и чтобы на них приемлемо смотрелись надписи черным или белым цветом.

Каждому из этих цветов соответствует класс для цвета текста, цвета фона и цвета границ элемента:

<div class="color-white bg-black border-gray-5">
    ...
</div>

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

^ к оглавлению

Шрифты

Вы можете добавить для использования несколько разных шрифтов, включая шрифты с иконками.

// блок настроек
$is-fonts: (
    theme: (
        name:        #{"Ubuntu", sans-serif},
        size:        16px,
        weight:      400,
        line-height: 1.25rem,
        line-indent: 0,
    ),
    icon: (
        name:        FontAwesome,
        size:        16px,
        weight:      400,
        line-height: 1.25rem,
        line-indent: 0,
    ),
    ...
);

Как здесь видно, каждый шрифт представлен ассоциативным массивом. Ключ обозначает идентификатор шрифта.

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

Например:

<div class="font-theme">
    ...
</div>

Рекомендуется устанавливать для каждого шрифта базовый размер 16px.

От размера базового шрифта дальше будут считаться все основные размеры.

Если вам нужно поменять параметры шрифта, можно использовать модификаторы.

^ к оглавлению

Размерный ряд

Размерный ряд представляет собой линейку размеров для отступов, толщину границ элемента и значения ширины/высоты.

// блок настроек
$is-sizes: (
    absolute:
        0.25,
        0.5,
        0.75,
        ...
    relative:
        10,
        25,
        50,
        ...
    special: (
        xs: 0.25rem,
        sm: 0.5rem,
        md: 1rem,
        ...
    )
);

В isScss размеры устанавливаются для следующих свойств:

  • padding (top, left, right, bottom),
  • margin (top, left, right, bottom),
  • top,
  • left,
  • right,
  • bottom.
  • width (min, max),
  • height (min, max),
  • font-size,
  • line-height,
  • border-width,
  • gap.

Дополнительные значения, которые не указываются в настройках:

  • 0,
  • auto.

Абсолютные величины

Абсолютные величины применяются, в основном, для отступов.

Они измеряются в единицах 'rem' и могут иметь как положительные, так и отрицательные значения.

Для абсолютных величин, по-умолчанию, используется следующий размерных ряд:

Величина Значение В пересчете на пиксели
01 0.1 rem 2 px (1.6 px)
02 0.2 rem 3 px (3.2 px)
025 0.25 rem 4 px
05 0.5 rem 8 px
075 0.75 rem 12 px
08 0.8 rem 13 px (12.8 px)
09 0.9 rem 14 px (14.4 px)
1 1 rem 16 px
11 1.1 rem 18 px (17.6 px)
12 1.2 rem 19 px (19.2 px)
125 1.25 rem 20 px
15 1.5 rem 24 px
175 1.75 rem 28 px
18 1.8 rem 29 px (28.8 px)
19 1.9 rem 30 px (30.4 px)
2 2 rem 32 px
225 2.25 rem 36 px
25 2.5 rem 40 px
275 2.75 rem 44 px
3 3 rem 48 px
35 3.5 rem 56 px
4 4 rem 64 px
45 4.5 rem 72 px
5 5 rem 80 px
55 5.5 rem 88 px
6 6 rem 96 px
7 7 rem 112 px
8 8 rem 128 px
9 9 rem 144 px

Пример:

// отступы со всех сторон по 0.5rem
<div class="m-05">
    ...
</div>

// отступы со всех сторон по -0.5rem
<div class="m--05">
    ...
</div>

Относительные величины

Относительные величины применяются, в основном, для определения ширины и высоты.

Для относительных величин, по-умолчанию, используется следующий размерный ряд:

Величина Единицы измерения
10 % / vw / vh / vmin / vmax
25 % / vw / vh / vmin / vmax
50 % / vw / vh / vmin / vmax
75 % / vw / vh / vmin / vmax
90 % / vw / vh / vmin / vmax
100 % / vw / vh / vmin / vmax

По-умолчанию, в качестве единиц используются проценты. Чтобы использовать другие единицы, нужно указать их после величины.

Вы также можете использовать отрицательные значения.

Примеры использования:

// блок на всю ширину и автоматическую высоту
<div class="w-100p h-auto">
    ...
</div>

// блок на высоту 100vh
<div class="h-100vh">
    ...
</div>

// блок с ограниченной шириной
<div class="w-100p w-max-50vw">
    ...
</div>

// блок с отрицательными отступами
<div class="m-100p">
    ...
</div>

Специальные величины

Специальные величины используются, в основном, для указания точных размеров.

Отличия специальных свойств в том, что вы задаете и название, и значение, включая единицы измерения.

По-умолчанию, используются следующий ряд:

Название Значение
xs 0.25 rem
sm 0.5 rem
md 1 rem
lg 1.5 rem
xl 3 rem
none 0
min 1 px
full 100 %

Примеры использования:

<div class="px-xs my-md">
    ...
</div>

Кастомизация

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

^ к оглавлению

Компоненты

На данный момент библиотека isScss простроена на базовых классах, функциях и миксинах. Вы можете использовать их для построения собственных классов.

Библиотека isScss содержит классы-шаблоны. Такие классы не будут включены в набор стилей при компиляции. Но при этом вы можете использовать их для построения собственных классов.

Классы-шаблоны создаются автоматически. А создание классов с теми же именами зависит от настроек компонента.

Обратите внимание! Классы-шаблоны не включают в себя медиа-запросы и состояния. Однако они, как и обычные классы, могут иметь короткие и полные названия. Это регулируется настройками компонента.

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

Все это также делается через настройки.

// блок настроек
$is-modules: (
    color : true,
    layout : true,
    text : true,
    ...
);

Каждый компонент может иметь следующие значения:

  • true - включено использование компонента полностью,
  • null - компонент выключен.

Также вы можете перечислить различные дополнения, которые хотите включить в компоненте, в виде массива.

  • breakpoints - для классов компонента не будут созданы модификаторы контрольных точек,
  • short - короткие имена для классов,
  • full - длинные имена для классов,
  • hover - модификаторы для классов с состояниями 'hover' и 'focus',
  • classes - включить классы.

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

При включенных компонентах вы можете использовать isScss как utility first библиотеку, прописывая стили в класс элемента, например:

<div class="flex py-1 px-2">
    ...
</div>

Вы также можете наследовать имена классов. Подробнее смотрите в разделе Создание собственных классов.

После отключения того или иного компонента, классы пропадут из состава библиотеки. И подобные записи приведут к ошибке. Поэтому мы рекомендуем отключать только параметр 'class' в массиве настроек компонента.

При отключении параметра 'class' параметры 'breakpoints' и 'hover' не будут иметь значения, т.к. они влияют только на классы, но не на классы-шаблоны.

Если вы выключите использование всех компонентов, то в ваш файл стилей будут влючены только созданные вами классы.

^ к оглавлению

Префикс

Данная возможность пока что не реализована!

Если вы используете несколько библиотек или фреймворков, у вас может возникнуть проблема с одинаковыми классами.

// блок настроек
$is-prefix: (
    name : 'is-',
    enable : false
);

Чтобы избежать подобных конфликтов, в isScss можно включить префикс. По-умолчанию он выключен.

// префикс выключен, возможны конфликты!
<div class="color-white bg-black border-gray-5">
    ...
</div>

// включен префикс is-
<div class="is-color-white is-bg-black is-border-gray-5">
    ...
</div>

Вы можете сами назначить любой префикс. Мы рекомендуем использовать префикс 'is-'.

^ к оглавлению

Классы

Общие правила

Имена всех встроенных классов в isScss строится по следующим правилам.

Названия классов совпадают с названиями параметров стилей. Это позволяет не запоминать классы, а использовать их интуитивно.

Например:

// есть параметр стиля min-width, но не width-min
<div class="min-width">
    ...
</div>

Все префиксы, постфиксы и модификаторы указываются через черточку, символ '-'.

Например:

<div class="pre-class-post">
    ...
</div>

В начале имени класса можгу указываться модификаторы контрольных точек. Такой класс будет действовать для соответствующей ширины экрана.

Например:

<div class="class-1 sm-class-2 lg-class-3">
    ...
</div>

Для классов, использующих размерный ряд, в конце указывается один из допустимых размеров.

Например:

<div class="
    size-class1-0
    size-class2-025
    size-class3-10p
    size-class4-50vw
    size-class5-min
    size-class6-auto
">
    ...
</div>

^ к оглавлению

Короткое написание

Для некоторый классов, для упрощения, используются как полные, так и короткие варианты написания.

Например:

// полная запись
<div class="padding-0 margin-0">
    ...
</div>

// короткая запись
<div class="p-0 m-0">
    ...
</div>

Короткие варианты сделаны для сокращения записи.

^ к оглавлению

Модификаторы направлений

Модификаторы направлений используются для тех классов, свойства которых имеют варианты указания направлений.

Например:

  • padding,
  • margin,
  • border.

Некоторые модификаторы направлений имеют как полную, так и короткую запись. В полной записи, они указываются через черточку '-', но в короткой записи, эта черточка пропускается.

Например:

// полная запись
<div class="padding-left-0 padding-right-0 margin-top-1">
    ...
</div>

// короткая запись
<div class="pl-0 pr-0 mt-1">
    ...
</div>

В таблице ниже приведены все модификаторы направлений и их описание.

Полная Короткая Описание
top t сверху
bottom b внизу
left l слева
right r справа
start s с начала от направления чтения
end e с конца от направления чтения
- x по горизонтали
- y по вертикали

^ к оглавлению

Установки по-умолчанию

По-умолчанию заданы стили для многих базовых элементов, таких как:

  • body,
  • div,
  • h1-h6,
  • p,
  • a,
  • img,
  • ul,
  • ol,
  • input,
  • button,
  • и др.

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

Все это сделано для того, чтобы привести элементы к общему виду для отображения в разных браузерах. Но не для того, чтобы каким-либо образом стилизовать эти элементы по своему вкусу.

Вы можете отключить данную опцию в компонентах.

^ к оглавлению

Классы отступов

Внешние отступы элемента задаются параметром стилей 'margin'. Внутренние отступы - параметром 'padding'.

Библиотека isScss использует короткие названия для этих параметров:

  • m,
  • p.

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

Общая формула выглядит так:

[breakpoint-][margin|m][-direction|short_direction][-size] [breakpoint-][padding|p][-direction|short_direction][-size]

Пример:

// полная запись
margin-top-1
sm-margin-top-2
margin-x-2

// короткая запись
mt-1
sm-mt-2
mx-2

Существует еще несколько классов, задающих абсолютные отступы:

  • left,
  • right,
  • top,
  • bottom.

Их короткие названия включают префикс черточки '-', чтобы исключить пересечение с другими классами.

  • -l,
  • -r,
  • -t,
  • -b.

Пример:

// полная запись
left-1
sm-left-2

// короткая запись
-l-1
sm--l-2

^ к оглавлению

Классы краев

Для элементов есть возможность задать края стилями 'border'.

В CSS это составной параметр, который включает:

  • border-color,
  • border-style,
  • border-width,
  • border-radius
  • и др.

Для того, чтобы у вас заработали классы краев, вам нужно инициализировать их классами 'b' или 'border'.

Толщина края

Библиотека isScss использует следующие названия, полное и короткое, для стиля 'border':

  • border,
  • b.

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

Общая формула выглядит так:

[breakpoint-][border|b][-direction|short_direction][-size]

Пример:

// полная запись
border-0
border-top-1
sm-border-top-2

// короткая запись
b-0
bt-1
sm-bt-2

Радиус края

Радиус края задается отдельным стилем с полным и коротким названиями:

  • radius,
  • r.

По-умолчанию радиус задается для всех сторон.

Радиус края также может быть задан одним из восьми направлений. Из-за того, что радиус задается для угла, направление представляет собой сочетание сторон.

Все модификаторы направлений приведены в таблице ниже.

Полная Короткая Описание
top-left tl верхний левый
top-right tr верхний правый
bottom-left bl нижний левый
bottom-right br нижний правый
top t верхние левый и правый
bottom b нижние левый и правый
left l левые верхний и нижний
right r правые верхний и нижний

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

Общая формула выглядит так:

[breakpoint-][radius|r][-direction|short_direction][-size]

Пример:

// полная запись
radius-0
radius-top-left-1
sm-radius-top-left-2

// короткая запись
r-0
rtl-1
sm-rtl-2

Цвет края

Также для края можно задать цвет.

Подробно об этом описано в разделе Классы цветовой палитры.

^ к оглавлению

Классы ширины и высоты

Существует два базовых класса, задающих размеры элемента:

  • width,
  • height.

И их короткие названия:

  • w,
  • h.

У каждого из этих классов есть минимальное и максимальное значение:

  • min-,
  • max-.

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

Общая формула выглядит так:

[breakpoint-][min-|max-][width|w][-size] [breakpoint-][min-|max-][height|h][-size]

Пример:

// полная запись
width-5
sm-width-3vw
max-width-100p

// короткая запись
w-5
sm-w-3vw
max-w-100p

^ к оглавлению

Классы отображения

Элементам могут быть назначены следующие классы отображения в документе:

  • none - элемент не отображается,
  • block - блочный элемент,
  • inline - строчный элемент,
  • inline-block - строчный элемент со свойствами блока,
  • flex - элемент типа flex box, для создания макетов,
  • grid - элемент типа grid, для создания макетов,
  • contents - внеблочный элемент, который выносит уровнем вверх все вложенные в него элементы.

Для этих классов нет коротких названий.

Можно использовать модификаторы контрольных точек.

Общая формула выглядит так:

[breakpoint-][class]

Пример:

block
sm-none

^ к оглавлению

Специальны классы отображения

В дополнение к основным классам отображения элементов, использующим свойство 'display', мы предлагаем несколько вспомогательных классов.

Классы, использующие свойство 'visibility':

  • visible,
  • hidden.

Классы, использующие свойство 'overflow':

  • overflow-x,
  • overflow-y,
  • overflow-hidden.

^ к оглавлению

Классы позиционирования

Элементам могут быть назначены следующие классы позиционирования в документе:

  • relative - относительно своего положения, его смещение не влияет на положение любых других элементов,
  • absolute - относительно своего родителя со значением 'relative',
  • fixed - относительно всего документа,
  • sticky - относительно документа или родителя, но с прилипанием к краю при прокрутке.

Для этих классов нет коротких названий.

Для элементов с любым из этих классов становится доступным смещение по значениям top, right, bottom, left и по оси z.

Можно использовать модификаторы контрольных точек.

Общая формула выглядит так:

[breakpoint-][class]

Пример:

relative
sm-absolute

^ к оглавлению

Класс позиционирования по оси z

Элементы могут быть спозиционированы по оси z.

Для этого используется отдельный стиль с полным и коротким названиями:

  • z-index,
  • z.

Для этого класса используется свой размерный ряд:

Название Значение
1 1
2 10
3 100
4 1000
5 10000
last -1
first 99999

И дополнительные значения:

  • 0,
  • auto.

Можно использовать модификаторы контрольных точек.

Общая формула выглядит так:

[breakpoint-][z-index|z][-size]

Пример:

// полная запись
z-index-1
sm-z-index-auto

// короткая запись
z-1
sm-z-auto

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

^ к оглавлению

Классы выравнивания

Выравнивание элементов делается через следующие стили:

  • text-align,
  • vertical-align.

В бибилиотеке isScss мы упростили их до одного общего класса с полным и коротким названиями:

  • align,
  • a.

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

Кроме обычных направлений, здесь добавляется несколько новых:

Полная Короткая Описание Стиль
top t по верху vertical-align: top
bottom b по низу vertical-align: bottom
left l по левому краю text-align: left
right r по правому краю text-align: right
start s с начала от направления чтения text-align: start
end e с конца от направления чтения text-align: end
- x по горизонтали left: 50%; right: auto;
transform: translateX(-50%)
- y по вертикали top: 50%; bottom: auto;
transform: translateY(-50%)
- a по горизонтали и вертикали top: 50%; bottom: auto;
left: 50%; right: auto;
transform: translate(-50%, -50%)
center c по центру по горизонтали text-align: center
justify j по ширине text-align: justify
middle m по центру по вертикали vertical-align: middle
baseline bl по центру по вертикали vertical-align: baseline

Общая формула выглядит так:

[breakpoint-][align|a][-direction|short_direction]

Пример:

// полная запись
align-top
sm-align-x

// короткая запись
at
sm-ax

^ к оглавлению

Классы изображений

Библиотека isScss позволяет работать со следующими типами изображений:

  • обычный элемент изображения,
  • фоновое изображение,
  • маска.

В качестве масок isScss допускает использование фоновых изображений. Однако маски можно перекрашивать в цвета, заданные через свойство 'color'. В ряде случаев это может оказаться крайне полезно. Например, если вы создаете иконки интерфейса, которые должны менять цвет в зависимости от действий пользователя.

Для всех перечисленных элементов есть стандартные классы:

  • image,
  • bg,
  • mask.

Эти классы задают размеры контейнера в 100% и отключают повторение.

Загрузка фоновых изображений

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

В данном случае, читается атрибут 'data' с именем CSS свойства:

  • data-mask-image - для изображений в качестве маски,
  • data-bg-image - для фоновых изображений.

Для того, чтобы то или иное свойство применилось, вам нужно прописать соответствующий класс:

  • mask-image,
  • bg-image.

Фон в виде градиента

Вы можете использовать в качестве фона градиентную заливку цветом.

В данном случае, читается атрибут 'data' с именем CSS свойства:

  • data-bg-gradient.

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

  • bg-gradient.

Сам класс использует следующие настройки стиля:

background-blend-mode: screen;
background-image: attr(data-bg-gradient linear-gradient);

Выравнивание изображений

Для выравнивания изображений используется свойство 'object-fit'. Оно позволяет разместить текущий элемент с изображением в родительском элементе не нарушая соотношения сторон.

Допускается использовать следующие классы:

  • image-cover - вписывает изображение таким образом, чтобы оно занимало весь элемент,
  • image-contain - вписывает изображение таким образом, чтобы оно целиком помещалось в элемент.

Вы также можете выровнять изображение в тексте:

  • image-left или image-l - выравнивает изображение по левому краю,
  • image-right или image-r - выравнивает изображение по правому краю,
  • image-center или image-c - выравнивает изображение по центру.

Такое выравнивания изображений использует свойство 'float'. Его стоит применять только в том случае, если вы хотите разместить изображение в текстовом блоке.

Выравнивание фоновых изображений

Выравнивание фоновых изображений происходит аналогично выравниванию простых изображений. Но здесь используется свойство 'background-size', которое предназначено непосредственно для таких операций.

Допускается использовать следующие классы:

  • bg-cover,
  • bg-contain.

Также вы можете настроить выравнивание изображения, используя следующие модификаторы:

Полная Короткая Описание
top t по верху
bottom b по низу
left l по левому краю
right r по правому краю
- x по центру по горизонтали
- y по центру по вертикали

Пример:

bg-top
bg-x

Фоновое изображение может иметь фиксированное позиционирование, которое будет сохранятся даже при прокрутке страницы. За это отвечает специальный класс:

  • bg-fixed

Выравнивание масок

Выравнивание масок происходит аналогично выравниванию фоновых изображений.

Допускается использовать следующие классы:

  • mask-cover,
  • mask-contain.

И те же модификаторы, что для фоновых изображений.

Пример:

mask-top mask-x

^ к оглавлению

Классы цветовой палитры

Библиотека isScss позволяет работать со следующими типами цвета:

  • цвет текста,
  • цвет фона,
  • цвет края.

Для всех перечисленных элементов есть следующие группы классов:

  • color,
  • bg,
  • border.

Сами цвета задаются исходя из существующей цветовой палитры по названиям этих цветов.

Будьте внимательны, чтобы названия цветов не совпали с такими параметрами, как left, rigth, top, bottom, cover, contain и др. и не создали конфликт!

Также можно использовать модификаторы контрольных точек.

Общая формула выглядит так:

[breakpoint-][type-|type][color|c][-value]

Пример:

color-white
bg-primary
border-primary
sm-color-gray-5
sm-bg-second
sm-border-second

Для использования градиентов в качестве фонового изображения рекомендуем использовать свойство bg-gradient.

^ к оглавлению

Классы прозрачности

Прозрачность элмента задается стилем с полным и коротким названиями:

  • opacity,
  • o.

В качестве степени прозрачности используются относительные величины размерного ряда и 0. Хотя они указывются в процентах, само значение прозрачности пересчитывается в единицы с сотыми долями.

0 соответствует полной прозрачности, 100 - полной непрозрачности.

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

Общая формула выглядит так:

[breakpoint-][opacity|o][-size]

Пример:

// полная запись
opacity-0
sm-opacity-50

// короткая запись
o-0
sm-o-50

^ к оглавлению

Классы текста

Библиотека isScss позволяет работать со следующими типами текста:

  • шрифт и свойства шрифта,
  • свойства текста.

Для всех перечисленных элементов есть следующие группы классов:

  • font,
  • text.

Для свойств шрифта и текста существуют сокращения.

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

Шрифт

Гарнитура шрифта задается, исходя из шрифтов в настройках, по их названиям.

Общая формула выглядит так:

[breakpoint-][font][-value]

Пример:

font-primary
sm-font-second

Свойства шрифта

Свойста шрифта, которые доступны для изменения, приведены в таблице:

Полная Короткая Описание Значения
font-size fs размер шрифта размерный ряд
font-weight fw толщина шрифта 100-900
line-height lh высота строки размерный ряд
line-indent li отступ строки размерный ряд

Общая формула выглядит так:

[breakpoint-][class|short_class][-value]

Пример:

// полная запись
font-weight-700
font-size-15
sm-font-size-2

// короткая запись
fw-700
fs-15
sm-fs-2

Свойства текста

Свойства текста меняют состояние текста или его начертание. Они не имеют значений, достаточно просто объявления соответствующего класса.

В CSS часть этих свойств относится к группе 'font', а часть - к 'text'.

В бибилиотеке isScss мы, для удобства, свели их в группу 'text'.

Их описание приведено в таблице:

Полная Короткая Описание
text-normal tn сбрасывает все свойства
text-decoration-none - сбрасывает подчеркивания и перечеркивания
text-transform-none - сбрасывает изменение регистра символов
text-bold tb жирный
text-italic ti курсив
text-underline tu подчеркнутый текст
text-overline to надчеркнутый текст
text-strike ts зачеркнутый текст
text-clip tc текст обрезается по размеру области
text-ellipsis te текст обрезается c многоточиеv
text-wrap tw принудительный перенос строк по ширине блока
text-small-caps tsc строчные буквы становятся маленькими заглавными
text-capitalize tcc каждая первая буква слова становится заглавной
text-lowercase tlc все буквы становятся строчными
text-uppercase tuc все буквы становятся заглавными

^ к оглавлению

Тени

Тени являются вспомогательной группой классов и задаются отдельным стилем с полным и коротким названиями:

  • shadow,
  • sh.

Варианты классов включают в себя:

  • тип тени - text (по-умолчанию) / box,
  • цвет тени - black (по-умолчанию) / white,
  • направление,
  • смещение,
  • размытие,
  • прозрачность.

Такая большая вариативность безусловно порождает множество классов. Но их вызов становится понятным и не вызывает трудности.

Прозрачность задается относительными величинами размерного ряда и 0. 0 соответствует полной прозрачности, 100 - полной непрозрачности.

Смещение и размытие задаются специальными величинами в соотношении 1:1.

Направление представляет собой сочетание сторон.

Все модификаторы направлений приведены в таблице ниже.

Полная Короткая Описание
top-left tl вверх влево
top-right tr вверх вправо
bottom-left bl вниз влево
bottom-right br вниз вправо
top t верх
bottom b вниз
left l влево
right r вправо

По-умолчанию направление не задано.

Можно использовать модификаторы контрольных точек.

Общая формула выглядит так:

[breakpoint-][shadow|sh][-type][-color][-size][-opacity][-direction|short_direction]

Пример:

// полная запись
shadow-xs
shadow-white-xs-bottom-right
shadow-box-white-xs-50-bottom-right

// короткая запись
sh-xs
sh-white-xs-br
sh-box-white-xs-50-br

^ к оглавлению

Контейнер flex box

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

Для этих классов нет короткой записи.

Для всех этих классов можно использовать модификаторы контрольных точек.

Расположение элементов

  • flex-row - расположение элементов в строку,
  • flex-row-reverse - расположение элементов в строку в обратном порядке,
  • flex-column - расположение элементов в столбец,
  • flex-column-reverse - расположение элементов в столбец в обратном порядке,
  • flex-wrap - размешить перенос элементов при превышении допустимого размера контейнера,
  • flex-nowrap - запретить перенос элементов и стараться их поместить в контейнер.

Размеры

Размеры каждого элемента устанавливаются в зависимости от числа колонок в настройках адаптивной сетки.

  • flex-grow-[size] - относительный размер растяжения элемента,
  • flex-shrink-[size] - относительный размер сжатия элемента.

Размеры задаются относительными величинами размерного ряда, а также специальным значением:

Ширину можно задать через специальные значения свойства 'flex-basis':

Название Значение
flex-auto flex-basis: auto;
flex-fill flex-basis: fill;
flex-max flex-basis: max-content;
flex-min flex-basis: min-content;
flex-fit flex-basis: fit-content;
flex-content flex-basis: content;

Ширину можно задать через классы 'width', установив при этом класс 'flex-auto'. Этот класс заставляет считать ширину элемента по свойству 'width'.

Порядок

Порядок каждого элемента устанавливается в зависимости от числа колонок в настройках адаптивной сетки.

  • order-[size] - порядок следования элемента.

Порядок задается относительными величинами размерного ряда, а также специальными значениями:

  • 0,
  • first,
  • last.

Классы порядка распространяются на контейнеры 'flex' и 'grid'.

Выравнивание

Выравнивание в контейнере flex работает по двум осям и назначается не только для всего контейнера, но и для отдельного элемента.

Все возможные классы представлены в следующей таблице:

Название Значение
justify-content-start justify-content: flex-start
justify-content-end justify-content: flex-end
justify-content-center justify-content: center
justify-content-between justify-content: space-between
justify-content-around justify-content: space-around
justify-content-evenly justify-content: space-evenly
align-items-start align-items: flex-start
align-items-end align-items: flex-end
align-items-center align-items: center
align-items-stretch align-items: stretch
align-items-baseline align-items: baseline
align-content-start align-content: flex-start
align-content-end align-content: flex-end
align-content-center align-content: center
align-content-stretch align-content: stretch
align-content-baseline align-content: baseline
align-content-between align-content: space-between
align-content-around align-content: space-around
align-content-evenly align-content: space-evenly
align-self-start align-self: flex-start
align-self-end align-self: flex-end
align-self-center align-self: center
align-self-stretch align-self: stretch
align-self-baseline align-self: baseline

Классы выравнивания распространяются на контейнеры 'flex' и 'grid'.

^ к оглавлению

Контейнер grid

Не задан.

^ к оглавлению

Анимации

Не заданы.

^ к оглавлению

Пользовательский интерфейс

На основе существующих классов можно построить целые UI библиотеки.

^ к оглавлению

Создание собственных классов

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

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

Мы рекомендуем использовать библиотеку isScss для построения на ее основе собственных стилей по методологии BEM. Использовать стили utility first допускается только для разработки.

// html код в стиле utility first
<div class="flex my-1 px-2 justify-content-between">
    ...
</div>

// html код по методологии BEM
<div class="flex-block">
    ...
</div>

Мы также не рекомендуем менять существующие настройки сетки, размеров, цветовой палитры и прочего. Исключение касается цветов проекта (theme, primary, second, third) и шрифтов.

^ к оглавлению

Наследование

Вы можете наследовать имена классов в своих классах таким образом:

// style sheet
.flex-block {
    @extend .flex;
    @extend .my-1;
    @extend .px-2;
    @extend .justify-content-between;
}

Но в этом случае в ваш файл стилей попадет как созданный вами класс 'flex-block', так и заданный в библиотеке класс 'flex'.

Такое решение может оказаться избыточным, т.к. занимает лишнее место.

Поэтому мы рекомендуем делать наследование от классов-шаблонов:

// style sheet
.flex-block {
    @extend %flex;
    @extend %my-1;
    @extend %px-2;
    @extend %justify-content-between;
}

В последнем случае, классы 'flex', 'my-1' и другие не должны быть включен в ваш файл стилей, туда попадет только класс 'flex-block'.

В итоге, ваш файл стилей будут содержать только нужные вам классы.

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

^ к оглавлению

Миксины

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

size_base

Пример использования:

.size_base {
  @include sizes-base(width);
}

Результат:

.size_base-auto { width: auto }
.size_base-0 { width: 0 }

Пример использования с несколькими свойствами:

.size_base_multi {
  @include sizes-base(width height);
}

Результат:

.size_base_multi-auto { width: auto; height: auto }
.size_base_multi-0 { width: 0; height: 0 }

size_absolute

Пример использования с отрицательными значениями:

.size_absolute {
  @include sizes-absolute(width, true);
}

Результат:

.size_absolute-01 { width: 0.1rem }
.size_absolute--01 { width: -0.1rem }
.size_absolute-02 { width: 0.2rem }
.size_absolute--02 { width: -0.2rem }
.size_absolute-025 { width: 0.25rem }
.size_absolute--025 { width: -0.25rem }
...

size_relative

Пример использования:

.size_relative {
  @include sizes-relative(width);
}

Результат:

.size_relative-10p { width: 10% }
.size_relative-10vw { width: 10vw }
.size_relative-10vh { width: 10vh }
...

Пример использования с указанием конкретных единиц:

.size_relative {
  @include sizes-relative(width, null, p);
}

Результат:

.size_relative-10p { width: 10% }
.size_relative-25p { width: 25% }
.size_relative-50p { width: 50% }
...

size_special

Пример использования:

.size_special {
  @include sizes-special(width);
}

Результат:

.size_special-xs { width: 0.25rem }
.size_special-sm { width: 0.5rem }
.size_special-md { width: 1rem }
...

media

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

.class {
  width: 0px;
  @include media(xs) {
    &.xs-1 { width: 10px }
    .xs-2 { width: 20px }
    @at-root .xs-3 { width: 30px }
    @at-root .xs-4 { width: 40px }
  };
}
.xs-5 {
  @include media(xs) {
    width: 50px
  }
}
.xs-6 {
  @include media(xs) {
    & { width: 60px }
  }
}
@include media(xs) {
  .xs-7 { width: 70px }
  .xs-8 { width: 80px }
}

Результат:

.class { width: 0px }
@media (min-width:480px) {
  .class.xs-1 { width: 10px }
  .class .xs-2 { width: 20px }
}
@media (min-width:480px) {
  .xs-3 { width: 30px }
}
@media (min-width:480px) {
  .xs-4 { width: 40px }
}
@media (min-width:480px) {
  .xs-5 { width: 50px }
}
@media (min-width:480px) {
  .xs-6 { width: 60px }
}
@media (min-width:480px) {
  .xs-7 { width: 70px }
  .xs-8 { width: 80px }
}

Пример использования с указанием ориентации:

.class {
  width: 0px;
  @include media(xs, portrait) {
    width: 20px
  };
}

Результат:

.class { width: 0px }
@media (min-width:480px) and (orientation: portrait) {
  .class { width: 20px }
}

^ к оглавлению

Дорожная карта

Сделать рефакторинг существующего кода:

  • привести все компоненты к общему виду;
  • вынести код модуля в миксин с контентом.

Сделать возможность подключения библиотеки через use для разделения пространства имен и подключения компонентов библиотеки для отдельного использования в других проектах.

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

Разработать недостающие компоненты библиотеки:

  • контейнер grid;
  • анимации.

Разработать библиотеки UI компонентов, которые будут доступны в виде SCSS и CSS файлов стилей:

  • material design;
  • bootstrap alternate.

Разработать библиотеки UI компонентов, которые будут включать в себя модули на js:

  • галерея;
  • слайдер;
  • модальные окна;
  • панель навигации;
  • и др.

Сделать возможность установки через менеджеры пакетов npm и yarn.

Сделать возможность подключения в качестве модулей для js-фреймворков:

  • Vue,
  • React,
  • Angular.

^ к оглавлению

Список изменений

0.1.0

Версия сильно переработана:

  • поменялась структура и обозначение классов;
  • поменялась адаптивная сетка;
  • упразднены все старые миксины и функции;
  • сделаны классы-шаблоны и они подключаются по-умолчанию;
  • классы теперь можно отключать;
  • появились короткие и полные имена классов;
  • появились контрольные точки для всех классов;
  • переделана модульная система, теперь модулей больше и можно указывать параметры:
    • включить/откючить классы в модуле,
    • включить/откючить полные имена классов модуля,
    • включить/откючить короткие имена классов модуля,
    • включить/откючить свойства hover и focus для классов модуля,
    • включить/откючить контрольные точки для классов модуля;
  • создана документация по всем классам, миксинам и функциям с примерами использования;
  • в документацию включено описание библиотеки и возможность ее использования с примерами и рекомендациями;
  • в документацию включен список изменений для каждой версии;
  • в документацию включена дорожная карта развития проекта.

0.0.1

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

^ к оглавлению

Ссылки

^ к оглавлению