CSS3: visibility プロパティ - ボックスの表示・非表示

■ 概要

項  目説  明
記述形式 セレクタ {visibility: }
値 の形式 visiblehiddencollapse
初 期 値 visible
対応ブラウザー C2+ / e4+ / N6+ / Fx1+ / Op4+ / Ch1+ / Sa1+
適用可能な要素 すべての要素
継  承 する

■ 解説

visibilityプロパティ は,ボックスの表示・非表示を指定します。

指定できる値の形式は,以下のとおりです。

説  明
visible ボックスを普通に表示します。 (初期値)
hidden ボックスを表示しません。 ただし,この要素があることによるレイアウトは変わりません。 また,visibilityプロパティ の値が visible である子孫要素は表示されます。
collapse table要素 の 構成要素の中で,tr要素thead要素tbody要素tfoot要素col要素colgroup要素 では,非表示で折りたたみます。 それ以外の要素では,値: hidden 指定した場合と同様の効果があります 。

このプロパティの値: hidden で指定できるのは,ボックスの非表示のみです。  ボックスの表示領域は確保された形で表示されます。 ボックスの表示領域を確保せず, この部分を詰めて表示するには,さらに display プロパティ で値を none に設定する必要があります。

CSS2.1 までとは一部仕様が変更になっています。

■ 使用例( visibility プロパティの利用1)

HTMLソース
CSS
<head> ~ </head>
<style type="text/css">
<!-- 
   .vis1 { visibility: visible; background-color: #cc9999; }
   .vis2 { visibility: hidden; }
   .vis3 { visibility: collapse; }
   .vis4 { visibility: hidden; display: none; }
-->
</style>
HTML
<body> ~ </body>
<h5><b>div要素</b> (ブロック)</h5>
<hr>
<div class="vis1">表示1</div>
<hr>
<div class="vis2">非表示2</div>
<hr>
<div class="vis3">非表示3</div>
<hr>
<div class="vis4">非表示4</div>
<hr>
<div>表示5</div>
<hr>

<h5><b>span要素</b> (インライン)</h5>
<div>
  [ <span class="vis1">表示1</span>
  | <span class="vis2">非表示2</span>
  | <span class="vis3">非表示3</span>
  | <span class="vis4">非表示4</span>
  | <span>表示5</span> ]
</div>

ブラウザー 表示例
div要素 (ブロック)

表示1

非表示2

非表示3

非表示4

表示5

span要素 (インライン)
[ 表示1 | 非表示2 | 非表示3 | 非表示4 | 表示5 ]

■ 使用例( visibility プロパティの利用2)

HTMLソース
CSS
<head> ~ </head>
<style type="text/css">
<!-- 
   table.sample { border: 1px solid #006666; }
   table.sample td { border: 1px solid #006666; }
   .vis1 { visibility: visible; background-color: #cc9999; }
   .vis2 { visibility: hidden; }
   .vis3 { visibility: collapse; }
   .vis4 { visibility: hidden; display: none; }
-->
</style>
HTML
<body> ~ </body>
<table class="sample" border="1">
 <caption style="width:28em;">テーブルで一部の <b>tr要素</b>,
      <b>td要素</b>に <b>visibility: collapse</b> を適用</caption>
 <tr class="vis1">
    <td>表示11</td><td>表示12</td>
    <td>表示13</td><td>表示14</td><td>表示15</td>
 </tr>
 <tr class="vis2">
    <td>非表示21</td><td>非表示22</td>
    <td>非表示23</td><td>非表示24</td><td>非表示25</td>
 </tr>
 <tr class="vis3">
    <td>非表示31</td><td>非表示32</td>
    <td>非表示33</td><td>非表示34</td><td>非表示35</td>
 </tr>
 <tr class="vis4">
    <td>非表示41</td><td>非表示42</td>
    <td>非表示43</td><td>非表示44</td><td>非表示45</td>
 </tr>
 <tr>
    <td class="vis1">表示51</td><td class="vis2">非表示52</td>
    <td class="vis3">非表示53</td><td class="vis4">非表示54</td>
    <td class="vis2"><span class="vis1">表示55</span></td>
 </tr>
</table>

ブラウザー 表示例
テーブルで一部の tr要素td要素visibility: collapse を適用
表示11表示12 表示13表示14表示15
非表示21非表示22 非表示23非表示24非表示25
非表示31非表示32 非表示33非表示34非表示35
非表示41非表示42 非表示43非表示44非表示45
表示51非表示52 非表示53非表示54 表示55

第3行は visibilityプロパティ の値が collapse であるため,全く表示されません。

第4行や第5行4列は visibilityプロパティ の値が hidden で,かつ, display プロパティ の値が none であるため, この行やセルは表示されずに,次の行やセルの内容がそこに表示されています。

第5行5列は <td>visibilityプロパティ の値は hidden ですが,子要素の <span> では visibilityプロパティ の値は visible ですので,この部分のみ表示されます。

■ 備考

【参考ページ】