ハッシュタグリンクを使用したCSSのみのタブを実装しています。私は非常に近いですが、フレックスラップを正しく動作させることはできません。私はこれをラジオボタンでこれまでやったことがありますし、柔軟性もあります。すべてのタブとすべてのセクションが同じレベルにあるので、私は次のようになります:異なる高さの行を使用したフレックスラップ
body
section
anchor
section
anchor
...
フレックスボックスの順序を使用してすべてのアンカーを最初に表示し、適切にスタイルを設定し、すべてのセクションを幅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
も無視されているようです。
フレックスボックスでラップするときの問題は、特にラインの高さに関するものです。私はcssとjsの両方でタブを構築する百万の異なる方法を知っています。私は具体的にflex-wrap
の深い理解を探しています。
ですから、とき、タブ起こることを正確に何をしたいですかラップ?たぶん、あなたはあなたが望む結果を示すことができます。 –
@Michael_Bは例を実行します。コンテンツのサイズに崩壊するのではなく、セクションと同じ高さに伸ばしている様子が見えますか?私はそれらをタブのように見せたいが、代わりにそれらはすべて伸びている。私は両方の行のサイズを内容に合わせるようにします –
フレックスコンテナの2つの初期設定は 'align-items:stretch'と' align-content:stretch'です。値を 'flex-start'に変更することでこれを無効にすることができます。 –