当前位置:  开发笔记 > 前端 > 正文

显示器flex的容器内的<hr>损坏

如何解决《显示器flex的容器内的<hr>损坏》经验,为你挑选了2个好方法。

这种行为有点奇怪和怪异.如果有一个与它的容器display属性设置为flexflex-directioncolumn,对的方向


里面的元素会发生变化,成为垂直和它的高度将降低,以适应该行的高度.

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已确认此行为.我没有找到任何解释.我该如何解决?



1> Oriol..:

根据HTML5渲染 - hr元素,它应该使用这种样式呈现:

hr { color: gray; border-style: inset; border-width: 1px; margin: 0.5em auto; }

特别要注意margin-left: auto,margin-right: auto.

这些样式用于水平居中块元素.根据计算宽度和边距 - 块

如果这两个margin-leftmargin-rightauto,它们的使用值是相等的.这使元件相对于容纳块的边缘水平居中.

在块布局中,只有块具有明确的宽度时,此效果才会显着,否则块将增长以覆盖其所有包含的块.

在Flexbox中它类似:默认align-self: autoalign-items: stretchmake 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



2> Ahmad Alfy..:

我发现设置宽度


100%解决了问题.仍然很奇怪,我不知道为什么会这样.

这是一支钢笔

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有