Антон Тимчук
Front-end developer компанії stfalcon.com
— Методології CSS, особливості переваг та недоліки
— Оптимізація завантаження CSS
— Огляд інструментів для оптимізації роботи з CSS
15. Plain CSS
Нет системы именования селекторов
Много повторов кода
Сложности в поддержке и развитии
Огромные файлы CSS
Невозможно повторно использовать код
Много наследования классов
17. OOCSS
Разделение структуры и оформления
Разделение контейнера и контента
Модульность. Web-components - далеко.
Уменьшение вложенности селекторов
Возможно реиспользовать код
23. BEM (CSS)
Блок - элемент страницы со своей разметкой и стилями,
функциями
Элемент - часть блока не имеющая без него смысла.
Модификатор - фича модифицирующая блок, элемент
Все элементы блока начинаются с его имени
<div class=‘btn btn——orange’>
<div class=‘btn__price’>$9.99</div>
<div class=‘btn__text’>buy now</div>
</div>
btn {…} – блок
btn__price{…}- элемент
btn——orange{…} - модификатор
24. BEM плюсы
Отсутствие каскадирование
Web-componetns - ну почти.
Пространство имен и правила именования
Возможность реиспользовать код
Легче поддерживать и масштабировать
Снижение сложности кода + наглядность
+ Сборщики проектов
35. Чем проще селекторы тем лучше
.box:nth-last-child(-n+1) .title
.final-box-title
При модификации DOM. Сокращайте количество элементов для
которых нужно пересчитывать стили.
BEM помогает частично решить эту проблему
38. По возможности избегайте перерасчета макета
.box {
width: 20px;
height: 20px;
}
Перерасчет макета почти всегда выполняется для всего элемента
.box--expanded {
width: 200px;
height: 350px;
}
Чем больше DOM дерево тем затратное перерасчет макета. Старайтесь
минимизировать вложенность элементов
39. Прорисовка самый затратный процесс рендеринга
Position: transform: translate(npx, npx);
Scale: transform: scale(n);
Rotation: transform: rotate(ndeg);
Skew: transform: skew(X|Y)(ndeg);
Matrix: transform: matrix(3d)(…);
Opacity: opacity: 0…1;
Для анимации можно использовать requestAnimationFrame()