<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>worldwide open-source software - software:development:web:docs:learn:css:css_layout</title>
        <description></description>
        <link>http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/</link>
        <lastBuildDate>Thu, 09 Apr 2026 17:45:27 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:logo.png</url>
            <title>worldwide open-source software</title>
            <link>http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/</link>
        </image>
        <item>
            <title>responsive_design</title>
            <link>http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?id=software:development:web:docs:learn:css:css_layout:responsive_design&amp;rev=1694021397</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;отзывчивый_дизайн&quot;&gt;Отзывчивый дизайн&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
На заре веб-дизайна страницы создавались для экрана определённого размера. Если у пользователя был экран большего или меньшего размера чем ожидал дизайнер, то результат мог быть от нежелательных полос прокрутки, до слишком длинной строки и плохого использования пространства. Поскольку становились доступны много различных размеров экранов, появилась концепция отзывчивого (адаптивного) веб-дизайна (responsive web design (RWD)) — набор методов, которые позволяют веб-страницам менять свой макет и внешний вид в соответствии с разной шириной экрана, разрешением и т.д. Это та самая, идея которая изменила подход к дизайну веба для множества устройств, и в этой статье мы поможем вам понять основные методы, которые вам необходимо знать, чтобы освоить его.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit2&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Необходимые знания:&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Основы &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; (изучите &lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?id=software:development:web:docs:learn:html:introduction_to_html&quot; class=&quot;wikilink2&quot; title=&quot;software:development:web:docs:learn:html:introduction_to_html&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;software:development:web:docs:learn:html:introduction_to_html&quot;&gt;Введение в HTML&lt;/a&gt;), идея о том как работает &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; (изучите &lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?id=software:development:web:docs:learn:css:first_steps&quot; class=&quot;wikilink2&quot; title=&quot;software:development:web:docs:learn:css:first_steps&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;software:development:web:docs:learn:css:first_steps&quot;&gt;Введение в CSS&lt;/a&gt; и &lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?id=software:development:web:docs:learn:css:building_blocks&quot; class=&quot;wikilink2&quot; title=&quot;software:development:web:docs:learn:css:building_blocks&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;software:development:web:docs:learn:css:building_blocks&quot;&gt;Устройство CSS&lt;/a&gt;.)&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Задача:&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Понять базовые концепции и историю отзывчивого дизайна.&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1412-1930&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0442\u0437\u044b\u0432\u0447\u0438\u0432\u044b\u0439 \u0434\u0438\u0437\u0430\u0439\u043d&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0442\u0437\u044b\u0432\u0447\u0438\u0432\u044b\u0439_\u0434\u0438\u0437\u0430\u0439\u043d&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1931&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;исторические_макеты_сайтов&quot;&gt;Исторические макеты сайтов&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
В какой-то момент истории при разработке веб-сайта у вас было два варианта:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Вы могли создать жидкий сайт, который будет растягиваться чтобы заполнить окно браузера&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; или сайт с фиксированной шириной, который будет иметь фиксированный размер в пикселях.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Эти два подхода, как правило, приводили к тому, что веб-сайт лучше всего выглядел на экране человека, создавшего сайт! Жидкий сайт приводил к раздавленному дизайну на маленьких экранах (как видно ниже) и не читаемо длинным строкам на больших.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0430\u043a\u0435\u0442\u044b \u0441\u0430\u0439\u0442\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435_\u043c\u0430\u043a\u0435\u0442\u044b_\u0441\u0430\u0439\u0442\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1932-2902&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;попробуй&quot;&gt;Попробуй&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;

&lt;iframe height=&quot;350&quot; style=&quot;width: 100%;&quot; scrolling=&quot;no&quot; title=&quot;Untitled&quot; src=&quot;./demo/code-docs/pages/css-examples/liquid-width.html&quot; frameborder=&quot;no&quot; loading=&quot;lazy&quot; allowtransparency=&quot;true&quot; allowfullscreen=&quot;true&quot;&gt;
&lt;/iframe&gt;

&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_left wrap_round wrap_box plugin_wrap&quot; style=&quot;width: 100%;&quot;&gt;
&lt;p&gt;
&lt;img src=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; &lt;strong&gt;Примечание:&lt;/strong&gt; Посмотрите этот простой жидкий макет: &lt;a href=&quot;./demo/code-docs/pages/css-examples/liquid-width.html&quot;&gt;пример&lt;/a&gt;, &lt;a href=&quot;https://github.com/mdn/css-examples/blob/master/learn/rwd/liquid-width.html&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/mdn/css-examples/blob/master/learn/rwd/liquid-width.html&quot; rel=&quot;ugc nofollow&quot;&gt;исходный код&lt;/a&gt;. При просмотре примера, растягивайте и сжимайте окно браузера чтобы увидеть, как это выглядит при разных размерах.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
Сайт с фиксированной шириной рисковал иметь горизонтальную полосу прокрутки на экранах меньших чем ширина сайта (как видно ниже) и много белого пространства на краях дизайна на больших экранах.

&lt;iframe height=&quot;350&quot; style=&quot;width: 100%;&quot; scrolling=&quot;no&quot; title=&quot;Untitled&quot; src=&quot;./demo/code-docs/pages/css-examples/fixed-width.html&quot; frameborder=&quot;no&quot; loading=&quot;lazy&quot; allowtransparency=&quot;true&quot; allowfullscreen=&quot;true&quot;&gt;
&lt;/iframe&gt;

