Разница между flex-grow = 1, шириной: авто и просто шириной: 100%
Учитывая этот HTML:
<nav id="drawer" class="dark_blue">
<h2>Off Canvas</h2>
<p>Click outside the drawer to close</p>
</nav>
<main class="light_blue">
<a id="menu">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M2 6h20v3H2zm0 5h20v3H2zm0 5h20v3H2z"/>
</svg>
</a>
<p>Click on the menu icon to open the drawer</p>
</main>
И эти свойства CSS (они действительно внутри медиа-запроса)
body {
display: -webkit-flex;
display: flex;
}
main {
width: auto;
/* Flex-grow streches the main content to fill all available space.*/
flex-grow: 1;
}
Я не мог просто использовать
main {
width: 100%;
}
Вместо
main {
width: auto;
flex-grow: 1;
}
Визуально они имеют одинаковый эффект.
Здесь работает JSFiddle
1 ответ
Решение
Как правило, width:auto
заставляет элемент занимать все доступное пространство. На базовом уровне, если какое-то пространство занято, оно занимает остальное. width: 100%
с другой стороны, означает, что элемент будет занимать весь родительский элемент.
Flex flex, однако, говорит о том, сколько места занимает элемент. Если внутри родительского элемента есть два дочерних элемента, и вы даете одному из них flex-grow: 2
он будет занимать вдвое больше места, чем другие