This is some content
这种行为有点奇怪和怪异.如果有一个与它的容器display
属性设置为flex
与flex-direction
对column
,对的方向
里面的元素会发生变化,成为垂直和它的高度将降低,以适应该行的高度.
html, body {
height: 100%;
}
body {
font-family: sans-serif;
}
.container {
padding: 20px;
height: 100%;
display: flex;
flex-direction: column;
flex-grow: 1;
}
Title
This is some content
看看这支笔.
Firefox和Chrome已确认此行为.我没有找到任何解释.我该如何解决?
根据HTML5渲染 - hr
元素,它应该使用这种样式呈现:
hr { color: gray; border-style: inset; border-width: 1px; margin: 0.5em auto; }
特别要注意margin-left: auto
,margin-right: auto
.
这些样式用于水平居中块元素.根据计算宽度和边距 - 块
如果这两个
margin-left
和margin-right
是auto
,它们的使用值是相等的.这使元件相对于容纳块的边缘水平居中.
在块布局中,只有块具有明确的宽度时,此效果才会显着,否则块将增长以覆盖其所有包含的块.
在Flexbox中它类似:默认align-self: auto
和align-items: stretch
make flex项目增长到覆盖横轴的柔性线(列布局中的水平线),auto
边距也可用于居中.
但是,存在很大差异:根据交叉尺寸确定,align-self: stretch
不会影响具有auto
边距的弹性项目:
如果flex项具有
align-self: stretch
,其计算的交叉尺寸属性是auto
,并且它的横轴边距都不是auto
,则使用的外部交叉尺寸是其柔性线的使用交叉尺寸,根据项目的最小和最大交叉尺寸属性进行夹紧.否则,使用的交叉大小是项目的假设交叉大小.
然后,您可以通过删除auto
边距来解决此问题:
hr {
margin-left: 0;
margin-right: 0;
}
.container {
padding: 20px;
display: flex;
flex-direction: column;
}
hr {
margin-left: 0;
margin-right: 0;
}
Title
This is some content
我发现设置宽度
也100%
解决了问题.仍然很奇怪,我不知道为什么会这样.
这是一支钢笔