&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_left wrap_round wrap_box plugin_wrap&quot; style=&quot;width: 100%;&quot;&gt;
&lt;p&gt;
&lt;img src=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; &lt;strong&gt;Примечание:&lt;/strong&gt; Посмотрите этот простой макет с фиксированной шириной: &lt;a href=&quot;./demo/code-docs/pages/css-examples/fixed-width.html&quot;&gt;пример&lt;/a&gt;, &lt;a href=&quot;https://github.com/mdn/css-examples/blob/master/learn/rwd/fixed-width.html&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/mdn/css-examples/blob/master/learn/rwd/fixed-width.html&quot; rel=&quot;ugc nofollow&quot;&gt;исходный код&lt;/a&gt;. Снова изучите результат по мере изменения размера окна браузера.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_left wrap_round wrap_box plugin_wrap&quot; style=&quot;width: 100%;&quot;&gt;
&lt;p&gt;
&lt;img src=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; &lt;strong&gt;Примечание:&lt;/strong&gt; Скриншоты выше сделаны используя &lt;a href=&quot;https://firefox-source-docs.mozilla.org/devtools-user/responsive_design_mode/index.html&quot; class=&quot;urlextern&quot; title=&quot;https://firefox-source-docs.mozilla.org/devtools-user/responsive_design_mode/index.html&quot; rel=&quot;ugc nofollow&quot;&gt;Responsive Design Mode&lt;/a&gt; в Firefox DevTools.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
Когда мобильный веб стал становиться реальностью с первыми функциональными телефонами, компании желающие охватить мобильники начали создавать в основном специальные мобильные версии своих сайтов, с различными &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; (часто что-то наподобие m.example.com или example.mobi). Это означало, что необходимо было разрабатывать и поддерживать в актуальном состоянии две отдельные версии сайта.
&lt;/p&gt;

&lt;p&gt;
Кроме того, эти мобильные сайты часто предлагали очень урезанный вариант. Поскольку мобильные гаджеты стали мощнее и способными отображать целые веб-сайты, пользователей мобильных устройств раздражало, что они обнаруживали себя запертыми в мобильной версии сайта, неспособные получить доступ к информации, которая, как они знали, есть в полнофункциональной версии сайта.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2903-6434&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;гибкий_макет_до_отзывчивого_дизайна&quot;&gt;Гибкий макет до отзывчивого дизайна&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Было разработано несколько подходов чтобы попытаться разрешить недостатки построения веб-сайтов жидким методом или методом с фиксированной шириной. В 2004 году Камерон Адамс написал пост &lt;a href=&quot;https://www.themaninblue.com/writing/perspective/2004/09/21/&quot; class=&quot;urlextern&quot; title=&quot;https://www.themaninblue.com/writing/perspective/2004/09/21/&quot; rel=&quot;ugc nofollow&quot;&gt;Resolution dependent layout&lt;/a&gt;, описывающий метод создания дизайна который мог бы адаптироваться к разным разрешениям экрана. Этот подход требовал, чтобы JavaScript узнавал разрешение экрана и загружал корректный &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt;.
&lt;/p&gt;

&lt;p&gt;
Зои Миккели Гилленвотер сыграла важную роль в свой работе описав и формализовав различные способы посредствам которых могут быть созданы гибкие сайты, пытаясь найти золотую середину между заполнением экрана или полностью фиксированным размером.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0413\u0438\u0431\u043a\u0438\u0439 \u043c\u0430\u043a\u0435\u0442 \u0434\u043e \u043e\u0442\u0437\u044b\u0432\u0447\u0438\u0432\u043e\u0433\u043e \u0434\u0438\u0437\u0430\u0439\u043d\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0433\u0438\u0431\u043a\u0438\u0439_\u043c\u0430\u043a\u0435\u0442_\u0434\u043e_\u043e\u0442\u0437\u044b\u0432\u0447\u0438\u0432\u043e\u0433\u043e_\u0434\u0438\u0437\u0430\u0439\u043d\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;6435-7739&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;отзывчивый_дизайн1&quot;&gt;Отзывчивый дизайн&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Термин адаптивный дизайн был &lt;a href=&quot;https://alistapart.com/article/responsive-web-design/&quot; class=&quot;urlextern&quot; title=&quot;https://alistapart.com/article/responsive-web-design/&quot; rel=&quot;ugc nofollow&quot;&gt;придуман Итаном Маркоттом в 2010 году&lt;/a&gt; и описывал использование трёх методов в сочетании.
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Первой была идея жидких сеток, нечто что уже исследовала Гилленвотер, что можно прочитать в статье Маркотта - &lt;a href=&quot;https://alistapart.com/article/fluidgrids/&quot; class=&quot;urlextern&quot; title=&quot;https://alistapart.com/article/fluidgrids/&quot; rel=&quot;ugc nofollow&quot;&gt;Fluid Grids&lt;/a&gt; (опубликовано в 2009 в A List Apart).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Вторым методом была идея &lt;a href=&quot;https://unstoppablerobotninja.com/entry/fluid-images&quot; class=&quot;urlextern&quot; title=&quot;https://unstoppablerobotninja.com/entry/fluid-images&quot; rel=&quot;ugc nofollow&quot;&gt;жидких изображений&lt;/a&gt;. Используя очень простой метод настройки свойства max-width на 100%, изображения будут становиться меньше если содержащий столбец становится уже чем изначальный размер изображения, но никогда не становится больше. Это позволяет изображению уменьшаться чтобы соответствовать столбцу гибких размеров, а не перекрываться с ним, но не расти и становиться пиксельным если столбец становится шире изображения.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Третьим ключевым компонентом были &lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?id=software:development:web:docs:web:css:css_media_queries&quot; class=&quot;wikilink2&quot; title=&quot;software:development:web:docs:web:css:css_media_queries&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;software:development:web:docs:web:css:css_media_queries&quot;&gt;медиавыражения&lt;/a&gt;. Медиавыражения позволяют переключать тип макета применяя только &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; то, что Камерон Адамс исследовал, используя JavaScript. Вместо того чтобы иметь один макет для всех размеров экранов, макет мог изменяться. Боковые панели можно перемещать для маленьких экранов, либо отображать альтернативную навигацию.&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
Очень важно понять, что &lt;strong&gt;адаптивный веб-дизайн — это не отдельная технология&lt;/strong&gt;, это термин используемый, чтобы описать подход к веб-дизайну или набор лучших практик, используемых для создания макета, который может реагировать на используемое устройство для просмотра контента. В первоначальном исследовании Маркотта это означало гибкие сетки (с использованием floats) и медиавыражения, однако почти за 10 лет, прошедших с момента написания этой статьи, адаптивная работа стала стандартом по умолчанию. Современные методы макета &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; отзывчивы по своей сути, и у нас есть новые штучки, встроенные в веб-платформу для того, чтобы делать дизайн отзывчивых сайтов проще.
&lt;/p&gt;

