【独学】はじめてのWebプログラミング – 3.3 CSSの基礎①

HTMLはWebページの構造をつくるためのプログラミング言語でした。
それに対し、CSSは「Cascading Style Sheets」の略で、Webページの装飾(デザイン)を整えるプログラミング言語です。例えば、文字の大きさを変更したり、背景色を変えたりすることができます。

CSSファイルを作成してみよう

CSSファイルを作成してみましょう。
「htdocs\HTML」フォルダ内に、「style.css」というファイルを作成します。

VSCode

ファイル名の後に.cssと付けると、WebブラウザがCSSファイルと認識してくれます。
HTMLファイルのheadタグ内にlinkタグを追加し、以下のようにstyle.cssを指定します。これで、HTMLファイル内で、CSSファイルの内容を読み込むことができます。

VSCode

CSSの構成について

CSSは以下のように書きます。

VSCode

HTMLのタグ名(bodyタグやdivタグなど)を指定して装飾するか、
HTMLのタグの属性として付与した任意のidを指定して装飾するか、
HTMLのタグの属性として付与した任意のclassを指定して装飾するか、になります。

idの場合は、idの前に「#」(シャープ)をつけるのがルールです。
classの場合は、classの前に「.」(ドット)をつけるのがルールです。

装飾の仕方は、「プロパティ: 値;」のように指定し、例えば、プロパティは文字色、値は赤色、などです。
次から、具体的に見ていきます。

colorプロパティ

カラーキーワードでの指定

colorプロパティは、文字の色を指定するプロパティです。
例えば、以下のように書きます。

VSCode

htdocs/HTML/index.html

<!DOCTYPE html>
<html>
    <lang="ja">
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="style.css">
        <title>CSSの基礎</title>
    </head>
    <body>
        <div>ここの文字を装飾します</div>
    </body>
</html>

htdocs/HTML/style.css

div {
    color: red;
}
ブラウザ

index.htmlにdivタグを追加します。
style.cssでは、そのdivタグに対し、colorプロパティを指定し、値をredにしています(=divタグの文字色を赤にする)。

CSSファイルを修正したのに、表示が変わらない場合は、Webブラウザがキャッシュ(=古いデータ)を保持していることが考えられます。
この場合、以下のようにスーパーリロードしてWebブラウザ画面を再表示します。

・Winows … Webブラウザ上で、キーボード「ctrl」「shift」「R」を同時に押す
・Mac … Webブラウザ上で、キーボード「command」「shift」「R」を同時に押す

スーパーリロードとは、Webブラウザのキャッシュを無効にして表示することです。

colorプロパティの値は、「red」「green」「blue」などのカラーキーワードで指定することもできますが、以降のように他の形式で指定することもできます。

カラーコードでの指定

colorプロパティに対して、0~9、a~f の値で指定することができます。

VSCode

先頭に「#」、その後に6桁の数字で指定します。
6桁の数字の内、最初の2桁は赤色、真ん中の2桁は緑色、最後の2桁は青色のそれぞれの色の強さを表します。つまり、光の3原色である赤、青、緑の強度で色を表すわけです。
例えば赤を表示させる場合は「#ff0000」になるわけです。

rgbでの指定

colorプロパティに対して、rgbで指定することができます。
rgbとはRed、Green、Blueの頭文字を取ったもので、0から255までの数字で指定します。例えば赤色にしたい場合はこのように指定することができます。

VSCode

また、透明度(Alpha)を指定することもできます。
その場合はrgbにa(Alpha)を加えて、以下のように指定します。

VSCode

透明度を加えると、以下のような結果になります。

ブラウザ

透明度の値は、0~1の間で指定します。0を指定すると完全に透明になります。

hslでの指定

colorプロパティに対して、hslで指定することができます。
hslとはHue(色相)、Saturation(彩度)、Lightness(輝度)の頭文字を取ったもので、「hsl(207, 100%, 86%);」のように指定します。rgbと同様、透明度(Alpha)を指定して、「hsl(207, 100%, 86%, 0.5);」のように書くこともできます。

