flex-grow = 1, width: auto 和 just width: 100% 的区别
Difference between flex-grow = 1, width: auto and just width: 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;
}
从视觉上看,它们的效果是一样的。
通常,width:auto
使元素占据所有可用的 space。在基本层面上,如果一些 space 被占用,它就会占用其余部分。另一方面,width: 100%
意味着该元素将占据其整个父元素。
Flex grow,然而,表示一个元素占据了多少space。如果一个父元素中有两个子元素,你给其中一个 flex-grow: 2
它将占据两倍的 space 是另一个
鉴于此 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;
}
从视觉上看,它们的效果是一样的。
通常,width:auto
使元素占据所有可用的 space。在基本层面上,如果一些 space 被占用,它就会占用其余部分。另一方面,width: 100%
意味着该元素将占据其整个父元素。
Flex grow,然而,表示一个元素占据了多少space。如果一个父元素中有两个子元素,你给其中一个 flex-grow: 2
它将占据两倍的 space 是另一个