&lt;p&gt;
Остальная часть этой статьи укажет вам на различные функции веб-платформы, которые вы, возможно, захотите использовать при создании адаптивного сайта.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0442\u0437\u044b\u0432\u0447\u0438\u0432\u044b\u0439 \u0434\u0438\u0437\u0430\u0439\u043d&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0442\u0437\u044b\u0432\u0447\u0438\u0432\u044b\u0439_\u0434\u0438\u0437\u0430\u0439\u043d1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;7740-11449&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;медиавыражения&quot;&gt;Медиавыражения&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Отзывчивый дизайн появился благодаря медиавыражениям (media queries). Спецификация Media Queries Level 3 стала Рекомендованным Кандидатом в 2009 году, что означает, что она была признана готовой к реализации в браузерах. Медиавыражения позволяют нам проводить серию тестов (например, является ли экран пользователя больше, чем определённая ширина или разрешение) и выборочно применять &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; к стилю страницы соответственно с нуждами пользователя.
&lt;/p&gt;

&lt;p&gt;
Например, следующее медиавыражение проверяет отображается ли текущая страница как экранная медиа (а не как печатный документ) и имеет ли область просмотра ширину как минимум 800 px. &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; будет применяться к селектору &amp;#039;.container&amp;#039; только если эти две вещи истины.
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:web:docs:learn:css:css_layout:responsive_design&amp;amp;codeblock=0&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_&quot;&gt;CSS&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code css&quot;&gt;&lt;span class=&quot;re2&quot;&gt;@media&lt;/span&gt; screen and &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;min-width&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;800px&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;re1&quot;&gt;.container&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1em&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;2em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Вы можете добавлять несколько медиавыражений в пределах одной таблицы стилей, подстраивая весь ваш макет или его части так, чтобы наилучшим образом соответствовать разным размерам экрана. Точки, в которых применяются медиавыражения и меняется макет, известны как контрольные точки.
&lt;/p&gt;

&lt;p&gt;
Общим подходом при использовании медиавыражений является создание простого одноколоночного макета для устройств с узкими экранами (например, мобильные телефоны), затем проверка для больших экранов и применение макета с несколькими столбцам, когда вы знаете, что у вас достаточно ширины экрана, чтобы уместить все. Такой подход часто называют mobile first дизайном.
&lt;/p&gt;

&lt;p&gt;
Узнать больше о &lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?id=software:development:web:docs:web:css:css_media_queries&quot; class=&quot;wikilink2&quot; title=&quot;software:development:web:docs:web:css:css_media_queries&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;software:development:web:docs:web:css:css_media_queries&quot;&gt;медиавыражениях&lt;/a&gt; можно в документации MDN.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041c\u0435\u0434\u0438\u0430\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043c\u0435\u0434\u0438\u0430\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;11450-14191&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;гибкие_сетки&quot;&gt;Гибкие сетки&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Отзывчивые сайты не просто меняют свой макет между контрольными точками, они построены на гибких сетках. Гибкая сетка подразумевает что вам не надо заботиться о каждом возможном существующем размере устройства и строить для них идеальный макет в пикселях. Такой подход был бы невозможен имея широкое множество существующих устройств разных размеров, как и факт того, что даже на ПК люди не всегда используют браузер с развёрнутым до максимума окном.
&lt;/p&gt;

&lt;p&gt;
Используя гибкую сетку, вам всего лишь надо добавить контрольную точку и изменить дизайн в точке, когда ваш контент начинает выглядеть плохо. Например, если длина строки становится нечитаемо длинной при увеличении размера экрана, или блок становится сдавленным с двумя словами в каждой строке при сужении экрана.
&lt;/p&gt;

&lt;p&gt;
В первые дни отзывчивого дизайна, нашим единственным вариантом выполнения было использование &lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?id=software:development:web:docs:learn:css:css_layout:floats&quot; class=&quot;wikilink2&quot; title=&quot;software:development:web:docs:learn:css:css_layout:floats&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;software:development:web:docs:learn:css:css_layout:floats&quot;&gt;floats&lt;/a&gt;. Гибкий обтекаемый макет достигался путём присвоения каждому элементу процентной ширины удостоверившись, что итоговые значения в макете не превышают 100%. В своей оригинальной статье о плавучих сетках Маркотт подробно описал формулу для преобразования макета, созданного с использованием пикселей, в проценты.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;target / context = result&lt;/pre&gt;