VSCode

こちらのサイトを参考に、各値を変えて色味を見てみて下さい。

font-familyプロパティ

font-familyプロパティは、文字の種類(フォント)を指定するプロパティです。

Webサイトのコンテンツの大半はテキスト情報です。
Webサイトは指定したフォント次第で、読み易くも、読みにくくもなるため、font-familyはとても重要な役割を果たします。
沢山の種類があるWebフォントですが、基本的にはゴシック体か、明朝体のいずれかに分類されます。
画像からも分かるように、ゴシック体を使うとより強いインパクトを与えることができます。反対に、明朝体を使うとより上品な印象を与えることができます。

font-familyの説明

font-familyプロパティは、1つ以上の値(フォント)をカンマで区切って指定します。

font-family: Arial, Helvetica, sans-serif;

なぜfont-familyの値を複数書く必要があるのかというと、Windows、MacなどのOSによって搭載されているフォントが異なるからです。
例えば上記のコード例でいうと、 「Arial」というフォントがOSに搭載されていなければ、「Helvetica」というフォントを探し、それも搭載されていなければ「sans-serif」を探す、という作業をWebブラウザが行ってくれます。

font-weightプロパティ

font-weightプロパティは、文字の太さを指定するプロパティです。
font-weightで文字の太さを指定する方法は2種類あります。

数値での指定

font-weightプロパティに対して、100〜900の100刻みの数値で文字の太さを指定することができます。font-weightプロパティは何も指定をしないと、文字の太さは400がデフォルトで指定されます。

例えば、以下のように書きます。

VSCode

htdocs/HTML/index.html

<!DOCTYPE html>
<html>
    <lang="ja">
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="style.css">
        <title>CSSの基礎</title>
    </head>
    <body>
        <p>ここの文字を装飾します</p>
    </body>
</html>

htdocs/HTML/style.css

p {
    font-weight: 700;
}

次に、font-weightの値を変えてみます。

htdocs/HTML/style.css

p {
    font-weight: 100;
}
ブラウザ

キーワードでの指定

font-weightプロパティに対して、以下の4種類のキーワードで文字の太さを指定することができます。

  • normal(数値では400)
  • bold(数値では700)
  • lighter(今の太さより1段階細く)
  • bolder(今の太さより1段階太く)

それぞれ、font-weightプロパティの値として設定して、試してみて下さい。

widthプロパティ、heightプロパティ

widthプロパティは横幅を、heightプロパティは高さを指定するプロパティです。
例えば、以下のように書きます。

VSCode

htdocs/HTML/index.html

<!DOCTYPE html>
<html>
    <lang="ja">
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="style.css">
        <title>CSSの基礎</title>
    </head>
    <body>
        <div>widthとheightのテストです</div>
    </body>
</html>

htdocs/HTML/style.css

div {
    width: 300px;
    height: 100px;
    background-color: green;
}
ブラウザ

index.htmlにdivタグを追加します。
style.cssでは、そのdivタグに対し、widthプロパティとheightプロパティでdivブロックの横幅と高さを指定しています。さらに、分かり易さのため、同divブロックの背景色としてbackground-colorプロパティというものを指定し、値をgreen(緑色)にしています。

widthプロパティとheightプロパティを指定しなかった場合、横幅は横にいっぱい、高さは適当な長さ(文字の高さなど)になります。

htdocs/HTML/style.css

div {
    /* widthプロパティとheightプロパティの指定を削除 */
    background-color: green;
}
ブラウザ

widthプロパティとheightプロパティを指定しなかった場合は、同プロパティに「auto(自動)」を指定したのと同じになります。

htdocs/HTML/style.css

div {
    width: auto;
    height: auto;
    background-color: green;
}
ブラウザ

