15. How CSS works — Learn web development | MDN

Tatsuya Asami
7 min readJul 17, 2018

--

【所要時間】

1時間28分(2018年7月17日)

【概要】

・CSSとは何か学ぶ。
・どうやってHTMLをDOM(Document Object Model)に変換するか。
・どうやってCSSがDOMに適用できるか。
・基礎的なシンテックスや、実際にCSSがウェブページでどのように使われているか。

【要約・学んだこと】

・CSS(Cascading Style Sheets)はウェブページの見た目を作るものである。

・What is CSS?

ドキュメントは通常markup languageを使ったテキストファイルで構成される。
HTMLは最も一般的なmarkup languageで、SVGXMLといったものもある。

ユーザーにドキュメントを見せるということは、閲覧者が使用可能な状態に変換することで、FirefoxやChromeなどのブラウザはモニタやプリンターに表示するようデザインされている。

・How does CSS affect HTML?

ウェブブラウザはドキュメントがどのように表示されるかCSSルールを適用する。
CSSルールは

・Propaties : 背景や、サイズなどのHTMLコンテンツの更新などを設定する数値の特性。
・Selector : HTMLドキュメント全てにCSSルールを適用するかどうかといった、更新された特性値を選択するelementを選ぶ。

これらから成り立つ。
CSSルールはstylesheetに含まれるCSSルールは、ウェブページの外観を決める。詳しくはCSS Syntaxを参照。

・A quick CSS example

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>My CSS experiment</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>Hello World!</h1>
<p>This is my first CSS example</p>
</body>
</html>

<link rel=”stylesheet” href=”style.css”>
でstyle sheetが適用される。

スタイルシートの中身は

h1 {
color: blue;
background-color: yellow;
border: 1px solid black;
}

p {
color: red;
}

h1のテキストが青、背景が黄色、枠が幅1pxの黒のソリッド
pのテキストが赤

というのを意味する。

・Active learning: Writing your first CSS
CSSを書いてみよう。

<h1>Hello World!</h1><p>This is a paragraph.</p><ul>
<li>This is</li>
<li>A list</li>
</ul>

h1 {
color: red;
background-color: blue;
border: 2px solid green;
}p {
color: blue;
}
li {
background-color: pink;
}

このようになった。

・How does CSS actually work?

  1. ブラウザがHTMLとCSSをDOM(Document object Model)に変換する。DOMはコンピュータメモリにあるドキュメントを表し、ドキュメントの中身とスタイルを結合する。
  2. ブラウザがDOMの中身を表示する。

・About the DOM

DOMはツリー構造を持っている。マークアップ言語それぞれのelement, attribute, テキストは、ツリー構造のDOMノードとなる。ノードは他のノードの関係で定義される。子ノードの親ノードになるelementsもあり、子ノードは兄弟ノードも持つ。

DOMはCSSとドキュメントが出会う場所なので、デザインやデバッグを助け、CSSを維持する。

・DOM representation

下記のHTMLコードは

<p>
Let's use:
<span>Cascading</span>
<span>Style</span>
<span>Sheets</span>
</p>

DOMでは

P
├─ "Let's use:"
├─ SPAN
| └─ "Cascading"
├─ SPAN
| └─ "Style"
└─ SPAN
└─ "Sheets"

のようになる。PはSPANの親ノード、SPANはてtextの親ノードとなる。
ブラウザはこのようにHTMLコードを解釈して、ブラウザに出力する。

・Applying CSS to the DOM
先ほどのHTMLにCSSを加えると、ブラウザはHTMLを解析し、DOMを作成し、CSSを解析する。

・How to apply your CSS to your HTML

CSSをHTMLドキュメントに適用する方法は3種類ある。

  1. External stylesheet
    CSSを .css という拡張子で、別ファイルとして作成する。そして<link>elementからそのファイルを参照するやり方。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>My CSS experiment</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>Hello World!</h1>
<p>This is my first CSS example</p>
</body>
</html>

この<link rel="stylesheet" href="style.css">

h1 {
color: blue;
background-color: yellow;
border: 1px solid black;
}

p {
color: red;
}

このcssフィアルを参照する。もし何か変更する場合でもCSSを更新するだけでいいので、最適な方法。

2. Internal stylesheet
HTML headの中に<style>elementを入れるやり方。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>My CSS experiment</title>
<style>
h1 {
color: blue;
background-color: yellow;
border: 1px solid black;
}

p {
color: red;
}
</style>
</head>
<body>
<h1>Hello World!</h1>
<p>This is my first CSS example</p>
</body>
</html>

CSSファイルを直接修正できないcontent management systemで働くときなどで使いやすい方法である。しかし、もし修正が必要な場合、全てのページで繰り返し修正しなければならない。

3. Inline styles
1つのstyle attribute内に含まれる1つのelementだけに影響を与えるやり方。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>My CSS experiment</title>
</head>
<body>
<h1 style="color: blue;background-color: yellow;border: 1px solid black;">Hello World!</h1>
<p style="color:red;">This is my first CSS example</p>
</body>
</html>

メンテナンスが大変なため、このやり方はやらない方がいい。読んで理解するのも難しい。

【わからなかったこと】

特になし

【感想】

学生時代部活のホームページ作っていた時に、Internal stylesheetで作っていたが、external stylesheetの方法を知ってやり直したのを思い出した。

--

--

Tatsuya Asami
Tatsuya Asami

Written by Tatsuya Asami

Front end engineer. React, TypeScript, Three.js

Responses (1)