&lt;p&gt;
Например, если размер нашего целевого столбца — 60 пикселей, а контекст (или контейнер) в котором он находится — 960 пикселей, то мы делим 60 на 960 чтобы получить значение которое мы можем использовать в нашем &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt;, после переноса десятичной точки вправо на 2 цифры.
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:web:docs:learn:css:css_layout:responsive_design&amp;amp;codeblock=2&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_&quot;&gt;CSS&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code css&quot;&gt;&lt;span class=&quot;re1&quot;&gt;.col&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;6.25%&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;coMULTI&quot;&gt;/* 60 / 960 = 0.0625 */&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Этот подход сегодня можно найти во многих местах в Интернете и он задокументирован здесь в разделе макетов в нашей статье &lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?id=software:development:web:docs:learn:css:css_layout:legacy_layout_methods&quot; class=&quot;wikilink2&quot; title=&quot;software:development:web:docs:learn:css:css_layout:legacy_layout_methods&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;software:development:web:docs:learn:css:css_layout:legacy_layout_methods&quot;&gt;устаревших методов макетов&lt;/a&gt;. В вашей работе вероятно, что вы столкнётесь с веб-сайтами, использующими этот подход, поэтому стоит понимать его, даже если вы не будете строить современные сайты используя гибкие сетки основанные на float.
&lt;/p&gt;

&lt;p&gt;
Следующий пример демонстрирует простой отзывчивый дизайн, с использованием медиавыражений и гибких сеток. На узких экранах макет отображает блоки, расположенные друг над другом. На более широких экранах они перемещаются в два столбца:
&lt;/p&gt;

&lt;p&gt;

&lt;iframe height=&quot;350&quot; style=&quot;width: 100%;&quot; scrolling=&quot;no&quot; title=&quot;Untitled&quot; src=&quot;./demo/code-docs/pages/css-examples/float-based-rwd.html&quot; frameborder=&quot;no&quot; loading=&quot;lazy&quot; allowtransparency=&quot;true&quot; allowfullscreen=&quot;true&quot;&gt;
&lt;/iframe&gt;

&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_left wrap_round wrap_box plugin_wrap&quot; style=&quot;width: 100%;&quot;&gt;
&lt;p&gt;
&lt;img src=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; &lt;strong&gt;Примечание:&lt;/strong&gt; вы можете найти &lt;a href=&quot;./demo/code-docs/pages/css-examples/float-based-rwd.html&quot;&gt;пример&lt;/a&gt; и &lt;a href=&quot;https://github.com/mdn/css-examples/blob/master/learn/rwd/float-based-rwd.html&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/mdn/css-examples/blob/master/learn/rwd/float-based-rwd.html&quot; rel=&quot;ugc nofollow&quot;&gt;исходный код&lt;/a&gt; этого примера на GitHub.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0413\u0438\u0431\u043a\u0438\u0435 \u0441\u0435\u0442\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0433\u0438\u0431\u043a\u0438\u0435_\u0441\u0435\u0442\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;14192-18775&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit17&quot; id=&quot;современные_технологии_макетов&quot;&gt;Современные технологии макетов&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Современные методы макетов такие как &lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?id=software:development:web:docs:learn:css:css_layout:multiple-column_layout&quot; class=&quot;wikilink2&quot; title=&quot;software:development:web:docs:learn:css:css_layout:multiple-column_layout&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;software:development:web:docs:learn:css:css_layout:multiple-column_layout&quot;&gt;Макет с несколькими столбцами&lt;/a&gt;, &lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?id=software:development:web:docs:learn:css:css_layout:flexbox&quot; class=&quot;wikilink2&quot; title=&quot;software:development:web:docs:learn:css:css_layout:flexbox&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;software:development:web:docs:learn:css:css_layout:flexbox&quot;&gt;Flexbox&lt;/a&gt;, и &lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?id=software:development:web:docs:learn:css:css_layout:grids&quot; class=&quot;wikilink2&quot; title=&quot;software:development:web:docs:learn:css:css_layout:grids&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;software:development:web:docs:learn:css:css_layout:grids&quot;&gt;Grid&lt;/a&gt; являются отзывчивыми по умолчанию. Они все предполагают, что вы пытаетесь создать гибкую сетку и дают вам более лёгкий способ сделать так.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u043c\u0430\u043a\u0435\u0442\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435_\u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438_\u043c\u0430\u043a\u0435\u0442\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;18776-19444&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit18&quot; id=&quot;multicol&quot;&gt;Multicol&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Самый старый из этих методов — это &lt;code&gt;multicol&lt;/code&gt;, когда вы задаёте &lt;code&gt;column-count&lt;/code&gt;, это отражает то на сколько столбцов вы хотите разбить ваш контент. Далее браузер рассчитывает их размер, размер, который изменится согласно размеру экрана.
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:web:docs:learn:css:css_layout:responsive_design&amp;amp;codeblock=3&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_&quot;&gt;CSS&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code css&quot;&gt;&lt;span class=&quot;re1&quot;&gt;.container&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;column-count&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Если вместо этого вы зададите &lt;code&gt;column-width&lt;/code&gt;, то вы определите минимальную ширину. Браузер создаст столько столбцов той ширины, сколько будет комфортно умещаться в контейнер, а затем поделит оставшееся пространство между всеми столбцами. Поэтому число столбцов будет меняться согласно тому сколько имеется места.
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:web:docs:learn:css:css_layout:responsive_design&amp;amp;codeblock=4&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_&quot;&gt;CSS&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code css&quot;&gt;&lt;span class=&quot;re1&quot;&gt;.container&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;column-width&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;10em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Multicol&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;multicol&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;19445-20562&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit19&quot; id=&quot;flexbox&quot;&gt;Flexbox&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
В Flexbox, в качестве исходного поведения, flex элементы будут сжиматься и распределять пространство между элементами в соответствии с пространством в их контейнере. Изменяя значения &lt;code&gt;flex-grow&lt;/code&gt; и &lt;code&gt;flex-shrink&lt;/code&gt; вы можете указать, как вы хотите, чтобы предметы вели себя когда они сталкиваются с большим или меньшим пространством вокруг себя.
&lt;/p&gt;

