【CSS】width(幅)とheight(高さ)の指定方法、auto、px、%指定|HTML&CSS入門講座(6)

HTML&CSS
この記事は約8分で読めます。

はじめに

 HTML&CSS入門講座の第六弾として、【CSS】width(幅)とheight(高さ)の指定方法、auto、px、%指定ついて紹介します。

 この記事を読むと次の疑問について知ることができます。

● 親要素と子要素の関係とはどのようなもの?
●width(幅)とheight(高さ)とは何?
●width(幅)の指定方法はどうするの?
●height(高さ)の指定方法はどうするの?
 HTML&CSS入門講座(4)では、「CSSの初心者入門、基本的な書き方、セレクタ、プロパティ、値」について、 HTML&CSS入門講座(6)では、CSSの中のdisplayプロパティーについて解説してきました。
 
 CSSの中のwidth(幅)とheight(高さ)の指定方法ついて深堀していきます。

親要素と子要素の関係

 要素には、HTMLでは、大元のbody要素があり、その中で色々とWeb文書を書いていきますので、一番の親要素がbody要素であるということを頭に入れておきましょう。

 そして、基本的な考え方として、子要素は親要素を超えないようにすることがキレイなWeb文書を作成する上では必要となります。

例えば、divタグにulタグを次のように書いたとしましょう。

<div class="oya">
<ul>
    <li> 箇条書き1 </li>
    <li> <span> 箇条書き2  </span> </li>
    <li> 箇条書き 3</li>
</ul>
</div>

このHTML文書で親と子の関係を示すと、次の通りに取ります。

大元の親要素 : bodyタグ(これらHTMLタグは、bodyタグ内で書く必要があるので)
親要素 : divタグ
divタグの子要素 : ul箇条書きタグ、spanタグ
ulタグの子要素(divタグから見ると孫要素) : spanタグ

width(幅)とheight(高さ)とは?

 要素の幅と高さを指定するのが、width(幅)とheight(高さ)となります。

 ここで、この要素とは何でしょうか?

 前述の「HTML&CSS入門講座(5)」の「CSSのdisplayプロパティとは?」の要素モデルを思い出してください。

 要素には、要素の中身、padding(余白)、border(線)、margin(余白)がありますが、width(幅)とheight(高さ)を指定できるのは、基本的には「要素に中身」に対してであることを頭に入れておきましょう。

width(幅)の指定方法

 widthの指定方法には、次の3つがあります。

width: auto
widht: 〇〇px
wicth:〇〇%

ここで、autoは初期値であり、何も指定しなければ、autoが指定されていると同じ。
〇〇 : 数値が入る。
 ここで例題として、上述のHTML文書に対してCSSで、次のように設定した場合どのようになるか見てみましょう。
 
.oya {background-color: rgb(0, 255, 128);}
li {width: 300px;
background-color: darkorange;}
span {background-color: rgb(248, 245, 246);} span {background-color: rgb(248, 245, 246);}
 
 最初のCSSのdivタグにはdisplayが設定されていませんので、divの初期値の「
display: block」が設定され、divのcalss名で設定した色(rgb(0, 255, 128)、薄グリーン)が横一杯に広がります。
 
 次に、箇条書liの中にdisplayが設定されていませんので、親の「display: block」が引き継がれ、幅が300px、背景(darkorange)が設定され、縦に並んだ形で表示されています。
 
 さらに、spanタグで、リストの真中を色(rgb(248, 245, 246)、白ぽい色)に設定されています。
 
.oya {background-color: rgb(0, 255, 128);}
li {display: inline; width: 300px;
    background-color: darkorange;}
span {background-color: rgb(248, 245, 246);}
 次に、上述のように箇条書きのliタグ内に「display: inline」を設定したらどうなるでしょう?
 
 
 今度は、liで設定した幅の広さ「width: 300px」は無視され(display:inlineでは、widthやheightの指定が効いてこない。)、文字園のものの大きさになり、背景だけが指定した色となっています。
 
.oya {background-color: rgb(0, 255, 128);}
li {display: inline-block; width: 300px;
background-color: darkorange;}
span {background-color: rgb(248, 245, 246);}

 次に、上述のように箇条書きのliタグ内に「display: inline-block」を設定したらどうなるでしょう?

 今度は、liで指定した「width: 300px」が効いてきて、各箇条書きの部分で300pxがとられています。

 以上のことから、前のおさらいですが、「display: inline」では、widthの設定は聞かない。

「displa: block」や「displa: inline-block」では、widthの設定が効く。

「displa: block」では、要素が縦に並ぶが、「displa: inline-block」では、要素が横に並ぶ。

また、初期値の「width: auto」は、要素が横幅一杯に伸びること、「width: 〇〇px」で指定してやると、その幅が〇〇pxとられることが分かります。

 それでは、widthに%指定をしてみます。

.oya {background-color: rgb(0, 255, 128); width: 900px}
li {display:block; width: 30%;
background-color: darkorange;}
span {background-color: rgb(248, 245, 246);}
.oya {background-color: rgb(0, 255, 128); width: 900px;}
li {display:inline-block ; width: 30%;
background-color: darkorange;}
span {background-color: rgb(248, 245, 246);}
 
 
 「wudth: 30%」を指定してやると、親のwidht指定が900pxであるので、その子のwidth指定で親の900pxの30%の幅、900×30/100(30%)=270pxがとられることになり、その通りになっていることが分かります。

height(高さ)の指定方法

heightの指定方法には、次の3つがあります。

height: auto
height: 〇〇px
height:〇〇%

ここで、autoは初期値であり、何も指定しなければ、autoが指定されていると同じ。
〇〇 : 数値が入る。
 ここで、widthのautoの場合は、bodyが元親のために、autoの場合は横一杯に広がりましたが、heightのautoは縦一杯に広がるのではなく、文字の大きさ分だけ取られることが大きな違いです。
 
 したがって、「display: block」で要素が複数あれば、その分だけ縦の高さが広がることを意味します。
 
<div class="oya1">
<p> これは子要素だよ! </p>
</div>
<p> <span>これも子要素だよ!</span>
<p>
<img src=""https://yanai-ke.com/wp-content/uploads/2020/07/ponponmamu.jpg" alt="黄色のポンポンマムの花だよ!" width="300" height="200" />
</p>
.oya1 {background: orange;}
span {background-color: green;}
 
 結果は下図となります。
 
 displayになにも設定していなので、初期値の「display: block」となっているために。要素は縦に並んでいます。
 
 heightは何も指定していないので、文字の高さ、imgで指定した高さがとられて表示されています。
 
「height=〇〇px」と「height=〇〇%」指定をしてみます。
 
.oya1 {background: orange; height=100px}
span {display:block; background-color: green; height=50%}
img {display:block; height=50%}
 
 最初の段落タグで指定した「height=100px」は、指定された通りの高さに設定されましたが、後のspanタグ中の高さやimgタグ内の高さを%指定しても、それが指定通りに設定されません。
 
 このように高さに関する指定は、かなり難しい面があるので、あまり使わないほうが良いでしょう。

おわりに

 如何だったでしょうか?

 親要素と子要素の関係とはどのようなもの?、width(幅)とheight(高さ)とは何ですか?、width(幅)の指定方法はどうするのですか?、auto、px指定、 %指定、height(高さ)の指定方法はどうするのですか?、auto、px指定、%指定などについて解説してきました。

 この記事があなたにとって少しでもお役に立てればこれほど嬉しいことはありません。

以上です。

コメント

タイトルとURLをコピーしました