見出し画像

viewportを使った単位(CSS)

勉強したはずなのにズッコケた、
Webデザイン技能検定の筆記試験復習シリーズ。
(令和元年度第3回)

CSS3の新単位、vw・ vh・ vmin・ vmaxについて。

CSS2.1以降、絶対単位となった「px」と
親要素に対して相対単位(倍率)の「%」に加えて
vw・ vh・ vmin・ vmaxが登場。


(1)viewportとは

「表示領域」のこと。
デスクトップ環境(PCなど)のブラウザでは、
ブラウザウインドウの表示領域。

ブラウザのメニューはサイズに含まれない。
(ページが表示されるところのみ)


(2)それぞれの単位名称

 ①vw(viewport width)
 ビューポート幅を基準にした相対サイズ 。

 ②vh(viewport height)
 ビューポートの高さを基準にした相対サイズ。

 ③vmin(viewport min)
 ビューポートの幅と高さで、小さい方を基準にした相対サイズ。

 ④vmax(viewport max)
 ビューポートの幅と高さで、大きい方を基準にした相対サイズ。


(3)この単位の便利なところ

親要素の幅や高さに対して設定される「%」(親要素依存)と違い、
vhやvwは、ブラウザの表示寸法に依存する。

色々な要素ごとにサイズ設定が複雑になっている場合は、
(タブの階層が多い、など)
view portシリーズを使って設定すると
設定値が親要素にひっぱられずに済む。


(4)サンプル

(HTML)

<div>vw</div>
<div class="content content-a">A auto</div>
<div class="content content-b vw-50">B 50vw</div>
<div class="content content-c vw-25">C 25vw</div>
<hr />
<div>vh</div>
<div class="content content-a">A auto</div>
<div class="content content-b vh-50">B 50vh</div>
<div class="content content-c vh-25">C 25vh</div>
<hr />
<div>vmin</div>
<div class="content content-a">A auto</div>
<div class="content content-b vmin-50">B 50vmin</div>
<div class="content content-c vmin-25">C 25vmin</div>
<hr />
<div>vmax</div>
<div class="content content-a">A auto</div>
<div class="content content-b vmax-50">B 50vw</div>
<div class="content content-c vmax-25">C 25vw</div>


(CSS)

.content {
   color: #fff;
   text-align: center;
}
.content-a {
   background: #7fc2ef;
}
.content-b {
   background: #d685b0;
}
.content-c {
   background: #dbe159;
}
.vw-50 {
   width: 50vw;
}
.vw-25 {
   width: 25vw;
}
.vh-50 {
   width: 50vh;
}
.vh-25 {
   width: 25vh;
}
.vmin-50 {
   width: 50vmin;
}
.vmin-25 {
   width: 25vmin;
}
.vmax-50 {
   width: 50vmax;
}
.vmax-25 {
   width: 25vmax;
}


これを実行すると、ウィンドウの横幅・縦幅をいじった場合
「25vh/50vh」
「25vw/50vw」
「25vmax/50vmax」
「25vmin/50vmin」
で設定されているdivのサイズが変動する。


【出典】


いいなと思ったら応援しよう!