{"componentChunkName":"component---src-templates-post-js","path":"/html-css/kak-ya-perestal-ispolzovat-bootstrap-v-ugodu-css-grid/","result":{"pageContext":{"slug":"kak-ya-perestal-ispolzovat-bootstrap-v-ugodu-css-grid","content":"\n<p>Лично я считаю, что в плане веба, Bootstrap ещё рано полностью заменять на CSS Grid. Но перевел эту статью с точки зрения перспективы на будущее, которое уже далеко не за горами.</p>\n\n\n\n<p class=\"author\"><em>Перевод статьи&nbsp;</em><a href=\"https://blog.theodo.fr/2018/03/stop-using-bootstrap-layout-thanks-to-css-grid/?ct=t(hamail_20180515)\"><em>How I stopped using Bootstrap’s layout thanks to CSS Grid</em></a></p>\n\n\n\n<h2 id=\"59ff\">Почему я перестал использовать Bootstrap?</h2>\n\n\n\n<p id=\"97aa\">Bootstrap требует слишком много писанины: вам нужно наплодить много <code>div</code>’ов, даже если вам нужно сделать в макете всего два блока.</p>\n\n\n\n<p id=\"45f1\">Дела становятся еще хуже, когда вы добавляете адаптивность</p>\n\n\n\n<p id=\"f444\">Или когда вы хотите переместить блоки</p>\n\n\n\n<p id=\"c653\">Сетка Bootstrap ограничена 12-ю колонками</p>\n\n\n\n<p id=\"1bf6\">По дефолту, у Boostrap&nbsp;<code>10px</code>&nbsp;внутренние отступы, которые довольно сложно переписать.</p>\n\n\n\n<p id=\"7018\">Bootstrap должен скачиваться со стороны пользователя, что тормозит ваш сайт.</p>\n\n\n\n<h2 id=\"de96\">Как создать разметку для сайта без Bootstrap?</h2>\n\n\n\n<p id=\"3561\">Предположим, что у вас есть следующий шаблон, который вам нужно интегрировать:</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"295\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/02/1_GExAbQYr_tSQ5-HlmtG4lw.png\" alt=\"\" class=\"wp-image-205\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/02/1_GExAbQYr_tSQ5-HlmtG4lw.png 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/02/1_GExAbQYr_tSQ5-HlmtG4lw-300x126.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<h3><strong>Как бы это выглядело с Bootstrap:</strong></h3>\n\n\n\n<pre class=\"wp-block-code html\"><code>&lt;body>\n  &lt;div class=\"container\">\n    &lt;div class=\"row\">\n      &lt;div class=\"col-12 header\">...&lt;/div>\n    &lt;/div>\n    &lt;div class=\"row\">\n      &lt;div class=\"col-4 navigation-menu\">...&lt;/div>\n      &lt;div class=\"col-8 main-content\">...&lt;/div>\n    &lt;/div>\n    &lt;div class=\"row\">\n      &lt;div class=\"col-12 footer\">...&lt;/div>\n    &lt;/div>\n  &lt;/div>\n&lt;/body></code></pre>\n\n\n\n<p>Хоть у вас всего четыре блока, вам понадобилось аж 9&nbsp;<code>div</code>’ов, чтобы закодить ваш шаблон.</p>\n\n\n\n<h3 id=\"f99b\">Как бы просто это выглядело с CSS Grid</h3>\n\n\n\n<p id=\"d68a\">Спасибо гридам, вы можете получить тот же результат с помощью всего четырёх&nbsp;<code>div</code>’ов.</p>\n\n\n\n<pre class=\"wp-block-code html\"><code>&lt;body>\n  &lt;div class=\"container\">\n    &lt;div class=\"header\">...&lt;/div>\n    &lt;div class=\"navigation-menu\">...&lt;/div>\n    &lt;div class=\"main-content\">...&lt;/div>\n    &lt;div class=\"footer\">...&lt;/div>\n  &lt;/div>\n&lt;/body></code></pre>\n\n\n\n<p>Хоть это не так просто как с импортом в Bootstrap, но вам надо будет добавить некоторые дополнительные CSS стили.</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>.container {\n  display: grid;\n  grid-template-columns: repeat(12, 1fr);\n}\n.header {\n  grid-column: span 12;\n}\n.navigation-menu {\n  grid-column: span 4;\n}\n.main-content {\n  grid-column: span 8;\n}\n.footer {\n  grid-column: span 12;\n}</code></pre>\n\n\n\n<p>На примере выше, вы сначала определили 12-ти колоночный контейнер в гридах. А затем выставили количество строк, через которые будет проходить элемент.</p>\n\n\n\n<h2 id=\"d8a8\"><strong>Что там у нас с адаптивностью?</strong></h2>\n\n\n\n<p id=\"6661\">Более того, помимо простой версии, скорее всего вам понадобится адаптивность шаблона не только под смартфоны, но и под планшеты.</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"478\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/02/1_GyKr6Hd8wKnQC_ACgq5IXQ.png\" alt=\"\" class=\"wp-image-206\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/02/1_GyKr6Hd8wKnQC_ACgq5IXQ.png 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/02/1_GyKr6Hd8wKnQC_ACgq5IXQ-300x205.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<h3 id=\"7b1a\"><strong>С Bootstrap это будет выглядеть так</strong></h3>\n\n\n\n<p id=\"6854\">Чем сложнее становится дизайн, тем сложнее и запутанней становится ваш HTML c всё большим и большим количеством классов:</p>\n\n\n\n<pre class=\"wp-block-code html\"><code>&lt;body>\n  &lt;div class=\"container\">\n    &lt;div class=\"row\">\n      &lt;div class=\"col-xs-12 header\">...&lt;/div>\n    &lt;/div>\n    &lt;div class=\"row\">\n      &lt;div class=\"col-xs-12 col-md-6 col-lg-4 navigation-menu\">...&lt;/div>\n      &lt;div class=\"col-xs-12 col-md-6 col-lg-8 main-content\">...&lt;/div>\n    &lt;/div>\n    &lt;div class=\"row\">\n      &lt;div class=\"col-xs-12 footer\">...&lt;/div>\n    &lt;/div>\n  &lt;/div>\n&lt;/body></code></pre>\n\n\n\n<h3 id=\"6fcf\"><strong>На CSS Grid</strong></h3>\n\n\n\n<p id=\"0866\">Если вы хотите добавить адаптивность вашему шаблону, то впринципе нет нужды в замене HTML.</p>\n\n\n\n<p id=\"7415\">Вам только лишь надо добавить некоторые медиа запросы в ваш CSS:</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>...\n@media screen and (max-width: 768px) {\n  .navigation-menu {\n    grid-column: span 6;\n  }\n  .main-content {\n    grid-column: span 6;\n  }\n}\n@media screen and (max-width: 480px) {\n  .navigation-menu {\n    grid-column: span 12;\n  }\n  .main-content {\n    grid-column: span 12;\n  }\n}</code></pre>\n\n\n\n<h1 id=\"6ffc\"><strong>А как насчет подвигать блоки?</strong></h1>\n\n\n\n<p id=\"c3fa\">Скажем, к примеру, что вместо на мобильных устройствах вы хотите навигационную панель над шапкой:</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"478\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/02/1_ndnFvkhKgfhMqrOY9YdE7A.png\" alt=\"\" class=\"wp-image-207\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/02/1_ndnFvkhKgfhMqrOY9YdE7A.png 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/02/1_ndnFvkhKgfhMqrOY9YdE7A-300x205.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<p>На Bootstrap это бы выглядело так. Вам надо было бы продублировать ваше меню, спрятать одно и показывать другое на мобильных телефонах, а другое на десктопах соответственно.</p>\n\n\n\n<pre class=\"wp-block-code html\"><code>&lt;body>\n  &lt;div class=\"container\">\n    &lt;div class=\"row\">\n      &lt;div class=\"col-xs-12 hidden-sm-up navigation-menu-mobile\">...&lt;/div>\n      &lt;div class=\"col-xs-12 header\">...&lt;/div>\n    &lt;/div>\n    &lt;div class=\"row\">\n      &lt;div class=\"col-md-6 col-lg-4 hidden-xs-down navigation-menu\">...&lt;/div>\n      &lt;div class=\"col-xs-12 col-md-6 col-lg-8 main-content\">...&lt;/div>\n    &lt;/div>\n    &lt;div class=\"row\">\n      &lt;div class=\"col-xs-12 footer\">...&lt;/div>\n    &lt;/div>\n  &lt;/div>\n&lt;/body></code></pre>\n\n\n\n<p>И само собой, HTML станет все больше и сложнее с ростом шаблона.</p>\n\n\n\n<h3 id=\"7b33\">С CSS Grid</h3>\n\n\n\n<p id=\"99b3\">Вам нужна только одна строчка CSS, чтобы передвинуть меню навигации наверх и вот как:</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>...\n@media screen and (max-width: 480px) {\n  .navigation-menu {\n    grid-row: 1;\n    grid-column: span 12;\n  }\n  ...\n}</code></pre>\n\n\n\n<h2 id=\"ac95\">Настраиваем ваш грид шаблон!</h2>\n\n\n\n<p id=\"8b6d\">Имейте столько колонок, сколько хотите.</p>\n\n\n\n<p id=\"22fa\">По-дефолту, Bootstrap идет с 12-ти колоночной системой сеток. Это значение может быть переписано, но если вы так сделаете, это будет переписано везде в приложении.</p>\n\n\n\n<p id=\"e9ef\">С другой стороны, с CSS Grid, вы можете указать количество колонок на строку для каждого вашего грида.</p>\n\n\n\n<p id=\"1efb\">В&nbsp;<code>grid-template-columns: repeat(12, 1fr);</code>&nbsp;вы можете просто указать число колонок, которые вы хотите вместо 12ти.</p>\n\n\n\n<h3 id=\"6baa\"><strong>Нежелательные 10px внутренние отступы</strong></h3>\n\n\n\n<p id=\"515c\">Колонки в Bootstrap имеют&nbsp;<code>10px</code>&nbsp;внутренние отступы слева и справа. Самое лучшее решение тут, это переписать их используя&nbsp;<code>padding-right: 0 !important;</code>&nbsp;и&nbsp;<code>padding-left: 0 !important;</code></p>\n\n\n\n<p id=\"3e2f\">С CSS Grid шаблоном, вам надо контролировать все CSS классы, вы можете выставлять внутренние отступы везде где вам надо.</p>\n\n\n\n<h2 id=\"8a2d\">Больше нет нужды скачивать библиотеку</h2>\n\n\n\n<p id=\"f437\">Даже если таблица стилей Bootstrap весит всего несколько килобайт, она затормозит загрузку вашей страницы.</p>\n\n\n\n<p id=\"6cd3\">Все основные браузеры поставляются с поддержкой CSS Grid, начиная с 2017, так что нет нужды скачивать какие-либо дополнительные CSS, чтобы использовать гриды.</p>\n\n\n\n<p id=\"a407\">На время обновления статьи, уже&nbsp;<strong>95.47% браузеров</strong>&nbsp;поддерживали CSS Grid.</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1024\" height=\"403\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/02/Screenshot-2021-02-09-at-17.43.08-1024x403.png\" alt=\"\" class=\"wp-image-208\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/02/Screenshot-2021-02-09-at-17.43.08-1024x403.png 1024w, https://stasonmars.ru/wp/wp-content/uploads/2021/02/Screenshot-2021-02-09-at-17.43.08-300x118.png 300w, https://stasonmars.ru/wp/wp-content/uploads/2021/02/Screenshot-2021-02-09-at-17.43.08-768x303.png 768w, https://stasonmars.ru/wp/wp-content/uploads/2021/02/Screenshot-2021-02-09-at-17.43.08.png 1282w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" /></figure>\n","type":"html-css","date":"2021-02-09T15:47:23.000Z","acf":{"seo_desc":"В этой статье вы узнаете как можно заменить сетку на Bootstrap, сделав её на CSS Grid","pub_date":"2018-05-23","keywords":"CSS Grid, замена Bootstrap на CSS Grid, Bootstrap CSS Grid","tags":"CSS, Bootstrap, CSS Grid"},"title":"Как я перестал использовать Bootstrap в угоду CSS Grid","id":"44017478-841a-56f8-a8b6-7fafa871a426","excerpt":"<p>В этой статье вы узнаете как можно заменить сетку на Bootstrap, сделав её на CSS Grid</p>\n","featured_media":{"source_url":"https://stasonmars.ru/wp/wp-content/uploads/2021/02/gridbootstrpafnksdnf.jpg"},"interesting":[{"title":"Как я перестал использовать Bootstrap в угоду CSS Grid","slug":"kak-ya-perestal-ispolzovat-bootstrap-v-ugodu-css-grid","type":"html-css"}]}},"staticQueryHashes":["3576131997","63159454"]}