widthプロパティとheightプロパティの指定は、pxやautoのほかに、「%」でも指定できます。%で横幅と高さを指定した場合は、親要素に対する横幅と高さの割合になります。

htdocs/HTML/index.html

<!DOCTYPE html>
<html>
    <lang="ja">
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="style.css">
        <title>CSSの基礎</title>
    </head>
    <body>
        <div class="parent">
            <div class="child">
                widthとheightのテストです
            </div>
        </div>
    </body>
</html>

htdocs/HTML/style.css

.parent {
    width: 300px;
    height: 100px;
    background-color: green;
}

.child {
    width: 70%;
    height: 50%;
    background-color: grey;
}
ブラウザ

index.htmlでは、親要素であるdivタグにclass=”parent”を付与し、子要素であるdivタグにclass=”child”を付与しています。
style.cssでは、それらのクラスに対してwidthプロパティとheightプロパティで横幅と高さを指定しています。childクラスは、親要素であるparentに対して背景色を変え、%で横幅と高さを指定しています。

min-widthプロパティ、min-heightプロパティ

min-widthプロパティは、横幅の最小値を指定するプロパティです。
例えば、以下のように書きます。

VSCode

htdocs/HTML/index.html

<!DOCTYPE html>
<html>
    <lang="ja">
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="style.css">
        <title>CSSの基礎</title>
    </head>
    <body>
        <div>横幅の最小値は300pxです</div>
    </body>
</html>

htdocs/HTML/style.css

div {
    width: 50%;
    min-width: 300px;
    background: green;
}
ブラウザ

min-heightプロパティは同様に、高さの最小値を指定するプロパティになります。

例えばパソコンでみる時はちょうどいいサイズなのに、スマホでみると小さすぎるという時に、「min-width」や「min-height」を用いると、指定した要素に対して「これ以上小さくすることはできないよ」というように最小値を設定することができるため、レスポンシブデザインでもちょうどいいサイズ感を維持することができます。

レスポンシブデザイン

レスポンシブデザインとは?

PC、タブレット、スマートフォンなど、異なる画面サイズの幅を基準にWebサイト表示を柔軟に調整し、見やすく最適な表示にすることを指します。

max-widthプロパティ、max-heightプロパティ

max-widthプロパティは、横幅の最大値を指定するプロパティです。
例えば、以下のように書きます。

VSCode

htdocs/HTML/index.html

<!DOCTYPE html>
<html>
    <lang="ja">
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="style.css">
        <title>CSSの基礎</title>
    </head>
    <body>
        <div>横幅の最大値は300pxです</div>
    </body>
</html>

htdocs/HTML/style.css

div {
    width: 50%;
    max-width: 300px;
    background: green;
}
ブラウザ

max-heightプロパティは同様に、高さの最大値を指定するプロパティになります。

marginプロパティ、paddingプロパティ

marginプロパティ、paddingプロパティはともに、余白を指定するプロパティです。
以下の違いがあります。

  • margin:要素の外側の余白
  • padding:要素の内側の余白

marginプロパティ

例えば、以下のように書きます。

VSCode

htdocs/HTML/index.html

<!DOCTYPE html>
<html>
    <lang="ja">
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="style.css">
        <title>CSSの基礎</title>
    </head>
    <body>
        <div>これは要素です</div>
    </body>
</html>

htdocs/HTML/style.css

div {
    width: 200px;
    margin: 0px;
    background: green;
}
ブラウザ

HTMLのdivタグに対し、width(横幅)を200pxに固定し、背景色を緑色にしています。さらに「margin: 0px」(=要素の外側の余白は無し)を指定しています。

次に、CSSを以下のように書き換えてみます。

htdocs/HTML/style.css

div {
    width: 200px;
    margin: 50px;
    background: green;
}
ブラウザ

横方向に50px、縦方向に50pxの余白ができました。
これが、要素の外側に余白を指定する、ということです。

上記以外に、要素の上側だけ余白を指定したり、右側だけ余白を指定することができます。以下が指定方法の一覧になります。

