HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Разработка веб-страницы с точки зрения верстальщика - непрерывный процесс доработки и создания новых блоков. Чем больше проект, тем чаще происходит итерация "идея - функционал - вёрстка". Решая задачи бизнеса, стадии должны решаться быстро и качественно. И если качество вёрстки напрямую зависит от верстальщика, то скорость - фактор, который зависит от команды.</p>
1 <p>Разработка веб-страницы с точки зрения верстальщика - непрерывный процесс доработки и создания новых блоков. Чем больше проект, тем чаще происходит итерация "идея - функционал - вёрстка". Решая задачи бизнеса, стадии должны решаться быстро и качественно. И если качество вёрстки напрямую зависит от верстальщика, то скорость - фактор, который зависит от команды.</p>
2 <p>Для решения проблемы скорости разработчики постоянно придумывают новые инструменты. В среде верстальщиков таким инструментом стали CSS-фреймворки - набор готовых блоков, классов и внутренних функций, которые обеспечивают быструю и удобную разработку.</p>
2 <p>Для решения проблемы скорости разработчики постоянно придумывают новые инструменты. В среде верстальщиков таким инструментом стали CSS-фреймворки - набор готовых блоков, классов и внутренних функций, которые обеспечивают быструю и удобную разработку.</p>
3 <p>В 2010 году в недрах компании Twitter появился проект Twitter Blueprint. Его задачей было создание системы для разработки новых компонентов внутри компании. Twitter Blueprint имел набор базовых блоков с готовым дизайном, который использовался в компании. Это решение обрело популярность внутри компании благодаря своей простоте, так как любой сотрудник, имея минимальный опыт разработки, мог сделать новый концепт блока и предложить его для дальнейшей разработки.</p>
3 <p>В 2010 году в недрах компании Twitter появился проект Twitter Blueprint. Его задачей было создание системы для разработки новых компонентов внутри компании. Twitter Blueprint имел набор базовых блоков с готовым дизайном, который использовался в компании. Это решение обрело популярность внутри компании благодаря своей простоте, так как любой сотрудник, имея минимальный опыт разработки, мог сделать новый концепт блока и предложить его для дальнейшей разработки.</p>
4 <p>В этом же году на Twitter Hack Week проект обрёл первую популярность. Его заметили не только внутри компании, но и за её пределами. Такое решение не могло оставаться внутренней разработкой и уже в 2011 году проект вышел в открытый доступ под названием Bootstrap. С тех пор Bootstrap удерживает лидерство среди инструментов по созданию сайтов. По разным статистикам, фреймворк используют от 17 до 30% всех сайтов в интернете. Код Bootstrap можно найти на сайтах таких проектов, как:</p>
4 <p>В этом же году на Twitter Hack Week проект обрёл первую популярность. Его заметили не только внутри компании, но и за её пределами. Такое решение не могло оставаться внутренней разработкой и уже в 2011 году проект вышел в открытый доступ под названием Bootstrap. С тех пор Bootstrap удерживает лидерство среди инструментов по созданию сайтов. По разным статистикам, фреймворк используют от 17 до 30% всех сайтов в интернете. Код Bootstrap можно найти на сайтах таких проектов, как:</p>
5 <ul><li>Hexlet,</li>
5 <ul><li>Hexlet,</li>
6 <li>GitHub,</li>
6 <li>GitHub,</li>
7 <li>PayPal,</li>
7 <li>PayPal,</li>
8 <li>Spotify,</li>
8 <li>Spotify,</li>
9 <li>Twitter,</li>
9 <li>Twitter,</li>
10 <li>Duolingo.</li>
10 <li>Duolingo.</li>
11 </ul><p>Это далеко не весь список, который можно привести. Таким образом Bootstrap не является библиотекой для создания админок и прототипов, как о нём говорят.</p>
11 </ul><p>Это далеко не весь список, который можно привести. Таким образом Bootstrap не является библиотекой для создания админок и прототипов, как о нём говорят.</p>
12 <h2>Содержание</h2>
12 <h2>Содержание</h2>
13 <ul><li><a>Bootstrap как набор готовых элементов</a></li>
13 <ul><li><a>Bootstrap как набор готовых элементов</a></li>
14 <li><a>Bootstrap как фреймворк</a></li>
14 <li><a>Bootstrap как фреймворк</a></li>
15 <li><a>Выводы</a></li>
15 <li><a>Выводы</a></li>
16 <li><a>Дополнительные ссылки</a></li>
16 <li><a>Дополнительные ссылки</a></li>
17 </ul><h2>Bootstrap как набор готовых элементов</h2>
17 </ul><h2>Bootstrap как набор готовых элементов</h2>
18 <p>Одной из сторон Bootstrap является то, что его можно использовать исключительно как набор уже готовых элементов. Для этого не требуется серьёзных знаний HTML и CSS - достаточно уметь создавать самые простые страницы и прочитать документацию. Например, для создания кнопки используются два класса, один из которых отвечает за структуру кнопки, а другой за оформление. Такой подход называется<strong>OOCSS</strong>- Object Oriented CSS или объектно-ориентированный CSS. Про объектно-ориентированный подход CSS в блоге Hexlet есть<a>отдельная статья</a>.</p>
18 <p>Одной из сторон Bootstrap является то, что его можно использовать исключительно как набор уже готовых элементов. Для этого не требуется серьёзных знаний HTML и CSS - достаточно уметь создавать самые простые страницы и прочитать документацию. Например, для создания кнопки используются два класса, один из которых отвечает за структуру кнопки, а другой за оформление. Такой подход называется<strong>OOCSS</strong>- Object Oriented CSS или объектно-ориентированный CSS. Про объектно-ориентированный подход CSS в блоге Hexlet есть<a>отдельная статья</a>.</p>
19 <p>Второй подход, который используется в Bootstrap - Atomic CSS. На нём построены утилиты во фреймворке.<strong>Atomic CSS</strong>- подход, при котором один класс использует одно свойство.</p>
19 <p>Второй подход, который используется в Bootstrap - Atomic CSS. На нём построены утилиты во фреймворке.<strong>Atomic CSS</strong>- подход, при котором один класс использует одно свойство.</p>
20 <p>В этом примере тег &lt;section&gt; получит два свойства:</p>
20 <p>В этом примере тег &lt;section&gt; получит два свойства:</p>
21 <ol><li>background-color: #fff;</li>
21 <ol><li>background-color: #fff;</li>
22 <li>display: flex;.</li>
22 <li>display: flex;.</li>
23 </ol><p>Использование утилит предполагает более углублённые знания в CSS, так как это будет похоже на использование правил. Только вместо записи в CSS-файле используются классы.</p>
23 </ol><p>Использование утилит предполагает более углублённые знания в CSS, так как это будет похоже на использование правил. Только вместо записи в CSS-файле используются классы.</p>
24 <p>Компоненты и утилиты позволяют очень быстро создать проект различной сложности. Единственное, в чём вы будете ограничены - выбор дизайна. Если не заниматься переписыванием компонентов, то страница будет выглядеть в точности, как в документации. Это не минус, так как Bootstrap современный фреймворк и его дизайн не пугает при первом взгляде. Многие небольшие компании используют такой подход.</p>
24 <p>Компоненты и утилиты позволяют очень быстро создать проект различной сложности. Единственное, в чём вы будете ограничены - выбор дизайна. Если не заниматься переписыванием компонентов, то страница будет выглядеть в точности, как в документации. Это не минус, так как Bootstrap современный фреймворк и его дизайн не пугает при первом взгляде. Многие небольшие компании используют такой подход.</p>
25 <h3>Плюсы использования Bootstrap как набора готовых элементов</h3>
25 <h3>Плюсы использования Bootstrap как набора готовых элементов</h3>
26 <h4>Скорость</h4>
26 <h4>Скорость</h4>
27 <p>Процесс разработки сопровождается непрерывной работой по добавлению или удалению функционала на странице. Чем крупнее проект, тем чаще происходят эти процессы и скорость реализации не в последнюю очередь зависит от того, как скоро функционал "обрастёт" внешним видом. Используя готовые компоненты и утилиты Bootstrap, можно быстро ввести новый функционал на сайт и дать его пользователям. Таким образом, это решает одну из проблем цикла "идея - функционал - вёрстка".</p>
27 <p>Процесс разработки сопровождается непрерывной работой по добавлению или удалению функционала на странице. Чем крупнее проект, тем чаще происходят эти процессы и скорость реализации не в последнюю очередь зависит от того, как скоро функционал "обрастёт" внешним видом. Используя готовые компоненты и утилиты Bootstrap, можно быстро ввести новый функционал на сайт и дать его пользователям. Таким образом, это решает одну из проблем цикла "идея - функционал - вёрстка".</p>
28 <h4>Кроссбраузерность</h4>
28 <h4>Кроссбраузерность</h4>
29 <p>В веб-пространстве множество различных браузеров: Chrome, Firefox, Edge, Opera, Safari и т.д. Они предоставляют пользователям комфортный веб-сёрфинг. Но каждый из этих браузеров может обрабатывать HTML и CSS немного по-своему, из-за чего верстальщикам необходимо приводить стандартные элементы к единому виду. Такая задача требует скрупулёзного подхода и знания частых проблем и отличий браузеров между собой. Компоненты Bootstrap учитывают различия браузеров и оптимизированы таким образом, чтобы минимизировать различия между ними.</p>
29 <p>В веб-пространстве множество различных браузеров: Chrome, Firefox, Edge, Opera, Safari и т.д. Они предоставляют пользователям комфортный веб-сёрфинг. Но каждый из этих браузеров может обрабатывать HTML и CSS немного по-своему, из-за чего верстальщикам необходимо приводить стандартные элементы к единому виду. Такая задача требует скрупулёзного подхода и знания частых проблем и отличий браузеров между собой. Компоненты Bootstrap учитывают различия браузеров и оптимизированы таким образом, чтобы минимизировать различия между ними.</p>
30 <h4>Адаптивность</h4>
30 <h4>Адаптивность</h4>
31 <p>Bootstrap имеет готовую 12-колоночную сетку, по которой можно располагать компоненты. Сетка является самым популярным компонентом бутстрап и её используют даже те, кто скептически относится к фреймворку. Сетка использует подход, при котором возможно сразу настроить адаптивность. Используя готовые компоненты, можно быть уверенным в том, что они будут хорошо отображаться на разных устройствах.</p>
31 <p>Bootstrap имеет готовую 12-колоночную сетку, по которой можно располагать компоненты. Сетка является самым популярным компонентом бутстрап и её используют даже те, кто скептически относится к фреймворку. Сетка использует подход, при котором возможно сразу настроить адаптивность. Используя готовые компоненты, можно быть уверенным в том, что они будут хорошо отображаться на разных устройствах.</p>
32 <h4>Доступность</h4>
32 <h4>Доступность</h4>
33 <p>Разработчики уделяют внимание использованию страниц с компонентами людьми с ограниченными возможностями. Документация описывает ситуации, как сделать компонент доступным. Но и без этого компоненты имеют базовую доступность. Один из самых полезных классов, связанный с доступностью - .sr-only. Он позволяет скрыть элемент для всех устройств, кроме скринридера. Это важно для правильной организации вёрстки форм на сайте.</p>
33 <p>Разработчики уделяют внимание использованию страниц с компонентами людьми с ограниченными возможностями. Документация описывает ситуации, как сделать компонент доступным. Но и без этого компоненты имеют базовую доступность. Один из самых полезных классов, связанный с доступностью - .sr-only. Он позволяет скрыть элемент для всех устройств, кроме скринридера. Это важно для правильной организации вёрстки форм на сайте.</p>
34 <h4>Низкий порог вхождения</h4>
34 <h4>Низкий порог вхождения</h4>
35 <p>Создание страницы по компонентам не требует экспертного знания HTML и CSS. Это позволяет создавать новые блоки не только верстальщику, но и любому работнику компании, который знает базовые основы вёрстки. Таким образом, разработчики могут оснастить новое решение готовой вёрсткой с использованием фреймворка. Bootstrap также может пригодиться небольшим компаниям, которые не готовы тратить большие деньги на разработку веб-сайта. В качестве промежуточного решения Bootstrap будет незаменим. Впоследствии можно и остановиться на нём, как мы и сделали на Хекслете.</p>
35 <p>Создание страницы по компонентам не требует экспертного знания HTML и CSS. Это позволяет создавать новые блоки не только верстальщику, но и любому работнику компании, который знает базовые основы вёрстки. Таким образом, разработчики могут оснастить новое решение готовой вёрсткой с использованием фреймворка. Bootstrap также может пригодиться небольшим компаниям, которые не готовы тратить большие деньги на разработку веб-сайта. В качестве промежуточного решения Bootstrap будет незаменим. Впоследствии можно и остановиться на нём, как мы и сделали на Хекслете.</p>
36 <h3>Минусы использования Bootstrap как набора готовых элементов</h3>
36 <h3>Минусы использования Bootstrap как набора готовых элементов</h3>
37 <h4>Вес проекта</h4>
37 <h4>Вес проекта</h4>
38 <p>Фреймворк Bootstrap даёт не только набор классов, но и интерактивные компоненты. Для их работы используется несколько JavaScript-библиотек, которые увеличивают вес подключаемых файлов на странице. Bootstrap 4 вместе с библиотеками JavaScript весит ~ 300кб. Это может стать критичной точкой при разработке мобильных приложений, ориентированных на использование при слабом интернет-соединении. Примером таких приложений могут быть материалы для оказания экстренной помощи, вызова спасательных служб и так далее.</p>
38 <p>Фреймворк Bootstrap даёт не только набор классов, но и интерактивные компоненты. Для их работы используется несколько JavaScript-библиотек, которые увеличивают вес подключаемых файлов на странице. Bootstrap 4 вместе с библиотеками JavaScript весит ~ 300кб. Это может стать критичной точкой при разработке мобильных приложений, ориентированных на использование при слабом интернет-соединении. Примером таких приложений могут быть материалы для оказания экстренной помощи, вызова спасательных служб и так далее.</p>
39 <h4>Дизайн</h4>
39 <h4>Дизайн</h4>
40 <p>Стандартные компоненты накладывают ограничения на дизайн. Эти рамки выражены в том, что компоненты возможно расширять только вглубь, вставляя одни компоненты внутрь других. Модификация компонентов потребует знаний в вёрстке, так как даже незначительные изменения необходимо проверить в браузерах и на разных разрешениях. При этом дизайн стандартных компонентов Bootstrap лаконичен и является примером для дизайнера. При своей простоте они функциональны и помогают правильно подать информацию. Даже в таких ограничениях создаются красивые и удобные сайты за счёт грамотной работы с UI.</p>
40 <p>Стандартные компоненты накладывают ограничения на дизайн. Эти рамки выражены в том, что компоненты возможно расширять только вглубь, вставляя одни компоненты внутрь других. Модификация компонентов потребует знаний в вёрстке, так как даже незначительные изменения необходимо проверить в браузерах и на разных разрешениях. При этом дизайн стандартных компонентов Bootstrap лаконичен и является примером для дизайнера. При своей простоте они функциональны и помогают правильно подать информацию. Даже в таких ограничениях создаются красивые и удобные сайты за счёт грамотной работы с UI.</p>
41 <h4>Функционал</h4>
41 <h4>Функционал</h4>
42 <p>Как и в случае с дизайном, функционал блоков определён заранее и изменение приводит к существенным доработкам. Это касается и интерактивных элементов, которые используют JavaScript-код. Разработчики добавили для таких элементов классы, которые помогают немного изменить поведение, но этого не всегда бывает достаточно.</p>
42 <p>Как и в случае с дизайном, функционал блоков определён заранее и изменение приводит к существенным доработкам. Это касается и интерактивных элементов, которые используют JavaScript-код. Разработчики добавили для таких элементов классы, которые помогают немного изменить поведение, но этого не всегда бывает достаточно.</p>
43 <h2>Bootstrap как фреймворк</h2>
43 <h2>Bootstrap как фреймворк</h2>
44 <p>Помимо средств разработки, таких как набор компонентов и утилит, Bootstrap предлагает широкие возможности по созданию пользовательских компонентов. Это достигается за счёт большой кодовой базы в исходниках.</p>
44 <p>Помимо средств разработки, таких как набор компонентов и утилит, Bootstrap предлагает широкие возможности по созданию пользовательских компонентов. Это достигается за счёт большой кодовой базы в исходниках.</p>
45 <p>Что же такое фреймворк? Можно представить это как каркас будущего приложения. Своеобразным фундаментом, на котором мы возведём стены, установим окна и заставим мебелью. Таким фундаментом и является Bootstrap. В нём находятся десятки функций и миксинов, которые позволят верстальщику создать свою собственную дизайн-систему. Этот функционал является самым недооценённым среди разработчиков и по этой причине о Bootstrap сформировалось неправильное мнение.</p>
45 <p>Что же такое фреймворк? Можно представить это как каркас будущего приложения. Своеобразным фундаментом, на котором мы возведём стены, установим окна и заставим мебелью. Таким фундаментом и является Bootstrap. В нём находятся десятки функций и миксинов, которые позволят верстальщику создать свою собственную дизайн-систему. Этот функционал является самым недооценённым среди разработчиков и по этой причине о Bootstrap сформировалось неправильное мнение.</p>
46 <p>Представьте себе новый компонент, который разработчик добавляет на страницу. Используя бутстрап, зачастую разработка ведётся следующим образом:</p>
46 <p>Представьте себе новый компонент, который разработчик добавляет на страницу. Используя бутстрап, зачастую разработка ведётся следующим образом:</p>
47 <ul><li>Подбираются похожие компоненты из документации.</li>
47 <ul><li>Подбираются похожие компоненты из документации.</li>
48 <li>Подбираются новые классы для создания новых стилей.</li>
48 <li>Подбираются новые классы для создания новых стилей.</li>
49 <li>В дополнительном CSS файле перезаписываются и добавляются новые стили для блока.</li>
49 <li>В дополнительном CSS файле перезаписываются и добавляются новые стили для блока.</li>
50 </ul><p>При таком подходе, даже получив необходимые блоки, разработчик решит только ближайшую задачу, но может испытать трудности на дистанции. Все они связаны с отсутствием взаимодействия между компонентом и фреймворком:</p>
50 </ul><p>При таком подходе, даже получив необходимые блоки, разработчик решит только ближайшую задачу, но может испытать трудности на дистанции. Все они связаны с отсутствием взаимодействия между компонентом и фреймворком:</p>
51 <ul><li>Обновление кодовой базы Bootstrap никак не повлияет на поведение компонента. Разработчики постоянно обновляют версии, внося множество улучшений и исправляя ошибки.</li>
51 <ul><li>Обновление кодовой базы Bootstrap никак не повлияет на поведение компонента. Разработчики постоянно обновляют версии, внося множество улучшений и исправляя ошибки.</li>
52 <li>Изменение настроек не повлияет на компонент. Распространённая ситуация - смена цветовой схемы. Возникает необходимость править цвета у каждого пользовательского компонента вручную.</li>
52 <li>Изменение настроек не повлияет на компонент. Распространённая ситуация - смена цветовой схемы. Возникает необходимость править цвета у каждого пользовательского компонента вручную.</li>
53 <li>Генерация новых утилит превращается в дублирование кода, без создания системы. Таким образом могут создавать новые утилиты для цвета фона и текста.</li>
53 <li>Генерация новых утилит превращается в дублирование кода, без создания системы. Таким образом могут создавать новые утилиты для цвета фона и текста.</li>
54 </ul><p>Создание утилит, начиная с Bootstrap 5, решается добавлением нового массива, который передаётся в обработчик, отдавая на выходе новые классы. А как создаётся новый компонент? В большинстве случаев достаточно внимательно пройтись по файлу<em>_variables.scss</em></p>
54 </ul><p>Создание утилит, начиная с Bootstrap 5, решается добавлением нового массива, который передаётся в обработчик, отдавая на выходе новые классы. А как создаётся новый компонент? В большинстве случаев достаточно внимательно пройтись по файлу<em>_variables.scss</em></p>
55 <p>Что там можно обнаружить? Например, цвета, которые используются в качестве цветовой схемы:</p>
55 <p>Что там можно обнаружить? Например, цвета, которые используются в качестве цветовой схемы:</p>
56 <p>Цветов в файле<em>_variables.scss</em>намного больше, но именно эти формируют базовую цветовую схему проекта. Вы можете добавить новые цвета, определить их в качестве базовых и после компиляции все компоненты и утилиты получат новые значения. Именно такое поведение отличает фреймворк от простого набора готовых компонентов.</p>
56 <p>Цветов в файле<em>_variables.scss</em>намного больше, но именно эти формируют базовую цветовую схему проекта. Вы можете добавить новые цвета, определить их в качестве базовых и после компиляции все компоненты и утилиты получат новые значения. Именно такое поведение отличает фреймворк от простого набора готовых компонентов.</p>
57 <p>Такая работа с Bootstrap позволит создать нечто большее, чем просто прототип, лендинг или панель администратора. На Hexlet в качестве третьего проекта по вёрстке Bootstrap используется для создания внешнего вида полноценного чата.</p>
57 <p>Такая работа с Bootstrap позволит создать нечто большее, чем просто прототип, лендинг или панель администратора. На Hexlet в качестве третьего проекта по вёрстке Bootstrap используется для создания внешнего вида полноценного чата.</p>
58 <p>Так как Bootstrap является набором функций и миксинов, то это снимает преграды его использования вместе с другими методологиями. Например, c БЭМ. Это распространённое мнение, что использовать бутстрап вместе с БЭМ невозможно. Взгляните на следующие миксины, которые доступны для создания сетки:</p>
58 <p>Так как Bootstrap является набором функций и миксинов, то это снимает преграды его использования вместе с другими методологиями. Например, c БЭМ. Это распространённое мнение, что использовать бутстрап вместе с БЭМ невозможно. Взгляните на следующие миксины, которые доступны для создания сетки:</p>
59 <p>Если вы уже работали с Bootstrap, то в этих названиях найдёте привычную схему "Контейнер → строка → колонка". Используя эти миксины, можно добавить логику фреймворка в абсолютно любой проект и не привязываться к именованию.</p>
59 <p>Если вы уже работали с Bootstrap, то в этих названиях найдёте привычную схему "Контейнер → строка → колонка". Используя эти миксины, можно добавить логику фреймворка в абсолютно любой проект и не привязываться к именованию.</p>
60 <p>Таким образом, можно добавлять не только элементы сетки, но и доступные компоненты и утилиты. При этом после компиляции не будет необходимости нести за собой множество кода, который не используется.</p>
60 <p>Таким образом, можно добавлять не только элементы сетки, но и доступные компоненты и утилиты. При этом после компиляции не будет необходимости нести за собой множество кода, который не используется.</p>
61 <h2>Выводы</h2>
61 <h2>Выводы</h2>
62 <p>Изучение Bootstrap может сильно развить вас как разработчика. Ведь кроме написания кода, можно изучать и чужой, который создан и поддерживается тысячами людей по всему миру. В коде можно найти интересные решения, грамотное структурирование и множество полезных функций. Благодаря этому Bootstrap можно использовать во множестве сценариев: от создания прототипов, до вёрстки сложных макетов, а возможность использования отдельных частей позволяет добавить частичку Bootstrap в проект без необходимости переделывания структуры.</p>
62 <p>Изучение Bootstrap может сильно развить вас как разработчика. Ведь кроме написания кода, можно изучать и чужой, который создан и поддерживается тысячами людей по всему миру. В коде можно найти интересные решения, грамотное структурирование и множество полезных функций. Благодаря этому Bootstrap можно использовать во множестве сценариев: от создания прототипов, до вёрстки сложных макетов, а возможность использования отдельных частей позволяет добавить частичку Bootstrap в проект без необходимости переделывания структуры.</p>
63 <h2>Дополнительные ссылки</h2>
63 <h2>Дополнительные ссылки</h2>
64 <ul><li><a>Документация Bootstrap</a></li>
64 <ul><li><a>Документация Bootstrap</a></li>
65 <li><a>Репозиторий Bootstrap</a></li>
65 <li><a>Репозиторий Bootstrap</a></li>
66 <li><a>Bootstrap 5: Основы верстки</a></li>
66 <li><a>Bootstrap 5: Основы верстки</a></li>
67 </ul>
67 </ul>