我正在实现带有散列标签链接的css-only选项卡。我非常接近,但无法让柔性包装正常工作。为了一切工作,他们的方式我希望它与: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">
\t Advanced Stuff
</section>
<a href="#advanced">Advanced</a>
<section id="home">
\t Home Things
</section>
<a href="#home">Home</a>
Slightly easier to play with jsbin
的问题是,在第一行拉伸的可见部分,而不是崩溃到其内容的高度高度的标签。即使一个特定的height
和max-height
似乎被忽略。
请注意,这个问题是特别为约行高度与Flexbox的包裹时。我知道有一百万种不同的方式可以在css和js中构建标签。我特别想要更深入地了解flex-wrap
。
那么究竟你想要的标签时发生包?也许你可以说明你想要的结果。 –
@Michael_B运行这个例子 - 你会发现它们是如何拉伸到与截面高度相同的高度,而不是折叠到其内容的大小?我希望他们看起来像标签,但他们都伸出了。我希望这两行的大小都达到其内容 –
Flex容器的两个初始设置是'align-items:stretch'和'align-content:stretch'。您可以通过将值更改为'flex-start'来覆盖此值。 –