マージンの指定方法

要素の上下左右の余白を一括して指定する方法があり、以下が指定方法の一覧になります。値を半角スペースで区切って指定します。

マージンの指定方法

値を1つ指定した場合は、「上下左右」の余白に適用されます。
値を2つ指定した場合は、左の値から「上下」と「左右」の2つの余白に適用されます。
値を3つ指定した場合は、左の値から「上」と「左右」と「下」の3つの余白に適用されます。
値を4つ指定した場合は、左の値から順に「上」「右」「下」「左」(時計回り)の順に余白が適用されます。

paddingプロパティ

例えば、以下のように書きます。

VSCode

htdocs/HTML/index.html

<!DOCTYPE html>
<html>
    <lang="ja">
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="style.css">
        <title>CSSの基礎</title>
    </head>
    <body>
        <div>これは要素です</div>
    </body>
</html>

htdocs/HTML/style.css

div {
    width: 200px;
    padding: 0px;
    background: green;
}
ブラウザ

HTMLのdivタグに対し、width(横幅)を200pxに固定し、背景色を緑色にしています。さらに「padding: 0px」(=要素の内側の余白は無し)を指定しています。

次に、CSSを以下のように書き換えてみます。

htdocs/HTML/style.css

div {
    width: 200px;
    padding: 50px;
    background: green;
}
ブラウザ

divタグの内側(値である「これは要素です」に対して)横方向に50px、縦方向に50pxの余白ができました。
これが、要素の内側に余白を指定する、ということです。

上記以外に、要素内の上側だけ余白を指定したり、右側だけ余白を指定することができます。以下が指定方法の一覧になります。

paddingの指定方法

要素内の上下左右の余白を一括して指定する方法があり、以下が指定方法の一覧になります。値を半角スペースで区切って指定します。

paddingの指定方法

値を1つ指定した場合は、「上下左右」の余白に適用されます。
値を2つ指定した場合は、左の値から「上下」と「左右」の2つの余白に適用されます。
値を3つ指定した場合は、左の値から「上」と「左右」と「下」の3つの余白に適用されます。
値を4つ指定した場合は、左の値から順に「上」「右」「下」「左」(時計回り)の順に余白が適用されます。

borderプロパティ

borderプロパティは、要素の枠線を指定するプロパティです。
例えば、以下のように書きます。

VSCode

htdocs/HTML/index.html

<!DOCTYPE html>
<html>
    <lang="ja">
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="style.css">
        <title>CSSの基礎</title>
    </head>
    <body>
        <div>これは要素です</div>
    </body>
</html>

htdocs/HTML/style.css

div {
    width: 200px;
    border: solid 1px #000000;
}
ブラウザ

HTMLのdivタグに対し、width(横幅)を200pxに固定し、borderプロパティを指定しています。
borderプロパティの値には、枠線の種類、太さ、色を、半角スペースで区切って指定します。「border: 枠線の種類 太さ 色」のように指定します。

text-alignプロパティ

text-alignプロパティは、文字列や画像の水平方向の配置場所を指定するプロパティです。
例えば、以下のように書きます。

VSCode

htdocs/HTML/index.html

<!DOCTYPE html>
<html>
    <lang="ja">
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="style.css">
        <title>CSSの基礎</title>
    </head>
    <body>
        <div>これは要素です</div>
    </body>
</html>

htdocs/HTML/style.css

div {
    width: 500px;
    border: solid 1px #000000;
    text-align: left;
}
ブラウザ

HTMLのdivタグに対し、width(横幅)を500pxに固定し、枠線を指定しています。さらに、「text-align: left;」で、文字列の水平方向の配置を左側にしています。

次に、CSSを以下のように書き換えます。

htdocs/HTML/style.css

div {
    width: 500px;
    border: solid 1px #000000;
    text-align: center;
}
ブラウザ

「text-align: center;」とすることで、文字列の水平方向の配置が中央になりました。