&lt;p&gt;
В примере ниже каждый flex элемент будет принимать равное количество пространства во flex контейнере используя запись &lt;code&gt;flex: 1&lt;/code&gt; как описано в главе &lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?id=software:development:web:docs:learn:css:css_layout:flexbox#flexible_sizing_of_flex_items&quot; class=&quot;wikilink2&quot; title=&quot;software:development:web:docs:learn:css:css_layout:flexbox&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;software:development:web:docs:learn:css:css_layout:flexbox&quot;&gt;Flexbox: Гибкое изменение размеров flex элементов&lt;/a&gt;.
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:web:docs:learn:css:css_layout:responsive_design&amp;amp;codeblock=5&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_&quot;&gt;CSS&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code css&quot;&gt;&lt;span class=&quot;re1&quot;&gt;.container&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; flex&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;.item&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;flex&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;

&lt;iframe height=&quot;350&quot; style=&quot;width: 100%;&quot; scrolling=&quot;no&quot; title=&quot;Untitled&quot; src=&quot;./demo/code-docs/pages/css-examples/flex-based-rwd.html&quot; frameborder=&quot;no&quot; loading=&quot;lazy&quot; allowtransparency=&quot;true&quot; allowfullscreen=&quot;true&quot;&gt;
&lt;/iframe&gt;

&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_left wrap_round wrap_box plugin_wrap&quot; style=&quot;width: 100%;&quot;&gt;
&lt;p&gt;
&lt;img src=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; &lt;strong&gt;Примечание:&lt;/strong&gt; В качестве примера мы перестроили простой отзывчивый макет выше, в этот раз используя flexbox. Вы видите что нас больше не надо использовать странные процентные значения для подсчёта размера столбцов: &lt;a href=&quot;./demo/code-docs/pages/css-examples/flex-based-rwd.html&quot;&gt;пример&lt;/a&gt;, &lt;a href=&quot;https://github.com/mdn/css-examples/blob/master/learn/rwd/flex-based-rwd.html&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/mdn/css-examples/blob/master/learn/rwd/flex-based-rwd.html&quot; rel=&quot;ugc nofollow&quot;&gt;исходный код&lt;/a&gt;.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Flexbox&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;flexbox&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;20563-22569&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit22&quot; id=&quot;css_grid&quot;&gt;CSS grid&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
В макете &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; Grid единицы измерения &lt;code&gt;fr&lt;/code&gt; позволяют распределять доступное пространство между дорожками сетки. Следующий пример создаёт grid контейнер с тремя дорожками размером &lt;code&gt;1fr&lt;/code&gt;. Это создаст три вертикальные дорожки, каждая занимающая одну часть свободного пространства в контейнере. Вы можете узнать больше об этом подходе к созданию сетки в теме Изучение Макета Grid в разделе &lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?id=software:development:web:docs:learn:css:css_layout:grids#flexible_grids_with_the_fr_unit&quot; class=&quot;wikilink2&quot; title=&quot;software:development:web:docs:learn:css:css_layout:grids&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;software:development:web:docs:learn:css:css_layout:grids&quot;&gt;Гибкие grids с единицами fr&lt;/a&gt;.
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:web:docs:learn:css:css_layout:responsive_design&amp;amp;codeblock=6&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_&quot;&gt;CSS&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code css&quot;&gt;&lt;span class=&quot;re1&quot;&gt;.container&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; grid&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;grid-template-columns&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; 1fr 1fr 1fr&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;

&lt;iframe height=&quot;350&quot; style=&quot;width: 100%;&quot; scrolling=&quot;no&quot; title=&quot;Untitled&quot; src=&quot;./demo/code-docs/pages/css-examples/grid-based-rwd.html&quot; frameborder=&quot;no&quot; loading=&quot;lazy&quot; allowtransparency=&quot;true&quot; allowfullscreen=&quot;true&quot;&gt;
&lt;/iframe&gt;

&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:23,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_left wrap_round wrap_box plugin_wrap&quot; style=&quot;width: 100%;&quot;&gt;
&lt;p&gt;
&lt;img src=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; &lt;strong&gt;Примечание:&lt;/strong&gt; версия grid макета ещё проще, поскольку мы можем определить столбцы в .wrapper: &lt;a href=&quot;./demo/code-docs/pages/css-examples/grid-based-rwd.html&quot;&gt;пример&lt;/a&gt;, &lt;a href=&quot;https://github.com/mdn/css-examples/blob/master/learn/rwd/grid-based-rwd.html&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/mdn/css-examples/blob/master/learn/rwd/grid-based-rwd.html&quot; rel=&quot;ugc nofollow&quot;&gt;исходный код&lt;/a&gt;.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:24,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;CSS grid&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;css_grid&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:22,&amp;quot;range&amp;quot;:&amp;quot;22570-24156&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit25&quot; id=&quot;отзывчивые_изображения&quot;&gt;Отзывчивые изображения&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Самый простой подход к отзывчивым изображениям был описан в ранних статьях Маркотта по отзывчивому дизайну. По сути, вы берёте изображение максимального размера, которое могло понадобиться, и уменьшаете его. Этот подход до сих пор используется и в большинстве таблиц стилей вы найдёте следующий &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt;:
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:web:docs:learn:css:css_layout:responsive_design&amp;amp;codeblock=7&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_&quot;&gt;CSS&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code css&quot;&gt;img &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;max-width&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;100%&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Существуют очевидные недостатки к этому подходу. Изображение может быть изображено намного меньше своего исходного размера, что является пустой тратой пропускной способности — пользователь мобильных может загружать изображение, в несколько раз превышающее размер того, что он фактически видит в окне браузера. Кроме того, вам может не понадобиться такое же соотношение сторон изображения на мобильном устройстве, как на компьютере. Либо, учитывая меньший размер изображения на мобильном телефоне, вы можете захотеть показать совсем другое изображение, которое легче понять на маленьком экране. Такие вещи можно достичь, просто уменьшая изображение.
&lt;/p&gt;

