{"componentChunkName":"component---src-templates-post-js","path":"/html-css/viewport-edinitsy-v-css/","result":{"pageContext":{"slug":"viewport-edinitsy-v-css","content":"\n<p>В этой статье вы узнаете про единицы вьюпорта в CSS и варианты их применения.</p>\n\n\n\n<p class=\"author\"><em>Перевод&nbsp;</em><a rel=\"noreferrer noopener\" href=\"https://ishadeed.com/article/viewport-units/\" target=\"_blank\"><em>CSS Viewport Units</em></a></p>\n\n\n\n<p>Viewport единицы уже существуют несколько лет и со временем я вижу рост их применения другими разработчиками. Их полезность заключается в том, что они дают нам возможность выставлять размеры гибким и динамическим образом, без прямого использования JavaScript. Также, для них легко сделать фоллбэк в случае отсутствия поддержки браузером.</p>\n\n\n\n<h2 id=\"84d4\"><strong>Интро</strong></h2>\n\n\n\n<p id=\"32cd\">В соответствии со спецификацией CSS, процентные вьюпорт единицы относительны размеру изначального блок контейнера, который сам по себе является корневым элементом страницы.</p>\n\n\n\n<p id=\"f029\">Viewport единицы это&nbsp;<code>vw</code>,&nbsp;<code>vh</code>,&nbsp;<code>vmin</code>&nbsp;и&nbsp;<code>vmax</code>.</p>\n\n\n\n<h3 id=\"d6cb\"><strong>Viewport ширина</strong></h3>\n\n\n\n<p id=\"6247\">Единица&nbsp;<code>vw</code>&nbsp;представляет собой процентное измерение ширины корневого элемента. Один&nbsp;<code>vw</code>&nbsp;равен 1% ширины вьюпорта.</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"312\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_L2AVtkxRhUB7zoiajq2NAg.png\" alt=\"\" class=\"wp-image-132\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_L2AVtkxRhUB7zoiajq2NAg.png 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_L2AVtkxRhUB7zoiajq2NAg-300x134.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<p>Тут у нас есть элемент с таким CSS:</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>.element {\n    width: 50vw;\n}</code></pre>\n\n\n\n<p>Когда ширина вьюпорта равна&nbsp;<code>500px</code>, то&nbsp;<code>50vw</code>&nbsp;будут высчитаны таким образом:</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>width = 500*50% = 250px</code></pre>\n\n\n\n<h3 id=\"eb6a\"><strong>Viewport высота</strong></h3>\n\n\n\n<p id=\"332a\">Единица&nbsp;<code>vh</code>&nbsp;представляет собой процентное измерение высоты корневого элемента. Один&nbsp;<code>vh</code>&nbsp;равен 1% высоты вьюпорта.</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"312\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_kc2g2fzTx3SAkcph9NBt-A.png\" alt=\"\" class=\"wp-image-133\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_kc2g2fzTx3SAkcph9NBt-A.png 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_kc2g2fzTx3SAkcph9NBt-A-300x134.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<p>У нас есть элемент с таким CSS:</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>.element {\n    height: 50vh;\n}</code></pre>\n\n\n\n<p>Если высота вьюпорта равна&nbsp;<code>290px</code>, то&nbsp;<code>70vh</code>&nbsp;будет высчитано следующим образом:</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>height = 290*70% = 202px</code></pre>\n\n\n\n<p>Вот и всё! Теперь давайте взглянем на другие единицы.</p>\n\n\n\n<h3 id=\"0e5e\"><strong>Vmin</strong></h3>\n\n\n\n<p id=\"9294\">Эта единица является минимумом ширины или высоты вьюпорта. Если ширина вьюпорта больше его высоты, то значение единицы будет высчитано, основываясь на высоте.</p>\n\n\n\n<p id=\"4a7a\">Давайте посмотрим на пример ниже.</p>\n\n\n\n<p id=\"1579\">У нас есть мобильный телефон в лэндскейп режиме и у элемента на странице есть такая единица как&nbsp;<code>vmin</code>. В этом случае, значение будет высчитано по высоте вьюпорта, так как оно меньше ширины.</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1024\" height=\"552\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_DDoJrXcoVX5loBUkMc17FQ-1024x552.png\" alt=\"\" class=\"wp-image-134\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_DDoJrXcoVX5loBUkMc17FQ-1024x552.png 1024w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_DDoJrXcoVX5loBUkMc17FQ-300x162.png 300w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_DDoJrXcoVX5loBUkMc17FQ-768x414.png 768w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_DDoJrXcoVX5loBUkMc17FQ.png 1368w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" /></figure>\n\n\n\n<pre class=\"wp-block-code css\"><code>.element {\n    padding-top: 10vmin;\n    padding-bottom: 10vmin;\n}</code></pre>\n\n\n\n<p>Вот как она будет считаться:</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"376\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_J_Wol0-88jy5cRj7211gKQ.png\" alt=\"\" class=\"wp-image-135\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_J_Wol0-88jy5cRj7211gKQ.png 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_J_Wol0-88jy5cRj7211gKQ-300x161.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<p>Как вы уже могли предположить, результат будет считаться таким образом:</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>padding-top = (10% of height) = 10% * 164 = 16.4px \npadding-bottom = (10% of height) = 10% * 164 = 16.4px</code></pre>\n\n\n\n<h3 id=\"1c49\"><strong>Vmax</strong></h3>\n\n\n\n<p id=\"f9f2\">Это прямая противоположность&nbsp;<code>vmin</code>. Значение считается основываясь на максимальной ширине и высоте.</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"601\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_v-p6MyuVPBKae9ZiIZXufA.png\" alt=\"\" class=\"wp-image-136\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_v-p6MyuVPBKae9ZiIZXufA.png 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_v-p6MyuVPBKae9ZiIZXufA-300x258.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<p>Давайте посмотрим на пример:</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>.element {\n    padding-top: 10vmax;\n    padding-bottom: 10vmax;\n}</code></pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"376\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_INb5s2nv253EyecbEkCBxQ.png\" alt=\"\" class=\"wp-image-137\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_INb5s2nv253EyecbEkCBxQ.png 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_INb5s2nv253EyecbEkCBxQ-300x161.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<p>Результат бы был высчитан таким образом:</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>padding-top = (10% of width) = 10% * 350 = 35px\npadding-bottom = (10% of width) = 10% * 350 = px</code></pre>\n\n\n\n<h2 id=\"e9a0\"><strong>Как viewport единицы отличаются от процентов?</strong></h2>\n\n\n\n<p id=\"efe7\">Они берут за основу корневой элемент страницы, в то время как проценты основаны на размере своего контейнера. Поэтому они и отличаются друг от друга и каждый имеет свойственные себе примеры использования.</p>\n\n\n\n<h2 id=\"f662\"><strong>Примеры использования viewport единиц</strong></h2>\n\n\n\n<p id=\"2abb\">В следующих секциях мы посмотрим на некоторые примеры использования единиц viewport и на то, как их применять в ваших рабочих проектах.</p>\n\n\n\n<h3><strong>Размер шрифта</strong></h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"265\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_5itbhe1WrKZly_Ju2zXPbw.png\" alt=\"\" class=\"wp-image-138\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_5itbhe1WrKZly_Ju2zXPbw.png 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_5itbhe1WrKZly_Ju2zXPbw-300x114.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<p>Единицы вьюпорта идеальны для адаптивной типографики. Для примера, мы можем использовать следующий код для заголовка статьи:</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>.title {\n    font-size: 5vw;\n}</code></pre>\n\n\n\n<p id=\"d0d1\">Размер заголовка будет увеличиваться или уменьшаться в зависимости от ширины вьюпорта. Это как будто бы мы выдали размеру шрифта 5% ширины страницы. Однако, как бы не хотелось, а надо протестировать и смотрим,&nbsp;<a href=\"https://ishadeed.com/assets/viewport-units/font-size-issue.mp4\" target=\"_blank\" rel=\"noreferrer noopener\">что получается</a>.</p>\n\n\n\n<p id=\"12f0\">Обратите внимание, что шрифт стал очень мелким при мобильных размерах, это очень плохо в плане доступности и UX. Насколько я знаю, минимальный размер шрифта на мобильных устройствах не должен быть ниже&nbsp;<code>14px</code>. А там у нас выходит уже ниже&nbsp;<code>10px</code>.</p>\n\n\n\n<p id=\"a05a\">Чтобы решить эту проблему, нам надо дать заголовку минимальный размер шрифта, который не может быть меньше положенной нормы. И тут CSS&nbsp;<code>calc()</code>&nbsp;спешит на помощь!</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>.title {\n    font-size: calc(14px + 2vw);\n}</code></pre>\n\n\n\n<p id=\"a957\">У функции&nbsp;<code>calc()</code>&nbsp;будет основное значение и оно добавит к нему&nbsp;<code>2vw</code>. Учитывая это, размер шрифта точно не будет слишком маленьким.</p>\n\n\n\n<p id=\"40aa\">Ещё стоит рассмотреть то, как себя будет вести размер шрифта на больших экранах, к примеру на 27” аймаках. Что будет? Ну вы уже наверное предположили. Размер шрифта бахнет аж в&nbsp;<code>95px</code>, что само по себе уже кошмар. Чтобы предохраниться от этой ситуации мы можем использовать медиа запросы на определённых брейкпоинтах и менять размеры шрифтов.</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>@media (min-width: 1800px) {\n    .title {\n        font-size: 40px;\n    }\n}</code></pre>\n\n\n\n<p>Сбрасывая&nbsp;<code>font-size</code>&nbsp;мы можем быть уверены в том, что размер шрифта не будет слишком большим. Тут возможно вам понадобится несколько медиа запросов, но это сугубо ваше личное дело когда и как их использовать в контексте проекта.</p>\n\n\n\n<h3 id=\"f459\"><strong>Полноэкранные секции</strong></h3>\n\n\n\n<p id=\"33d4\">Иногда нам надо, чтобы секция забирала 100% высоты виюпорта. Это так называемые полноэкранные секции. Для их создания мы можем использовать вьюпорт единицу высоты.</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>.section {\n    height: 100vh;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    align-items: center;\n}</code></pre>\n\n\n\n<p>Добавив&nbsp;<code>height: 100vh</code>, мы можем точно убедиться в том, высота секции будет в 100% высоту вьюпорта. Также, тут я добавил немного флексбокса, чтобы отцентровать контент вертикально и горизонтально.</p>\n\n\n\n<h3 id=\"b414\"><strong>Прилипающий футер</strong></h3>\n\n\n\n<p id=\"0dc6\">На больших экранах вы могли уже обратить внимание на то, что футер не прилипает к концу страницы. Ну и это нормально. Это даже не рассматривается как плохая практика. Однако, тут у нас есть пространство для улучшений. Давайте рассмотрим следующий кейс, в котором и происходит эта ошибка.</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"405\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_S-PyPpXWDVK0_Cx9h9mEZQ.png\" alt=\"\" class=\"wp-image-139\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_S-PyPpXWDVK0_Cx9h9mEZQ.png 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_S-PyPpXWDVK0_Cx9h9mEZQ-300x174.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<p>Чтобы её решить, нам нужно отдать основному контенту высоту, равную разнице между высотой вьюпорта и суммой хедера и футера. Динамически это довольно хитрая операция, но с помощью единиц вьюпорта всё становится довольно быстро и понятно.</p>\n\n\n\n<h3 id=\"eefd\"><strong>Первое решение: calc и единицы вьюпорта</strong></h3>\n\n\n\n<p id=\"74f4\">Если высота хедера и футера фиксированны, то их можно совместить с помощью функции&nbsp;<code>calc()</code>:</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>header,\nfooter {\n    height: 70px;\n}\n\nmain {\n    height: calc(100vh - 70px - 70px);\n}</code></pre>\n\n\n\n<p id=\"138c\">Это решение не гарантирует того, что оно будет всегда работать, особенно для футера. За всю свою карьеру я никогда не использовал футер с фиксированной высотой, потому что это просто непрактично, особенно на разных размерах экранов.</p>\n\n\n\n<h3 id=\"29f7\"><strong>Второе решение: Flexbox и вьюпорт единицы (рекомендуемое)</strong></h3>\n\n\n\n<p id=\"1f4c\">Добавляя&nbsp;<code>100vh</code>&nbsp;как высоту для&nbsp;<code>body</code>&nbsp;элемента, мы можем использовать флексы для того, чтобы основной контент занимал всё оставшееся место.</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>body {\n    min-height: 100vh;\n    display: flex\n    flex-direction: column;\n{\n\nmain {\n    flex-grow: 1;\n}</code></pre>\n\n\n\n<p>С учетом этого, наша проблема решена и у нас есть прилипающий футер вне зависимости от длины контента.</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"405\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_GZPj18NGgpdOsrwiY7TP2w.png\" alt=\"\" class=\"wp-image-140\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_GZPj18NGgpdOsrwiY7TP2w.png 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_GZPj18NGgpdOsrwiY7TP2w-300x174.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<h3 id=\"0eff\"><strong>Адаптивные элементы</strong></h3>\n\n\n\n<p id=\"6ec4\">Занимаясь подготовкой материала я наткнулся на&nbsp;<a href=\"https://properdesign.co.uk/grid-viewport-units-site-previews/\" target=\"_blank\" rel=\"noreferrer noopener\">эту статью</a>&nbsp;и она мне реально понравилась. Так что я возьму пример использования оттуда и объясню его своим способом.</p>\n\n\n\n<p id=\"5e73\">Предположим, что у нас есть портфолио для того, чтобы показать свои адаптивные работы и у нас имеется три типа устройства (мобильные, планшеты и ноутбук). В каждом устройстве есть по изображению. Суть в том, чтобы сделать этот контент 100% отзывчивым на CSS.</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"365\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_1v5lqmbFRzLL_OJ6rLRnhQ.png\" alt=\"\" class=\"wp-image-141\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_1v5lqmbFRzLL_OJ6rLRnhQ.png 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_1v5lqmbFRzLL_OJ6rLRnhQ-300x156.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<p>Используя гриды и единицы вьюпорта, мы можем сделать это адаптивным и динамическим.</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>&lt;div class=\"wrapper\">\n  &lt;div class=\"device laptop\">&lt;/div>\n  &lt;div class=\"device mobile\">&lt;/div>\n  &lt;div class=\"device tablet\">&lt;/div>\n&lt;/div></code></pre>\n\n\n\n<p>Обратите внимание, что вьюпорт единицы используются в grid-* свойствах. Они также используются для&nbsp;<code>border</code>,&nbsp;<code>border-radius</code>&nbsp;и других свойств. Всё это приведет к флюидному дизайну.</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>.wrapper {\n  display: grid;\n  grid-template-columns: repeat(20, 5vw); \n  grid-auto-rows: 6vw;\n}\n\n.mobile { \n  position: relative;\n  z-index: 1;\n  grid-column: 2 / span 3;\n  grid-row: 3 / span 5;\n}\n \n.tablet {\n  position: relative;\n  z-index: 1;\n  grid-column: 13 / span 7; \n  grid-row: 4 / span 4;\n  border-bottom: 1vw solid #a9B9dd;\n  border-right: solid 3vw #a9B9dd;\n}\n \n.laptop {\n  position: relative;\n  grid-column: 3/span 13;\n  grid-row: 2 / span 8;\n}\n\n.laptop:after {\n    content:\"\";\n    position:absolute;\n    bottom: -3vw;\n    left: -5.5vw;\n    right: -5.5vw;\n    height: 3vw;\n    background-color: #a9B9dd;\n    border-radius: 0 0 1vw 1vw;\n}</code></pre>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https://ishadeed.com/assets/viewport-units/devices.mp4\" target=\"_blank\">Видео пример</a></p>\n\n\n\n<h3 id=\"437a\"><strong>Выходим за пределы контейнера</strong></h3>\n\n\n\n<p id=\"4f10\">Я обратил внимание на случай, который больше всего подходит для редакторских шаблонов. А именно когда дочерний элемент забирает 100% ширины вьюпорта, хотя его родитель ограничен в ней. Давайте рассмотрим пример ниже:</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"359\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_DjtxL4aIngGA5J05fH7HbQ.png\" alt=\"\" class=\"wp-image-142\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_DjtxL4aIngGA5J05fH7HbQ.png 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_DjtxL4aIngGA5J05fH7HbQ-300x154.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<p>Чтобы достигнуть такого же эффекта, мы можем использовать вьюпорт единицы и свойства позиционирования. Вот наш CSS:</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>.break-out {\n    width: 100vw;\n    position: relative;\n    left: 50%;\n    right: 50%;\n    margin-left: -50vw;\n    margin-right: -50vw;\n}</code></pre>\n\n\n\n<p>Давайте разберем всё по полочкам и поймём как это работает.</p>\n\n\n\n<p><strong>Добавляем&nbsp;</strong><code><strong>width: 100vw</strong></code></p>\n\n\n\n<p>Самый важный шаг, который даст изображению ширину равную 100% вьюпорта.</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"359\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_vTFWpH84uKolcHE5MhO8sw.jpeg\" alt=\"\" class=\"wp-image-143\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_vTFWpH84uKolcHE5MhO8sw.jpeg 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_vTFWpH84uKolcHE5MhO8sw-300x154.jpeg 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<p><strong>Добавляем&nbsp;</strong><code><strong>margin-left: -50vw</strong></code></p>\n\n\n\n<p>Чтобы отцентровать изображение, нам понадобится выдать отрицательный маргин с половиной ширины вьюпорта.</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"359\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_7m757QtQai0rfpEoDHRT6A.jpeg\" alt=\"\" class=\"wp-image-144\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_7m757QtQai0rfpEoDHRT6A.jpeg 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_7m757QtQai0rfpEoDHRT6A-300x154.jpeg 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<p><strong>Добавляем&nbsp;</strong><code><strong>left: 50%</strong></code></p>\n\n\n\n<p>И наконец, мы отодвинем изображение в правую сторону со значением 50% от ширины его родителя.</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"333\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_10qY852nZN2HUDjBOf_eNQ.jpeg\" alt=\"\" class=\"wp-image-145\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_10qY852nZN2HUDjBOf_eNQ.jpeg 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_10qY852nZN2HUDjBOf_eNQ-300x143.jpeg 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<h2 id=\"2366\"><strong>Вертикальный и горизонтальный спейсинг</strong></h2>\n\n\n\n<p id=\"8141\">Ещё один интересный пример, а именно использование вьюпорт единиц для спейсинга между элементами. Его можно использовать с таким значениями как&nbsp;<code>margin</code>,&nbsp;<code>top</code>,&nbsp;<code>bottom</code>&nbsp;и&nbsp;<code>grid-gap</code>. Применяя его, спейсинг будет основываться на ширине вьюпорта и его высоте, что может быть крайне полезным для создания динамических шаблонов.</p>\n\n\n\n<h3 id=\"3efb\"><strong>Модалка</strong></h3>\n\n\n\n<p id=\"632b\">В случае с модалками нам надо отталкивать их с самого верха вьюпорта. Зачастую я делал это с помощью свойства&nbsp;<code>top</code>&nbsp;и процентов с пикселями. Однако, с единицами вьюпорта, мы можем добавить спейсинг, который может меняться, основываясь на высоте самого вьюпорта.</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"444\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_p23BlRWcD1yDxCF46-hnJg.png\" alt=\"\" class=\"wp-image-146\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_p23BlRWcD1yDxCF46-hnJg.png 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_p23BlRWcD1yDxCF46-hnJg-300x190.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<pre class=\"wp-block-code css\"><code>.modal-body {\n    top: 20vh;\n}</code></pre>\n\n\n\n<p>Посмотрите&nbsp;<a rel=\"noreferrer noopener\" href=\"https://ishadeed.com/assets/viewport-units/spacing-modal-final.mp4\" target=\"_blank\">это видео</a>, чтобы посмотреть на результат.</p>\n\n\n\n<h3 id=\"c259\"><strong>Шапка</strong></h3>\n\n\n\n<p id=\"d9f5\">Шапка это секция, которая показывает нам общую картину на странице или сайте. Часто там есть заголовок и описание, и среди этого всего есть фиксированная высота и падинги для верха и подвала страницы. Тут нам интересны падинги.</p>\n\n\n\n<p id=\"f242\">Для примера, вот как выглядит CSS:</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>.page-header {\n    padding-top: 1rem;\n    padding-bottom: 1rem;\n}\n\n@media (min-width: 800px) {\n    .page-header {\n        padding-top: 4rem;\n        padding-bottom: 4rem;\n    }\n}</code></pre>\n\n\n\n<p>Вертикальный паддинг довольно мал на мобильных устройствах и он становится больше на больших вьюпортах. Как насчет использования единиц вьюпорта? Давайте посмотрим на это.</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>.page-header {\n    padding-top: 10vh;\n    padding-bottom: 10vh;\n}\n\n.page-header h2 {\n    margin-bottom: 1.5vh;\n}</code></pre>\n\n\n\n<p>Я использовал&nbsp;<code>vh</code>&nbsp;для паддинга в шапке и маргина под заголовком. Обратите внимание&nbsp;<a rel=\"noreferrer noopener\" href=\"https://ishadeed.com/assets/viewport-units/spacing-page-header.mp4\" target=\"_blank\">как меняется спейсинг</a>!</p>\n\n\n\n<h3 id=\"879e\"><strong>Сетка из нескольких элементов</strong></h3>\n\n\n\n<p id=\"5307\">Ещё один пример динамического спейсинга можно применить в сетке из нескольких элементов. Тут может быть всё: статьи, секции контента, услуги и тп. В нашем примере мы посмотрим на то, как можно использовать вьюпорт единицы для сетки из статей.</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"428\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_n4PxGmabRTUM_ZQAtZICNA.png\" alt=\"\" class=\"wp-image-147\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_n4PxGmabRTUM_ZQAtZICNA.png 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_n4PxGmabRTUM_ZQAtZICNA-300x183.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<p>Используя их в&nbsp;<code>grid-gap</code>, мы можем получить желаемый результат. Обратите внимание, что я применял функцию&nbsp;<code>calc()</code>. Суть использования&nbsp;<code>calc()</code>&nbsp;в том, чтобы у нас уже был базис для вертикального и горизонтального промежутков.</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>.wrapper {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n    grid-gap: calc(14px + 1vh) calc(14px + 0.5vw);\n}</code></pre>\n\n\n\n<h3 id=\"1654\"><strong>Vmin и Vmax — примеры использования</strong></h3>\n\n\n\n<p id=\"8479\">Изучая примеры использования для этих двух единиц, я не нашёл ничего, только этот пример из&nbsp;<a href=\"https://css-tricks.com/simple-little-use-case-vmin/\" target=\"_blank\" rel=\"noreferrer noopener\">CSS-tricks</a>.</p>\n\n\n\n<p id=\"ac67\">Этот пример показывает возможность работы с верхним и нижним паддингом в шапке элемента. Паддинг зачастую слишком сокращен, когда вьюпорт довольно мал. Используя&nbsp;<code>vmin</code>, мы можем иметь флюидные верхние и нижние паддинги, которые основываются на вьюпорте с маленькими размерами.</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>.page-header {\n    padding: 10vmin 1rem;\n}</code></pre>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https://ishadeed.com/assets/viewport-units/vmin-use.mp4\" target=\"_blank\">Пример</a></p>\n\n\n\n<h2 id=\"d6e3\"><strong>Вертикальные медиа запросы и единицы вьюпорта</strong></h2>\n\n\n\n<p id=\"1645\">Несколько лет назад я написал статью о&nbsp;<a href=\"https://ishadeed.com/article/vertical-media-queries/\" target=\"_blank\" rel=\"noreferrer noopener\">вертикальных медиа запросах</a>.</p>\n\n\n\n<p id=\"d796\">Сейчас я хочу пролить свет на эту тему, так как она имеет прямое отношение к статье, которую вы сейчас читаете.</p>\n\n\n\n<h3 id=\"824b\"><strong>Секции на всю высоту экрана в Landscape режиме</strong></h3>\n\n\n\n<p id=\"9201\">Используя вертикальные медиа запросы мы можем проверять находится ли девайс пользователя в лэндскэйп режиме. Если так, то тогда не будет смысла иметь секцию, занимающую всю высоту вьюпорта, применяя&nbsp;<code>height: 100vh</code>.</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"337\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_qgPdQB23xvXBNy4YBtWKAw.png\" alt=\"\" class=\"wp-image-148\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_qgPdQB23xvXBNy4YBtWKAw.png 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_qgPdQB23xvXBNy4YBtWKAw-300x144.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<p>Чтобы решить эту проблему, мы можем сделать следующее.</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>@media (min-height: 400px) {\n    .section {\n        height: 100vh;\n    }\n}</code></pre>\n\n\n\n<p>Или мы можем использовать&nbsp;<code>orientation</code>&nbsp;в медиа запросах:</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>@media (orientation: landscape) {\n    .section {\n        height: 100vh;\n    }\n}</code></pre>\n\n\n\n<h3 id=\"bfcd\"><strong>Соотношение сторон</strong></h3>\n\n\n\n<p id=\"b3e3\">Мы можем использовать&nbsp;<code>vh</code>&nbsp;для создания адаптивных элементов, которые поддерживают актуальное состояние соотношения сторон вне зависимости от размера вьюпорта. Давайте на это посмотрим.</p>\n\n\n\n<p id=\"68e1\">Нам нужно решить, какое соотношение сторон нам нужно. Для примера,&nbsp;<em>9/16</em>.</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>section {\n    /* 9/16 * 100 */\n    height: 56.25vw;\n}</code></pre>\n\n\n\n<p><a href=\"https://codepen.io/shadeed/pen/dc4e82f3c873cc64ae5c5bc4a3f4ef9f\">Пример</a></p>\n\n\n\n<h3 id=\"e4ab\"><strong>Используем единицы вьюпорта для графических элементов</strong></h3>\n\n\n\n<p id=\"5dbc\">Я не уверен правильно ли я назвал это, но надеюсь, что вы поймете суть следующих графических примеров.</p>\n\n\n\n<p id=\"50d7\">Довольно популярный подход с верхним бордером</p>\n\n\n\n<p id=\"05b4\">Вы знали, что верхний бордер один из самых используемых элементов на веб сайтах к сегодняшнему дню? В основном его цвет, это такой же как и основной цвет страницы.</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"327\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_4x1A2_WWsg8UKpz3_OTUeA.png\" alt=\"\" class=\"wp-image-149\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_4x1A2_WWsg8UKpz3_OTUeA.png 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_4x1A2_WWsg8UKpz3_OTUeA-300x140.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<p>Давайте сделаем изначальным значением бордера&nbsp;<code>3px</code>. Как конвертировать это фиксированное значение в вьюпорт единицу? Вот как можно это посчитать:</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>vw = (Pixel Value / Viewport width) * 100</code></pre>\n\n\n\n<p id=\"5e20\">Ширина вьюпорта используется для расчета отношения между пикселями и vw единицей.</p>\n\n\n\n<p id=\"2d36\">Для примера, вот как добавлен верхний бордер:</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>.header {\n    border-top: 4px solid #8f7ebc;  \n}</code></pre>\n\n\n\n<p>В моём случае ширина вьюпорта равна&nbsp;<em>1440</em>.</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>vw = (4 / 1440) * 100 = 0.277\n</code></pre>\n\n\n\n<p>И вот такой CSS мы получим:</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>.header {\n    border-top: 0.277vw solid #8f7ebc;  \n}</code></pre>\n\n\n\n<p>Даже лучше, мы можем использовать основное значение в пикселях и единицу вьюпорта.</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>.header {\n    border-top: calc(2px + 0.138vw) solid $color-main;\n}</code></pre>\n\n\n\n<h3 id=\"12a6\"><strong>Нумерация секций</strong></h3>\n\n\n\n<p id=\"b3ca\">Для элементов секций с каунтером или иконкой, мы можем тоже применить единицы вьюпорта. Посмотрите на макет ниже:</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"127\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_1VR3NGEF5a-xfJkS0mJUOA.png\" alt=\"\" class=\"wp-image-150\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_1VR3NGEF5a-xfJkS0mJUOA.png 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_1VR3NGEF5a-xfJkS0mJUOA-300x54.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<pre class=\"wp-block-code css\"><code>/**\n1. Используем гибкое значение для flex, width и height свойств.\n2. line-height используется для центровки текста вертикально.\n3. Размер шрифта.\n4. Расстояние между кругом и текстом\n**/\n.point:before {\n    flex: 0 0 calc(24px + 4vw); /* &#91;1] */\n    width: calc(24px + 4vw); /* &#91;1] */\n    height: calc(24px + 4vw); /* &#91;1] */\n    line-height: calc(24px + 4vw); /* &#91;2] */\n    font-size: calc(14px + 1vw); /* &#91;3] */\n    margin-right: calc(10px + 0.5vw); /* &#91;4] */\n}</code></pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"328\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_6KQUVxezgQKBjuObN8yf5g.png\" alt=\"\" class=\"wp-image-151\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_6KQUVxezgQKBjuObN8yf5g.png 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_6KQUVxezgQKBjuObN8yf5g-300x141.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<p><a href=\"https://codepen.io/shadeed/pen/ca6ffb8b39c03ef7683eb15a7d53e195\">Пример</a></p>\n\n\n\n<h3 id=\"207e\"><strong>Viewport Units Watcher</strong></h3>\n\n\n\n<p id=\"d1c8\">Я сделал инструмент, которые помогает мне в проверке высчитанного значения элементов у единиц вьюпорта. Посмотрите ниже:</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"395\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_DmeKMXjoSmVPcmJ-uOu3zQ.png\" alt=\"\" class=\"wp-image-152\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_DmeKMXjoSmVPcmJ-uOu3zQ.png 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_DmeKMXjoSmVPcmJ-uOu3zQ-300x169.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<p>Я добавил имя класса и свойство для каждого элемента и при смене размеров вьюпорта, значение будут динамически обновляться. Это куда лучше, чем использование DevTools и высчитывание каждого отдельного элемента.</p>\n\n\n\n<p><a href=\"https://codepen.io/shadeed/pen/a531488bfdb9056b27f92f5dd190d257\">Пример</a></p>\n\n\n\n<h3 id=\"f4cf\"><strong>Проблема со скроллом на мобильных устройствах</strong></h3>\n\n\n\n<p id=\"41ce\">Есть распространенная проблема на мобильных устройствах, которая касается скролла, даже если используется&nbsp;<code>100vh</code>. Проблема тут в том, что адресная строка находится во вьюхе. Луис Хобрегс написал статью об этом и показал простое и легкое её решение.</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>.my-element {\n  height: 100vh;\n  height: calc(var(--vh, 1vh) * 100);\n}</code></pre>\n\n\n\n<p>А теперь js:</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>let vh = window.innerHeight * 0.01;\ndocument.documentElement.style.setProperty('--vh', `${vh}px`);</code></pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"577\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_u3KmHDsW72H43eSr3-9row.png\" alt=\"\" class=\"wp-image-153\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_u3KmHDsW72H43eSr3-9row.png 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_u3KmHDsW72H43eSr3-9row-300x247.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<h3 id=\"1656\"><strong>Использование 100vw как антипаттерн</strong></h3>\n\n\n\n<p id=\"a856\">Применяя&nbsp;<code>100vw</code>&nbsp;для того, чтобы выдать элементу полную ширину вьюпорта, всё у вас будет отлично работать на Mac OS, так как вертикальный скроллбар там спрятан по-дефолту. Как результат, ширина скроллбара добавлена полной ширине.</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"497\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_PQ2GypNHM9GOKCRbYDR-fQ.png\" alt=\"\" class=\"wp-image-154\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_PQ2GypNHM9GOKCRbYDR-fQ.png 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_PQ2GypNHM9GOKCRbYDR-fQ-300x213.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<p>Однако, пользователи Windows обратят внимание на то, что появился горизонтальный скроллинг. Почему? Потому что ширина скроллбара была добавлена ширине экрана. Скажем, что вы добавили такой CSS:</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>.element {\n    width: 100vw;\n}</code></pre>\n\n\n\n<p>На Windows, высчитанная ширина&nbsp;<code>.element</code>&nbsp;будет равна&nbsp;<code>100vw + 8.5px</code>, где&nbsp;<code>8.5px</code>&nbsp;это ширина вертикального скроллбара.</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"700\" height=\"497\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_nVyFuQ04gY-d8HTc62L3Zg.png\" alt=\"\" class=\"wp-image-155\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_nVyFuQ04gY-d8HTc62L3Zg.png 700w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_nVyFuQ04gY-d8HTc62L3Zg-300x213.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" /></figure>\n\n\n\n<p id=\"a386\">Насколько я знаю, то пока что нет конкретного решения этой проблемы без использования JavaScript, применение которого тут я не советую. Лучше избегать&nbsp;<code>100vw</code>&nbsp;и использовать альтернативу. Для примера, мы можем применить CSS Grid, чтобы элемент вышел за пределы контейнера, посмотрите на решение&nbsp;<a href=\"https://cloudfour.com/thinks/breaking-out-with-css-grid-layout/\" target=\"_blank\" rel=\"noreferrer noopener\">в этой статье</a>.</p>\n\n\n\n<p id=\"630e\">Спасибо Крису Моргану и Килиану Валкхофу за то, что предупредили меня об этой проблеме.</p>\n\n\n\n<h2 id=\"3a36\"><strong>Доступность это важно</strong></h2>\n\n\n\n<p id=\"f883\">Используя единицы вьюпорта довольно часто на вашем проекте, например для создание всего макета, доступность становится очень важной. Когда шаблон зумится ближе или отдаляется, элементы с единицами вьюпорат не будут увеличиваться или уменьшаться как вы ожидали. Это станет проблемой для пользователей, которые полагались на зум в браузере.</p>\n\n\n\n<p id=\"7e30\">По словам Сары Суейдан, использование единиц вьюпорта для размеров шрифтов это плохая практика в плане доступности. Лучше комбинировать их с фиксированными значениями, как описано ниже:</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>.title {\n    font-size: calc(16px + .3vw);\n}</code></pre>\n\n\n\n<p>Даже лучше, мы можем использовать CSS единицы&nbsp;<code>em</code>&nbsp;и&nbsp;<code>rem</code>, вместо&nbsp;<code>px</code>. Таким образом у нас будет больше контроля при изменении размера шрифта.</p>\n\n\n\n<pre class=\"wp-block-code css\"><code>.title {\n    font-size: calc(1rem + .3vw);\n}</code></pre>\n\n\n\n<p>И это будет хорошо. Пожалуйста, убедитесь в том, что использование единиц вьюпорта подходит для того, что вы делаете и не забывайте хорошо тестировать.</p>\n\n\n\n<h2 id=\"9627\"><strong>Полезные инструменты</strong></h2>\n\n\n\n<p id=\"4eb0\">Я нашёл этот&nbsp;<a href=\"https://pxtovw.dev-calc.space/\" target=\"_blank\" rel=\"noreferrer noopener\">полезный конвертер</a>&nbsp;из&nbsp;<code>px</code>&nbsp;в&nbsp;<code>vw</code>, который может помочь вам в вашем проекте.</p>\n\n\n\n<p id=\"006b\">У вас есть какие-нибудь полезные инструменты?&nbsp;<a href=\"https://twitter.com/shadeed9\" target=\"_blank\" rel=\"noreferrer noopener\">Дайте мне знать</a>.</p>\n\n\n\n<h2 id=\"689e\"><strong>Ресурсы и связанные статьи</strong></h2>\n\n\n\n<figure class=\"wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-css-tricks\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"eoiGe0U9AQ\"><a href=\"https://css-tricks.com/full-width-containers-limited-width-parents/\">Full Width Containers in Limited Width Parents</a></blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Full Width Containers in Limited Width Parents&#8221; &#8212; CSS-Tricks\" src=\"https://css-tricks.com/full-width-containers-limited-width-parents/embed/#?secret=eoiGe0U9AQ\" data-secret=\"eoiGe0U9AQ\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"></iframe>\n</div></figure>\n\n\n\n<figure class=\"wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-css-tricks\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"oB8GE8ZKsE\"><a href=\"https://css-tricks.com/fun-viewport-units/\">Fun with Viewport Units</a></blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Fun with Viewport Units&#8221; &#8212; CSS-Tricks\" src=\"https://css-tricks.com/fun-viewport-units/embed/#?secret=oB8GE8ZKsE\" data-secret=\"oB8GE8ZKsE\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"></iframe>\n</div></figure>\n\n\n\n<figure class=\"wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-css-tricks\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"WyoDXQ1KXI\"><a href=\"https://css-tricks.com/simple-little-use-case-vmin/\">Simple Little Use Case for `vmin`</a></blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Simple Little Use Case for `vmin`&#8221; &#8212; CSS-Tricks\" src=\"https://css-tricks.com/simple-little-use-case-vmin/embed/#?secret=WyoDXQ1KXI\" data-secret=\"WyoDXQ1KXI\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"></iframe>\n</div></figure>\n\n\n\n<h2 id=\"d589\"><strong>Заключение</strong></h2>\n\n\n\n<p id=\"669b\">Это всё. У вас есть какие-нибудь комментарии и предложения? Пишите автору на&nbsp;<a href=\"https://twitter.com/shadeed9\" target=\"_blank\" rel=\"noreferrer noopener\">shadeed9</a>.</p>\n","type":"html-css","date":"2021-01-27T17:38:57.000Z","acf":{"seo_desc":"В этой статье вы узнаете про единицы вьюпорта в CSS и варианты их применения.","pub_date":"2020-04-09","keywords":"viewports css, viewport в css, единицы viewport в css","tags":"CSS, Viewport единицы"},"title":"Viewport единицы в CSS","id":"b8a232fa-254e-5bfa-8f47-687718f3808a","excerpt":"<p>В этой статье вы узнаете про единицы вьюпорта в CSS и варианты их применения.</p>\n","featured_media":{"source_url":"https://stasonmars.ru/wp/wp-content/uploads/2021/01/viewportcssjnkjn.jpg"},"interesting":[{"title":"CSS свойство background-image как антипаттерн","slug":"css-svoistvo-background-image-kak-antipattern","type":"html-css"},{"title":"7 примеров использования CSS переменных","slug":"7-primerov-ispolzovaniya-css-peremennyh","type":"html-css"},{"title":"Стандарты написания гибкого, надежного и жизнеспособного HTML c CSS","slug":"standarty-napisaniya-gibkogo-nadezhnogo-i-zhiznesposobnogo-html-s-css","type":"html-css"}]}},"staticQueryHashes":["3576131997","63159454"]}