Flex-wrap 具有不同高度的行

2024-01-16

我正在实现带有哈希标签链接的纯 CSS 选项卡。我非常非常接近,但无法完全让柔性包装正常工作。为了让一切按照我想要的方式工作:target(我之前已经使用单选按钮完成了此操作,这提供了更多的灵活性),我需要所有选项卡和所有部分都处于同一级别,因此我有:

body
  section
  anchor
  section
  anchor
  ...

然后我可以使用 Flexbox 排序使所有锚点首先出现并适当设置样式,将所有部分设置为宽度 100% 并使用flex-wrap允许它们换行到下一行。问题是我似乎无法控制第一行的高度。这里发生了什么?

body {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  margin: 0;
  padding: 0;
  height: 100vh;
  outline: 1px solid green;
}
body > a {
  padding: 10px;
  margin: 0 5px;
  order: -1;
  flex-grow: 0;
  border: solid gray;
  border-width: 1px 1px 0 1px;
}
body > a:last-of-type {
  order: -2;
}
section {
  flex-grow: 1;
  width: 100%;
  background-color: cornsilk;
  display: none;
  border-top: 1px solid grey;
}
section:last-of-type {
  display: flex;
}
a {
  font-weight: normal;
}
a:last-of-type {
  font-weight: bold;
}
:target {
  display: flex;
}
:target ~ section {
  display: none;
}
:target ~ a {
  font-weight: normal;
}
:target + a {
  font-weight: bold;
}
<section id="advanced">
	Advanced Stuff
</section>
<a href="#advanced">Advanced</a>

<section id="home">
	Home Things
</section>
<a href="#home">Home</a>

使用 jsbin 玩起来稍微容易一些 http://jsbin.com/kufele/edit?html,css,output

问题是第一行中的选项卡拉伸到可见部分的高度,而不是折叠到其内容的高度。即使是特定的height and max-height似乎被忽略了。

请注意,这个问题具体是关于使用弹性盒包装时的行高。我知道用 css 和 js 构建选项卡的一百万种不同方法。我专门寻求更深入的了解flex-wrap.


Flex 容器的两个初始设置是align-items: stretch and align-content: stretch。您可以通过将值更改为来覆盖它flex-start.

但这似乎只解决了部分问题。您还希望选定的包装物品能够拉伸容器的整个高度。

这没有发生,因为当弹性项目换行时,它们只需要包含其内容所需的最小尺寸。

来自 Flexbox 规范:

6. 柔性线 https://www.w3.org/TR/css3-flexbox/#flex-lines

在多行柔性容器中(即使只有一行), 每条线的交叉尺寸是包含该线所需的最小尺寸 线上的弹性项目(由于对齐后align-self),以及 线条在 Flex 容器内与align-content财产。

换句话说,当基于行的弹性容器中有多行时,每行的垂直高度(“十字尺寸”) 是个“包含线路上的弹性项目所需的最小尺寸”.

