Тебе не нужен Bootstrap! Или нужен? Или все же не нужен?

Тебе не нужен Bootstrap!

Или нужен? Или все же не нужен?

Александра Шинкевич
@neesoglasnaja

Кто я?

Bootstrap - это...

Уход Bootstrap из Twitter
https://expo.getbootstrap.com
http://3d.miu.by/

Почему не нужен Bootstrap?

Проблемы Open Source

#плохо

Проблемы Open Source

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

#плохо
.btn {
  /* ... */
  cursor: if($enable-pointer-cursor-for-buttons, pointer, null);
  @include button-size($btn-padding-y, $btn-padding-x,
     $btn-font-size, $btn-border-radius);
}
https://youtu.be/-DvdYLWnPhc

Методология наименования

#плохо
State of CSS #methodologies

jQuery

#плохо
В 5 версии не будет. Работа идет

Использовать Bootstrap в 2019?

Почему Bootstrap

Версии для JS фреймворков...

...полностью переписаны!

Что хорошо в Bootstrap?

Типографика

#ну_ок

Типографика

UI kit по заголовкам и текстовым стилям

Сделай UI Kit со стилями типографики

#justdoit

Семантика

#ну_ок

Верстай семантично

#justdoit
Семантика для циников, Вадим Макеев

a11y

#ну_ок

Верстай
доступно

#justdoit

Макетные сетки

#ну_ок

Макетные сетки
=
визуальный порядок

Расскажи дизайнеру о сетках

#justdoit

RWD и MF

#ну_ок

*Responsive Web Design и Mobile First

Mobile First и Desktop First

/* Mobile First */
@media (min-width: ...) { ... }
/* Desktop First */
@media (max-width: ...) { ... }
Расстановка элементов без media-запросов

Начни делать Mobile First!

#justdoit

Кроссбраузерность

#ну_ок
Browsers and devices

Тестируй код кроссбраузерно

Тестирование фронтенда для разработчиков
#justdoit

Хочу ___ от Bootstrap. Как правильно?

/* Required */
@import "../node_modules/bootstrap/scss/functions";
@import "../node_modules/bootstrap/scss/variables";
@import "../node_modules/bootstrap/scss/mixins";
/* Optional */
@import "../node_modules/bootstrap/scss/type";
@import "../node_modules/bootstrap/scss/images";
@import "../node_modules/bootstrap/scss/grid";
...

Исходники Bootstrap как вдохновение

#justdoit

А если превратить любой проект в UI библиотеку?

Плохой дизайн сложно превратить в хороший CSS фреймворк

Без UI Kit...

...всё будет ОЧЕНЬ ПЛОХО

https://css-minsk-js.by

Проект состоит из...

https://youtu.be/gBgS5Fzhe5c

Неструктурированный код сложно превратить в хороший CSS фреймворк

Компоненты

  1. Кнопки

DRY

Почему Custom Properties?

Пользовательские свойства как основа архитектуры CSS, Павел Ловцевич
https://caniuse.com/#feat=css-variables
https://caniuse.com/#feat=css-grid

Сетка Bootstrap

CSS Grid + Custom Properties

#justdoit
AweCSSome Grid Framework

Responsive Images

<picture>
  <source srcset="..." type="image/svg+xml">
  <img src="..." class="img-fluid img-thumbnail" alt="...">
</picture>

srcset

<img srcset="img-320w.jpg 320w,
            img-480w.jpg 480w,
            img-800w.jpg 800w"
    sizes="(max-width: 320px) 280px,
           (max-width: 480px) 440px,
           800px"
    src="img-800w.jpg" alt="...">

Экономь трафик пользователя

#justdoit

А если на проект приходит новый разработчик?

davidhund/styleguide-generators

https://github.com/morishitter/postcss-style-guide
postcss([
  ...,
  styleGuide({
      project: 'Project name',
      dest: 'styleguide/index.html',
      showCode: false,
      themePath: '../'
  }),
  ...
])
/* @styleguide
   @title Button
   Use the button classes on ...
   <button class="button button--large">Large Button</button>
     <button class="button button--large">Large Button</button>
*/
.button {
   /* ... */
}

Вуаля!

Когда брать чужое?

Подводя итог