&lt;p&gt;
Отзывчивые изображения, используя элемент &lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?id=software:development:web:docs:web:html:element:picture&quot; class=&quot;wikilink1&quot; title=&quot;software:development:web:docs:web:html:element:picture&quot; data-wiki-id=&quot;software:development:web:docs:web:html:element:picture&quot;&gt;&amp;lt;picture&amp;gt;&lt;/a&gt; и атрибуты &lt;code&gt;srcset&lt;/code&gt; и &lt;code&gt;sizes&lt;/code&gt; элемента &lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?id=software:development:web:docs:web:html:element:img&quot; class=&quot;wikilink1&quot; title=&quot;software:development:web:docs:web:html:element:img&quot; data-wiki-id=&quot;software:development:web:docs:web:html:element:img&quot;&gt;&amp;lt;img&amp;gt;&lt;/a&gt; оба решают эти проблемы. Вы можете указать несколько размеров вместе с «подсказками» (метаданные, описывающие размер экрана и разрешение, для которых изображение лучше всего подходит), и браузер выберет наиболее подходящее изображение для каждого устройства, гарантируя, что пользователь загрузит изображение подходящего размера для устройства, которое они используют.
&lt;/p&gt;

&lt;p&gt;
Вы также можете напрямую использовать изображения разных размеров, обеспечивая разное кадрирование или совершенно другое изображение для разных размеров экрана.
&lt;/p&gt;

&lt;p&gt;
Вы можете найти подробное &lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?id=software:development:web:docs:learn:html:multimedia_and_embedding:responsive_images&quot; class=&quot;wikilink2&quot; title=&quot;software:development:web:docs:learn:html:multimedia_and_embedding:responsive_images&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;software:development:web:docs:learn:html:multimedia_and_embedding:responsive_images&quot;&gt;руководство по отзывчивым изображениям в разделе изучения HTML&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0442\u0437\u044b\u0432\u0447\u0438\u0432\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0442\u0437\u044b\u0432\u0447\u0438\u0432\u044b\u0435_\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:25,&amp;quot;range&amp;quot;:&amp;quot;24157-27519&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit26&quot; id=&quot;отзывчивая_типографика&quot;&gt;Отзывчивая типографика&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Элементом отзывчивого дизайна, не освещённого ранее в работе, была идея отзывчивой типографики. Главным образом, она описывает изменение размеров шрифта в зависимости от ширины экрана при помощи медиавыражений.
&lt;/p&gt;

&lt;p&gt;
В этом примере, мы хотим задать нашему заголовку первого уровня &lt;code&gt;4rem&lt;/code&gt;, что значит, что он будет в четыре раза больше нашего базового размера шрифта. Это очень большой заголовок! Мы хотим этот гигантский заголовок только на экранах больших размеров, поэтому мы сначала создаём меньший заголовок, а затем используем медиавыржаение, чтобы переписать его для больших экранов, если мы знаем, что у пользователя есть экран размером как минимум &lt;code&gt;1200px&lt;/code&gt;.
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:web:docs:learn:css:css_layout:responsive_design&amp;amp;codeblock=8&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_&quot;&gt;CSS&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code css&quot;&gt;html &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
h1 &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;2rem&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;@media&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;min-width&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1200px&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  h1 &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;4rem&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Мы отредактировали наш приведённый выше пример отзывчивой сетки grid, чтобы он также включал в себя адаптивный тип, используя описанный метод. Вы можете видеть, как заголовок меняет размеры, когда макет переходит в версию с двумя столбцами.
&lt;/p&gt;

&lt;p&gt;
В мобильных версиях заголовок меньше:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Aweb%3Adocs%3Alearn%3Acss%3Acss_layout%3Aresponsive_design&amp;amp;media=software:development:web:docs:learn:css:css_layout:responsive_design_6.png&quot; class=&quot;media&quot; title=&quot;software:development:web:docs:learn:css:css_layout:responsive_design_6.png&quot;&gt;&lt;img src=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:web:docs:learn:css:css_layout:responsive_design_6.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
На компьютерах, однако, мы видим больший размер заголовка:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Aweb%3Adocs%3Alearn%3Acss%3Acss_layout%3Aresponsive_design&amp;amp;media=software:development:web:docs:learn:css:css_layout:responsive_design_7.png&quot; class=&quot;media&quot; title=&quot;software:development:web:docs:learn:css:css_layout:responsive_design_7.png&quot;&gt;&lt;img src=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:web:docs:learn:css:css_layout:responsive_design_7.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;

