複数列のレイアウトに問題があります。メニューを 1 ~ 4 列に揃えたい div 要素のグループとして設計しました (画面の高さとメニュー項目の数によって異なります)。ハードコードすることはできません。
これが私のHTMLです(jsfiddle link):
<nav id="sideMenu" class="side-nav">
<article class="side-nav-content">
<div class="content-box-nav-wrapper">
<div class="content-box">
<div class="box-header pre-box-header"></div>
<div class="box-header">
<p>Option1</p>
</div>
<div class="box-header post-box-header"></div>
<div class="box-content">
<a>Link1</a>
<a>Link2</a>
</div>
</div>
</div>
<div class="content-box-nav-wrapper">
<div class="content-box">
<div class="box-header pre-box-header"></div>
<div class="box-header">
<p>Option1</p>
</div>
<div class="box-header post-box-header"></div>
<div class="box-content">
<a>Link1</a>
<a>Link2</a>
</div>
</div>
</div>
<div class="content-box-nav-wrapper">
<div class="content-box">
<div class="box-header pre-box-header"></div>
<div class="box-header">
<p>Option1</p>
</div>
<div class="box-header post-box-header"></div>
<div class="box-content">
<a>Link1</a>
<a>Link2</a>
</div>
</div>
</div>
<div class="content-box-nav-wrapper">
<div class="content-box">
<div class="box-header pre-box-header"></div>
<div class="box-header">
<p>Option1</p>
</div>
<div class="box-header post-box-header"></div>
<div class="box-content">
<a>Link1</a>
<a>Link2</a>
</div>
</div>
</div>
<div class="content-box-nav-wrapper">
<div class="content-box">
<div class="box-header pre-box-header"></div>
<div class="box-header">
<p>Option1</p>
</div>
<div class="box-header post-box-header"></div>
<div class="box-content">
<a>Link1</a>
<a>Link2</a>
</div>
</div>
</div>
</article>
</nav>
<div class="content">
<p class="wrong">This should be on the right side of mneu.</p>
</div>
私のCSSは次のようになります。
p, a {
color: black;
}
#sideMenu {
float: left; /*This float seems to mess up column layout's width*/
}
article.side-nav-content {
-webkit-column-width: 255px;
-moz-column-width: 255px;
column-width: 255px;
-webkit-column-gap: 28px;
-moz-column-gap: 28px;
column-gap: 28px;
-moz-column-fill: auto;
height: 200px;
}
.side-nav .content-box {
border: 1px solid #000;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
border-radius: 2px;
margin: 0px 0px 23px 0px;
color: #fff;
background: rgba(0, 0, 0, 0.1);
width: 255px;
-webkit-column-break-inside: avoid;
page-break-inside: avoid;
column-break-inside: avoid;
break-inside: avoid;
}
.content {
width: 100vw;
height: 100vh;
float: left;
}
.wrong {
color: red;
font-size: 20px;
}
body {
width: 200vw;
overflow-x:hidden;
}
ブラウザーで #sideMenu を調べると、3 列として表示され、幅が必要であるにもかかわらず、最初の列の幅しかないことがわかります。
どうすればこれを修正できますか? (赤いテキストは、右側の最後のボックスの横にある必要があります)
ページコンテンツの横にフロートが必要なので、フロートを削除することは良い解決策ではありません。
ユーザーのクリックでメニューを前後にスライドさせたいので、メニュー div とページ コンテンツをフローティングする必要があります。ユーザーのアクションでメニューの幅を 0% から 100% に変更したいのですが、コンテンツがメニューに干渉するため、それはできません。Chrome と Firefox の最新バージョンでテストしました。