次のようなマークアップがあります。
<table>
<thead>
<tr>
<th>Col1</th>
<th>Col2</th>
<tr>
</thead>
<tbody>
<tr class="main">
<td>some content</td>
<td>some content2</td>
<tr>
<tr class="more">
<td colspan="2">
<div class="more-link"><a tabindex="0" href="#">Show more info</a></div>
<div class="more-info">
more info goes here
</div>
</td>
<tr>
</tbody>
</table>
そしていくつかの CSS:
td, th{
border: 1px solid red;
}
.main td{
height: 50px;
width: 300px;
vertical-align: top;
}
.main td{
border-bottom: 0;
}
.more td{
border-top: 0;
height: 0;
}
.more-link{
position: relative;
top: -30px;
}
.more-link:focus + div, .more-link:active + div{
height: auto;
}
私がやりたいことは、「詳細情報を表示」リンクをクリックすると、「詳細」という表の行が展開されることです。
問題点:
td
内部more
の高さを 0に設定しても効果はありません。more-info
divの高さを0
、またはに設定するdisplay:none
と、テーブルの行はまだスペースを占有します。
CSSだけでこれをやりたいのですが、javascriptを使ってもっと良くすることができますが、基本はjavascriptなしでうまくいくはずです。
リンクがクリックmore
されたときに行を展開するにはどうすればよいですか?show more info
そしてフィドル:http://jsfiddle.net/QJr2e/