&lt;iframe height=&quot;350&quot; style=&quot;width: 100%;&quot; scrolling=&quot;no&quot; title=&quot;Untitled&quot; src=&quot;./demo/code-docs/pages/css-examples/type-rwd.html&quot; frameborder=&quot;no&quot; loading=&quot;lazy&quot; allowtransparency=&quot;true&quot; allowfullscreen=&quot;true&quot;&gt;
&lt;/iframe&gt;

&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:27,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_left wrap_round wrap_box plugin_wrap&quot; style=&quot;width: 100%;&quot;&gt;
&lt;p&gt;
&lt;img src=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; &lt;strong&gt;Примечание:&lt;/strong&gt; смотрите этот пример в действии: &lt;a href=&quot;./demo/code-docs/pages/css-examples/type-rwd.html&quot;&gt;пример&lt;/a&gt;, &lt;a href=&quot;https://github.com/mdn/css-examples/blob/master/learn/rwd/type-rwd.html&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/mdn/css-examples/blob/master/learn/rwd/type-rwd.html&quot; rel=&quot;ugc nofollow&quot;&gt;исходный код&lt;/a&gt;.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:28,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
Такой подход к типографике показывает, что вам не нужно ограничиваться в использовании медиавыражений только изменением макета страницы. Они могут быть использоваться для настройки любого элемента, чтобы сделать его более удобным или привлекательным при других размерах экрана.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0442\u0437\u044b\u0432\u0447\u0438\u0432\u0430\u044f \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0442\u0437\u044b\u0432\u0447\u0438\u0432\u0430\u044f_\u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:26,&amp;quot;range&amp;quot;:&amp;quot;27520-30773&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit29&quot; id=&quot;использование_единиц_просмотра_для_адаптивной_типографики&quot;&gt;Использование единиц просмотра для адаптивной типографики&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Интересный подход — использовать единицу области просмотра &lt;code&gt;vw&lt;/code&gt; для обеспечения адаптивной типографики. &lt;code&gt;1vw&lt;/code&gt; равен одному проценту ширины области просмотра. Это означает, что если вы установите размер шрифта с помощью &lt;code&gt;vw&lt;/code&gt;, он всегда будет соответствовать размеру области просмотра.
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:web:docs:learn:css:css_layout:responsive_design&amp;amp;codeblock=9&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_&quot;&gt;CSS&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code css&quot;&gt;h1 &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;6vw&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Проблема с выполнением вышеописанного заключается в том, что пользователь теряет возможность масштабировать любой текстовый набор с помощью единицы измерения &lt;code&gt;vw&lt;/code&gt;, поскольку этот текст всегда связан с размером области просмотра. &lt;strong&gt;Поэтому никогда не следует задавать текст, используя только единицы просмотра.&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Решение есть, и оно включает использование &lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?id=software:development:web:docs:web:css:calc&quot; class=&quot;wikilink2&quot; title=&quot;software:development:web:docs:web:css:calc&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;software:development:web:docs:web:css:calc&quot;&gt;calc()&lt;/a&gt;. Если вы добавите единицу измерения vw в набор значений, используя фиксированный размер, например ems или rems, тогда текст по-прежнему можно будет масштабировать. По сути, модуль vw добавляет к этому увеличенному значению:
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:web:docs:learn:css:css_layout:responsive_design&amp;amp;codeblock=10&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_&quot;&gt;CSS&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code css&quot;&gt;h1 &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;calc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re3&quot;&gt;1.5rem&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;3vw&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Это означает, что нам нужно указать размер шрифта для заголовка только один раз, а не настраивать его для мобильных устройств и переопределять в медиа-запросах. Затем шрифт постепенно увеличивается по мере увеличения размера области просмотра.
&lt;/p&gt;

&lt;p&gt;

&lt;iframe height=&quot;350&quot; style=&quot;width: 100%;&quot; scrolling=&quot;no&quot; title=&quot;Untitled&quot; src=&quot;./demo/code-docs/pages/css-examples/type-vw.html&quot; frameborder=&quot;no&quot; loading=&quot;lazy&quot; allowtransparency=&quot;true&quot; allowfullscreen=&quot;true&quot;&gt;
&lt;/iframe&gt;

&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:30,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_left wrap_round wrap_box plugin_wrap&quot; style=&quot;width: 100%;&quot;&gt;
&lt;p&gt;
&lt;img src=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; &lt;strong&gt;Примечание:&lt;/strong&gt; смотрите этот пример в действии: &lt;a href=&quot;./demo/code-docs/pages/css-examples/type-vw.html&quot;&gt;пример&lt;/a&gt;, &lt;a href=&quot;https://github.com/mdn/css-examples/blob/master/learn/rwd/type-vw.html&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/mdn/css-examples/blob/master/learn/rwd/type-vw.html&quot; rel=&quot;ugc nofollow&quot;&gt;исходный код&lt;/a&gt;.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:31,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0435\u0434\u0438\u043d\u0438\u0446 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0434\u043b\u044f \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435_\u0435\u0434\u0438\u043d\u0438\u0446_\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430_\u0434\u043b\u044f_\u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439_\u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:29,&amp;quot;range&amp;quot;:&amp;quot;30774-33636&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit32&quot; id=&quot;метатег_области_просмотра&quot;&gt;Метатег области просмотра&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Если вы посмотрите на исходный код &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; адаптивной страницы, вы обычно увидите следующий тег &lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?id=software:development:web:docs:web:html:element:meta&quot; class=&quot;wikilink1&quot; title=&quot;software:development:web:docs:web:html:element:meta&quot; data-wiki-id=&quot;software:development:web:docs:web:html:element:meta&quot;&gt;&amp;lt;meta&amp;gt;&lt;/a&gt; в &lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?id=software:development:web:docs:web:html:element:head&quot; class=&quot;wikilink1&quot; title=&quot;software:development:web:docs:web:html:element:head&quot; data-wiki-id=&quot;software:development:web:docs:web:html:element:head&quot;&gt;&amp;lt;head&amp;gt;&lt;/a&gt; документа.
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;http://synoinstall-2pkhywzfvulqafp3.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:web:docs:learn:css:css_layout:responsive_design&amp;amp;codeblock=11&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_&quot;&gt;HTML&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code html4strict&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/meta.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;meta&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;viewport&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;width=device-width,initial-scale=1&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Этот метатег сообщает мобильным браузерам, что им следует установить ширину области просмотра в соответствии с шириной устройства и масштабировать документ до 100 % от его предполагаемого размера, в результате чего документ будет отображаться в запланированном размере, оптимизированном для мобильных устройств.
&lt;/p&gt;

