ページを左側のパネル ブロックと右側のコンテンツ ブロックの 2 つの部分で構成したいと考えています。ビュー ポートに合わせてページを引き伸ばす必要があり、これら 2 つのブロックも引き伸ばす必要があります。
コードは次のとおりです。
<!DOCTYPE html>
<html>
<head>
<title>Void Museum</title>
<meta charset="utf-8">
<style type="text/css">
html * {
margin: 0;
padding: 0;
}
#panel,
#content {
position: absolute;
top: 0;
bottom: 0;
}
#panel {
left: 0;
width: 250px;
background: #CFC;
}
#content {
left: 250px;
right: 0;
background: #FCC;
}
.AccordionMenu {
width: 250px;
height: 100%;
overflow: hidden;
}
.AccordionMenu > header {
width: 100%;
height: 50px;
}
.AccordionMenu > section {
width: 100%;
}
.AccordionMenu > section > p {
width: 100%;
height: 0;
overflow: hidden;
background: #F00;
-webkit-transition: all 1s;
-moz-transition: all 1s;
-ms-transition: all 1s;
-o-transition: all 1s;
transition: all 1s;
}
.AccordionMenu section:target p {
height: 300px;
}
.AccordionMenu header {
background: #0F0;
}
</style>
<script type="text/javascript">
</script>
</head>
<body>
<div id="panel">
<div class="AccordionMenu">
<section id="block0">
<header><a href="#block0">BLOCK 0</a></header>
<p>CONTENT 0</p>
</section>
<section id="block1">
<header><a href="#block1">BLOCK 1</a></header>
<p>CONTENT 1</p>
</section>
<section id="block2">
<header><a href="#block2">BLOCK 2</a></header>
<p>CONTENT 2</p>
</section>
<section id="block3">
<header><a href="#block3">BLOCK 3</a></header>
<p>CONTENT 3</p>
</section>
</div>
</div>
<div id="content">
</div>
</body>
</html>
私の問題は、アコーディオンをページの高さに合わせたいのですが、ヘッダーのサイズがピクセル単位で固定されていることです。私は次のようなことをする必要があります:
.AccordionMenu section:target p {
height: 100% - 40px;
}
醜いハックを使わずにこれを行う方法についてのヒントはありますか? ID を使用せずにアンカーと :target を使用する方法はありますか?
前もって感謝します :)