次に、CSSを以下のように書き換えます。

htdocs/HTML/style.css

div {
    width: 500px;
    border: solid 1px #000000;
    text-align: right;
}
ブラウザ

「text-align: right;」とすることで、文字列の水平方向の配置が右側になりました。

line-heightプロパティ

line-heightプロパティは、行の高さを指定するプロパティです。
行の高さは、文字の大きさ(font-sizeプロパティの値)の高さを含めた高さとなり、余りが余白として上下に配分されます。「指定した行の高さ - フォントの高さ = 上下の余白」ということです。

line-heightの説明

line-heightの指定方法にはいくつかあります。

pxでの指定

例えば、以下のように書きます。

htdocs/HTML/index.html

<!DOCTYPE html>
<html>
    <lang="ja">
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="style.css">
        <title>CSSの基礎</title>
    </head>
    <body>
        <p>1行目</p>
        <p>2行目</p>
    </body>
</html>

htdocs/HTML/style.css

p {
    line-height: 20px;
    font-size: 14px;
}
ブラウザ

「line-heightが20px」で「font-sizeが14px」の場合、行の高さ20pxから文字の大きさ14pxを引いた残りの6pxが行間として上下均等に3pxずつ割り振られます。

次に、「line-heightが20px」で「font-sizeが30px」のようにCSSを書き換えてみます。行の高さが文字の大きさより小さな値の場合には、行か重なって表示されてしまいます。

htdocs/HTML/style.css

p {
    line-height: 20px;
    font-size: 30px;
}
ブラウザ

%での指定

line-heightプロパティの値を%で指定すると、親要素で計算された行の高さが、子要素以下にそのまま引き継がれます。

例えば、以下のように書きます。

htdocs/HTML/index.html

<!DOCTYPE html>
<html>
    <lang="ja">
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="style.css">
        <title>CSSの基礎</title>
    </head>
    <body>
        <div class="parent">親要素の文字列ですーーーーーーーーーーーーーーーーーーー<br><br>
            <div class="child">子要素の文字列ですーーーーーーーーーーーーーーーーーーー<br><br>
                <div class="grandchild">孫要素の文字列ですーーーーーーーーーーーーーーーーーーー<br><br></div>
            </div>
        </div>
    </body>
</html>

htdocs/HTML/style.css

.parent {
    width: 200px;
    font-size: 20px;
    line-height: 150%;  /* 20pxの1.5倍(=30px)が親要素の行の高さになる */
}

.child {
    font-size: 16px;
}

.grandchild {
    font-size: 12px;
}
ブラウザ

emでの指定

emは%と同じですが、書き方が異なります。
例えば、「150%」をemで書くと「1.5em」、「200%」をemで書くと「2em」になります。

単位を指定しない方法(推奨)

line-heightプロパティの値に「px」「%」「em」といった単位を指定しない方法です。「line-height: 1.5」のように書きます。

「%」「em」の場合、親要素で計算された行の高さが子要素以下に引き継がれるのでいした。単位を指定しない場合、 親要素で計算された行の高さは子要素以下に引き継がれず、子要素以下のfont-sizeに応じて行の高さは再計算されます。

style.cssを以下のように書き換えてみます。

htdocs/HTML/style.css

.parent {
    width: 200px;
    font-size: 20px;
    line-height: 1.5;  /* 20pxの1.5倍(=30px)が親要素の行の高さになる */
}

.child {
    font-size: 16px;
}

.grandchild {
    font-size: 12px;
}
ブラウザ

まとめると下表になります。

要素(フォントサイズ)line-height(150%)line-height(1.5em)line-height(1.5)
親要素(20px)行の高さ
30px(20px × 1.5)
30px30px
子要素(16px)30px30px24px(16px × 1.5)
孫要素(12px)30px30px18px(12px × 1.5)

本節の説明は以上になります。

トップページ <<前のカリキュラムへ戻る 次のカリキュラムへ進む>>

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