为了使您的布局正常工作,您需要行方向和列方向的 Flex 容器的组合,以及对 HTML 的调整。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flex-wrap 具有不同高度的行 的相关文章

  • 为什么插入符号在具有position:relative的contenteditable中不可见?

    When a contenteditable元素有position relative和背景颜色 插入符号放置在该元素中时是不可见的 这是一个例子 bug position relative background color lightgre
  • 这个 HTML 结构有效吗? UL > DIV > { LI, LI } , DIV > { LI, LI } , DIV > { LI, LI }

    这个 HTML 结构有效吗 ul class blog category div class three column li Item 1 li li Item 2 li li Item 3 li div div class three c
  • 使用 angularjs 在 Internet Explorer 中获取 Blob url

    鉴于此代码 来自其他人 var module angular module myApp module controller MyCtrl function scope scope json JSON stringify a 1 b 2 mo
  • 自定义元素可以扩展输入元素吗?

    使用Web组件规范 是否可以扩展特定类型的
  • HTML Mobile - 强制软键盘隐藏[重复]

    这个问题在这里已经有答案了 我正在为一家优惠券公司开发前端网站 我有一个页面 用户只需输入电话号码和花费的美元 我们想出了一个有趣的内置 Javascript 屏幕键盘 它易于使用且快速 但是 我正在寻找一种解决方案 以在用户聚焦并在这些字
  • Rails:使用水豚填充动态字段

    我有一个通过 javascript 动态创建的带有长 id 的文本字段 user user skills attributes 69878013874980 skill title 哪里的69878013874980是生成的时间戳 如何在水
  • React Native FlatList 具有不同列数的替代行

    i want to have a FlatList which renders a single item on odd rows and 2 items on even rows 是否可以实现这种布局 抱歉 我还没有代码 FlatList
  • CSS 动画延迟和关键帧

    我在 CSS 动画上遇到动画延迟问题 我有 3 张图片 我想将其制作为幻灯片 插图是 图像1到图像2需要15秒改变 图像2到图像3需要15秒改变 图像3回到图像1需要30秒 在第一个循环之后 我想让幻灯片结束于图像3 因此图像1到图像2仍然
  • Flexbox 调整大小和可滚动溢出[重复]

    这个问题在这里已经有答案了 我有正在调整大小的内容 并且我想要一个固定标题 该标题不会增大 缩小 并且不属于可滚动内容的一部分 如果空间不足 下面的内容将变得可滚动 内容外包装 flexGrowWrapper has a flex grow
  • 正常显示截断的文本,但悬停时显示完整文本

    我有一个 div 里面有一段左右的文本 我希望它正常显示前几个单词 但在悬停时展开以显示全文 理想情况下 我想仅使用 CSS 来完成此操作 而不需要重复数据 这是我尝试过的 div 1 ONE div
  • 将值设置为输入字段时,西班牙语文本无法正确显示

    我正在尝试将西班牙语文本设置到输入字段 但它似乎没有正确显示 但是 如果相同的文本位于 div 内部或已设置为输入字段的值 则该文本可以正常显示 HTML div Cuenta de Ahorros Persona F iacute sic
  • 如何阅读 CSS 中的 !important ? [复制]

    这个问题在这里已经有答案了 CSS属性属性是怎样的 important read Is it really important exclamation mark important Answer 从下面的答案来看 似乎很简单importan
  • 如何使用标准 JavaScript 在 CSS 转换结束后立即重新启动它?

    我构建了一种密码生成器 只要倒计时到期 它就会显示新密码 不幸的是 我只设法弄清楚如何运行我的代码一次 倒计时由一个简单的 CSS 过渡组成 我想保留它 因为它比我的其他尝试平滑得多 其中我尝试使用 JavaScript 重复更新宽度 va
  • Div 独特的 CSS 样式链接

    我想为单个特定 div 中的链接创建独特的样式 例如 我希望主体中的所有链接为粗体和红色 但在侧边栏 div 中我希望它们为蓝色和斜体 我该怎么办 I have a link color 666666 a visited color 003
  • CSS如何制作可滚动列表

    我正在尝试创建一个由标题和标题下方的项目列表组成的网页 我希望项目列表可以垂直滚动 我还希望网页占据整个窗口 但不要更大 目前我的问题是项目列表不可滚动 而是延伸到窗口底部下方很远 这导致窗口可滚动 应该做什么CSS属性位于html bod
  • 未捕获的异常:数据表编辑器 - 不允许远程托管代码

    我正在尝试使用 Datatables 使用 datatableseditor 来实现 CRUD 操作 但是我收到错误消息 1 未捕获的异常 数据表编辑器 不允许远程托管代码 请参见http editor datatables net有关如何
  • IE localStorage 事件失火

    在 Internet Explorer 9 和 10 中 localStorage 实现意外地触发事件 这里有很棒的线索 Chrome 的 localStorage 实现存在错误 https stackoverflow com questi
  • 悬停 CSS 仅适用于 Chrome

    嘿 我正在尝试使用 CSS 悬停类 它在 Chrome 上运行良好 但在 Firefox 上运行不佳 任何帮助表示赞赏 这是我的 CSS albumbox labeltext visibility hidden albumbox hover
  • Sphinx内联代码高亮

    我使用 Sphinx 制作一个包含代码示例的网站 我成功地使用了 code block获取语 法高亮的指令 但我无法使用此代码获得内联语法突出显示 role bash code language bash Test inline bash
  • 深层嵌套 Flexbox 布局是否会导致性能问题?

    我一直在开发一个 ReactJS 项目 其中我使用 Flexbox 布局创建了大部分组件 由于使用 React 我们可以拥有深度嵌套的组件 因此我的布局具有嵌套的 Flexbox 布局 现在我的问题是 这对性能有任何问题吗 在一个页面上 有

随机推荐