:target を使用して行う方法は次のとおりです- http://jsfiddle.net/joplomacedo/V6pJT/3/
HTML
<div class="block">
<a class="open" href="#menu"></a>
<div id="menu">
Menu Item 1<br />
Menu Item 2<br />
Menu Item 3<br />
Menu Item 4<br />
Menu Item 5<br />
Menu Item 6<br />
Menu Item 7<br />
<a class="close" href="#"></a>
</div>
</div>
CSS
.block {
position: relative;
}
#menu{
width: 100px;
background: red;
border: 1px solid #aaa;
}
#menu:target {
background: orange;
width: 200px;
}
.open,
.close {
position: absolute;
top: 0; bottom: 0;
left: 0; right: 0;
}
.close {
display: none;
}
#menu:target .close {
display: block;
}
残念ながら、この解決策では、クリックするたびにページがジャンプします。それも無駄に大きい。:checked セレクターを利用するソリューションでは、必要な html と css がはるかに少なくなり、クリックごとにページがジャンプすることもありません。これがその解決策であり、私が推奨するものです:
HTML...
<div class="block">
<label for="toggle"></label>
<input type="checkbox" id="toggle"/>
<div id="menu">
Menu Item 1<br />
Menu Item 2<br />
Menu Item 3<br />
Menu Item 4<br />
Menu Item 5<br />
Menu Item 6<br />
Menu Item 7<br />
</div>
</div>
...そしてCSS...
.block {
position: fixed;
bottom: 0;
}
#toggle {
display: none;
}
label[for="toggle"] {
position: absolute;
top: 0; bottom: 0;
left: 0; right: 0;
}
#menu{
width: 100px;
background: red;
border: 1px solid #aaa;
}
#toggle:checked ~ #menu {
background: orange;
width: 200px;
}
</p>
</p>