&lt;p&gt;
Зачем это нужно? Потому что мобильные браузеры склонны лгать о ширине области просмотра.
&lt;/p&gt;

&lt;p&gt;
Этот метатег существует потому, что когда был выпущен оригинальный iPhone и люди начали просматривать веб-сайты на маленьком экране телефона, большинство сайтов не были оптимизированы для мобильных устройств. Поэтому мобильный браузер установит ширину области просмотра на 960 пикселей, отобразит страницу с этой шириной и покажет результат в виде уменьшенной версии макета рабочего стола. Другие мобильные браузеры (например, Google Android) делали то же самое. Пользователи могли увеличивать и перемещать веб-сайт, чтобы просмотреть интересующие их фрагменты, но выглядело это плохо. Вы все равно увидите это сегодня, если вам посчастливится встретить сайт, у которого нет адаптивного дизайна.
&lt;/p&gt;

&lt;p&gt;
Проблема в том, что ваш адаптивный дизайн с точками останова и медиа-запросами не будет работать должным образом в мобильных браузерах. Если у вас узкий макет экрана, ширина области просмотра которого составляет 480 пикселей или меньше, а область просмотра установлена ​​на 960 пикселей, вы никогда не увидите свой узкий макет экрана на мобильных устройствах. Установив &lt;code&gt;width=device-width&lt;/code&gt; (ширину = ширину устройства), вы заменяете ширину Apple по умолчанию = 960 пикселей (&lt;code&gt;width=960px&lt;/code&gt;)фактической шириной устройства, поэтому ваши медиа-запросы будут работать по назначению.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Поэтому вам всегда следует включать приведенную выше строку &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; в заголовок ваших документов.&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Есть и другие настройки, которые вы можете использовать с метатегом области просмотра, однако в целом вам следует использовать приведенную выше строку.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;initial-scale&lt;/code&gt; (начальный масштаб): устанавливает начальный масштаб страницы, который мы установили на 1.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;height&lt;/code&gt; (высота): устанавливает определенную высоту области просмотра.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;minimum-scale&lt;/code&gt; (минимальный масштаб): устанавливает минимальный уровень масштабирования.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;maximum-scale&lt;/code&gt; (максимальный масштаб): устанавливает максимальный уровень масштабирования.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;user-scalable&lt;/code&gt; (масштабируемый пользователем): предотвращает масштабирование, если установлено значение &lt;code&gt;no&lt;/code&gt; (нет).&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Вам следует избегать использования &lt;code&gt;minimum-scale&lt;/code&gt;, &lt;code&gt;maximum-scale&lt;/code&gt; (минимального и максимального масштаба) и, в частности, установки значения &lt;code&gt;no&lt;/code&gt; (нет). для &lt;code&gt;user-scalable&lt;/code&gt; (пользовательского масштабирования). Пользователям должно быть разрешено увеличивать или уменьшать масштаб настолько, насколько им необходимо; предотвращение этого вызывает проблемы с доступностью.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041c\u0435\u0442\u0430\u0442\u0435\u0433 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043c\u0435\u0442\u0430\u0442\u0435\u0433_\u043e\u0431\u043b\u0430\u0441\u0442\u0438_\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:32,&amp;quot;range&amp;quot;:&amp;quot;33637-39094&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit33&quot; id=&quot;резюме&quot;&gt;Резюме&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Адаптивный дизайн — это дизайн сайта или приложения, который реагирует на среду, в которой его просматривают. Он включает в себя ряд функций и методов &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; и &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; и теперь, по сути, является тем, как мы создаем веб-сайты по умолчанию. Рассмотрим сайты, которые вы посещаете на своем телефоне — вероятно, довольно необычно встретить сайт, который представляет собой уменьшенную версию для настольного компьютера или на котором вам нужно прокручивать вбок, чтобы найти что-то. Это потому, что сеть перешла на такой подход к адаптивному дизайну.
&lt;/p&gt;

&lt;p&gt;
Также стало намного проще создавать адаптивный дизайн с помощью методов верстки, которые вы изучили на этих уроках. Если вы новичок в веб-разработке сегодня, в вашем распоряжении гораздо больше инструментов, чем на заре адаптивного дизайна. Поэтому стоит проверить возраст любых материалов, на которые вы ссылаетесь. Хотя исторические статьи по-прежнему полезны, современное использование &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; и &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; значительно упрощает создание элегантных и полезных дизайнов, независимо от того, с какого устройства посетитель просматривает сайт.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0437\u044e\u043c\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0437\u044e\u043c\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:33,&amp;quot;range&amp;quot;:&amp;quot;39095-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 06 Sep 2023 17:29:57 +0000</pubDate>
        </item>
    </channel>
</rss>
