Deprecated: Constant E_STRICT is deprecated in /NF/home/kyoin0/shimizu/public_html/dokuwiki/inc/init.php on line 42
jyokyu:j10

目次

第10回 CSSの利用

戻る

今回の授業は、スタイルシート(CSS)の使い方を解説します。
そして自己紹介ページをCSSに対応したものに作り変える課題に取り組んでもらいます。

スタイルシート

スタイルシート(CSS)とは

j11_01.jpg

CSSは Cascading Style Sheets の略で、「スタイルシート」あるいは単に「スタイル」とも呼ばれます。

CSSはウェブページの見栄えを設定するための言語です。普通のHTMLページに追加でCSSを使うと、ページの見た目を良くできます。

例えば下記のサンプルは、CG画像ではなく、CSSによって作り上げられたデザインです。
通常のHTMLでは表現が難しい様々なデザインを実現できる様子が分かります。

CSSは現在、多くのサイトで使用されており、現代のモダンなデザインのWebページを作る際にほぼ必須テクニックと言っても良いでしょう。

CSSでいろんなものを作ってみた例

これはCSSで作った
テキストボックスもどきです。
テキストボックスのようなものを作り、色を塗ったりできます。
あのイーハトーヴォのすきとおった風、夏でも底に冷たさをもつ青いそら、うつくしい森で飾られたモリーオ市、郊外のぎらぎらひかる草の波。
Stay hungry. Stay foolish.
書体を変えたり、影やグラデーションなどをつけられます。
たとえばこういったデザインも
CSSを使えば実現できます!
3D変形もできます。
404
Not Found.
春はあけぼの。やうやう白くなり行く、山ぎはすこしあかりて、むらさきだちたる雲のほそくたびきたる。
さまざまなおしゃれデザインもできます。
DANGER
ストライプ模様も作れます。
loading
なんと動くものも作れます。

ウェブページが画面に表示される際の 色・サイズ・レイアウトといった表示の詳細だけでなく、プリンタなどで印刷される際のレイアウト、音声で読み上げられる際の再生情報など、さまざまな設定を行うために使われています。

CSS、すごそうですね!😲

なぜCSSを使うのか

HTMLにも見栄えを設定する項目があります。例えば <font>background 属性など、数多くの設定が存在します。また、表 <table> でページをレイアウトすれば、HTMLだけで文章の並べ方(レイアウト)を設定することもできます。

しかしウェブページの見栄えをHTMLで設定するのは、HTML本来の目的と異なる使い方です。HTMLは本来、情報構造を定義するためのしくみとして開発されました。しかし見栄え重視のために、表をレイアウト枠として使ったり、見た目に関するさまざまな設定が文章中に混じると、情報の構造が乱れます。人やコンピュータにとって分析しづらい文書構造になってしまえば、検索などが働きにくくなったり、内容の修正が難しくなったりして、せっかくの文献を有意義に活用しづらい状態になります。

<table>
 ↓↓↓
<table border="1" bgcolor="yellowgreen" cellpadding="4" cellspacing="0" align="center" width="400" height="300">
HTMLタグに見た目に関する設定を追加すると
複雑な記述になりがちです
(属性てんこ盛り)

そこで、HTMLでは文書構造のみを定義し、ページの見栄え(デザイン)についてはHTMLと別に管理することが推奨されるようになりました。この見栄えの設定に用いられるのがCSSなのです。

HTMLにCSSを加えることで
デザインされたウェブページが出来上がります。

要するに、デザインに関するごちゃごちゃした設定は、全部CSSにひとまとめにしようということです。

そして見栄えに関する設定をHTMLと分離したことで、HTMLの表現能力を大きく超える、より自由なデザインができるようにもなりました。

CSSのメリット

CSSには以下のようなメリットがあります。

  1. より多彩な表現ができます
    HTMLにはないさまざまなデザインをCSSで実現できます。
    たとえば半透明、影、3D変形、アニメーションなども行えます。
  2. 文書構造を保ったままページの見栄えを設定できます
    HTMLで見栄えを設定しようとして、文章の内容や意味にそぐわないHTMLを使用すると、文章構造が難解になります。そこでCSSを使うと文章構造(HTML)への影響を最小限にしながらページの見栄えを設定できます。ページの構造と見栄えを分離することで、HTMLの記述をスッキリさせられるのです。
  3. 作業しやすくなります
    例えばHTML文章中の見出し<h1>の色やサイズを変えようとすると、<h1>タグが使われているすべての箇所を修正する必要があります。 CSSを使うと、このような見栄えの設定を一括管理できます。
    また複数ページ間で同じデザインを共有できるので、サイト全体のデザイン変更などが容易になりデザインの大規模な編集が楽になります。
  4. SEO効果やアクセシビリティ向上に繋がります
    見栄えに関する記述をCSSにまとめ、HTMLから排除することで、Google等の検索エンジンにとって解釈しやすいページとなり、ページの分析処理なども軽量化されます。これによって閲覧者がサイト検索を適切に行えるようなSEO効果が期待できます。

※SEO(Search Engine Optimization)とは「検索エンジン最適化」という意味です。つまりGoogleやYahooなどの検索サイトで検索をした際に、より的確に(より上位に)表示されるための対策のことです1)

まとめると、HTMLは文章構造を担当し、CSSはデザインを担当する、というふうに役割分担させれば、編集や処理がしやすくなるということです。

j11_03.jpg

HTMLは文章を担当し、CSSはデザインを担当するという
役割分担が推奨されます

CSSを編集する準備

それでは、実際にCSSを書くための準備をしましょう。

サンプルのダウンロード

CSSを試すためのサンプルファイルを用意しました。こちらをダウンロードし、CSSを試してみましょう。

サンプルファイルセット css_sample.zip

ダウンロードしたファイルはZIP圧縮されており、ZIPの中には以下のようなファイルが格納されています。

ファイル 解説
index.html HTMLファイルのサンプルです。
mystyle.css CSSファイルのサンプルです。
somepicture.png 画像のサンプルです。

ZIPの中身は全て外に出してから使ってください。

ZIPの中から index.htmlmystyle.css を取り出し、デスクトップなど適当な場所に配置しましょう。もし htdocs フォルダ内に配置する場合は、他のファイルと混ざらないように、新しいフォルダを作ってその中に入れたほうが良いかもしれません。

HTMLを書くファイルは拡張子が .html で、CSSを書くファイルは拡張子が .css です。それぞれが別のファイルになっているのが特徴です。

HTMLファイルとCSSファイルはセットになっていて、CSSファイルに設定を書き込むと、HTMLの見た目が変化するようになっています。

それぞれをテキストエディタで開いて編集しましょう。

両方のファイルを開けたら、この後の項目で説明する例を参考に、自由に編集して実験してみましょう。内容が壊れても構いません。(もし良く分からない状態になってリセットしたくなったら、またZIP圧縮ファイルから初期状態のものを取り出しましょう)

複数のファイルを編集する

複数のファイルをテキストエディタで開いている時は、どのファイルを編集するのかを画面上部で見分けて作業します。

複数のファイルをVSCodeで開いた場合

上のような状態なら、index.html を編集中の状態です。
記入するファイルを間違えないようにしましょう。

CSSの書き方

CSSの具体的な書き方を解説します。

CSSは基本 .css ファイルに書き込みます。

基本的な書き方は、以下のようなものです。
みなさんもサンプルにある mystyle.css をテキストエディタで開き、中身を見ながら実際の様子を確かめてみましょう。

CSS

セレクタ { プロパティ: ; }
CSSの基本的な書き方

最初に「セレクタ」と呼ばれるキーワードが付きます。

「プロパティ」の後はコロン : を書き、「値」の後はセミコロン ; を書きます。似ているので間違えないよう注意しましょう。

もし必要なら、上のようなセットを必要ぶんだけ繰り返し書きます。 プロパティ:値; の部分も必要な数だけ増やせます。そしてそれら プロパティ:値; 全体を中括弧2) { ~ } で囲います。

セレクタ { プロパティ:値; }
セレクタ { プロパティ:値; プロパティ:値; プロパティ:値; }
セレクタ { プロパティ:値; プロパティ:値; }
   :           :
CSS設定をいっぱい書く場合の書き方

具体例を示しましょう。まずはとてもシンプルな設定を紹介します。

CSS

h1 { color:red; }

上の設定を実際に試してみましょう。CSSを書き込む場所はCSSファイルです。付属のサンプルファイルの場合は mystyle.css をテキストエディタで開いたら、下のように書き足して、保存(セーブ)しましょう。

mystyle.css に書き足した状態

@charset "UTF-8";
/* CSS スタイルシート */
body {
  background-color: #FFFFFF;  /* サンプルファイルには、*/
  color: #000000;             /* 最初からこんな風に書かれているので…… */
}
 
h1 { color:red; }             /* ← ここに書き足します。 */

1行目の @charset "UTF-8"; は文字化けを防ぐためのおまじないです。文字コードとして UTF-8 を使用するという意味ですが、良く分からない場合はそのままにしておいてください。

body { ~ } の部分が1つ目の設定です。例のように複数行にまたがる場合もあります。
そして書き足した h1 { ~ } の部分が2つ目の設定というイメージです。

/**/ の部分は「コメント」と言って、CSS的には無視されます。要するに、説明書きです。分かりやすいようにいろいろ書いてありますが、無視してOKです。

CSSを編集・セーブした後に付属の index.html をブラウザで開くと、CSSの効果が現れているはずです。
ブラウザの画面を リロード して再読み込みしましょう。
見出しの文字が赤くなっていたら成功です。CSSを書き換えたことで、文字の色が赤くなったというわけです。

CSSによって
<h1> が使われている見出し部分だけ赤くなった例

もしリロードしても反映されない場合は、キーボードの Ctrl+F5 を押してみましょう。
少し強力にリロードができます3)

上の設定の場合、h1 { color:red; } と書きましたが、h1 が「セレクタ」、color が「プロパティ」、red が「値」に相当します。それぞれ以下のような意味があります。

h1セレクタ { colorプロパティ:red; }
CSSのシンプルな例

なお、プロパティ:値; のセットは、全体を中括弧 {} で囲んでください。4)

これらを セレクタ { プロパティ:値; } のように組み合わせます。 h1 { color:red; } は、 <h1>要素に対して、文字色 color を、赤く red せよ という意味になります。 その結果、サンプルファイルの index.html では、<h1></h1> の見出し文字がすべて赤色になっているというわけです。

h1セレクタ { colorプロパティ:red; }

CSSはこのようにして、HTMLの特定の部分をデザインできるのです。

複数の宣言

一つのセレクタに対して複数のスタイル設定を行いたい場合は、中括弧 { } の中に プロパティ:値; のセットを複数書けます。セミコロン ; が区切りになるので、書き忘れないようにしてください。

中括弧 {} の範囲外に書いた設定は無効になるので注意してください。

複数の設定を行えばデザインの効果は互いに重なり合い、より複雑なデザインを実現できます。

セレクタ { プロパティ: ; プロパティ: ; プロパティ: ;... }
一つのセレクタに対して設定をいっぱい書く例

HTML
<h2>これは文字の色と背景色を変えた例です。</h2>
CSS

h2セレクタ { colorプロパティ:yellow; background-colorプロパティ:yellowgreen; }

実行例

これは文字の色と背景色を変えた例です。
文字色を黄色に color:yellow;
そして背景色を黄緑に background-color:yellowgreen;

上の例では <h2> の範囲に対して、文字色を黄色 color:yellow;、さらに背景色を黄緑 background-color:yellowgreen; に設定しています。

CSSを見ると、h2 { ~ } という構造の { ~ } の中に、color:yellow; という設定と、background-color:yellowgreen; という設定が2つ入っている形です。

このように プロパティ:値; のセットを複数書くと、複数の設定が重複して適用されていきます。

高度なデザインを行う場合は、この プロパティ:値; をたくさん書くことになります。{ ~ } の中身がどんどん長くなっていくことでしょう。

もちろん別の色を設定すれば、自由に色を変えられます。

CSS 別パターン

h2 { color:red;  background-color:orange;  }

実行例 別パターン

これは文字の色と背景色を変えた例です。
文字色を赤色に color:red;
そして背景色をオレンジ色に background-color:orange;

さらに別の設定を加える

上記のように セレクタ { プロパティ:値; プロパティ:値; ~ } が1つの設定のカタマリとなります。

さらに別のセレクタに対して設定を追加したい場合は、{ ~ } 範囲の外に、新たな セレクタ { プロパティ:値;~ } を追加しましょう。

原則 { ~ } が二重になることはない5)ので、セレクタ { セレクタ { ~ } } のように重ならなよう注意しましょう。

セレクタ { ~ } セレクタ { ~ } セレクタ { ~ }…のように続く構造が正しいです。

CSSの書き並べ方

セレクタ { プロパティ:; }
セレクタ { プロパティ:; プロパティ:; プロパティ:; }
セレクタ { プロパティ:; プロパティ:; }

CSS設定をいっぱい書く場合の書き方
適当に改行して見やすく並べましょう。

下の例は <h1><h2> に対するデザインを両方設定している例です。

h1 { color:white; background-color:blue;   }  /* h1 青い背景に白い文字 */
h2 { color:red;   background-color:orange; }  /* h2 オレンジの背景に赤い文字 */

第三章 CSSのメリット

CSSとHTMLでページをデザイン

HTML5では文章の構造と見栄えを分離することが推奨されている。

<h1><h2> が両方別々にデザインされました

このようにCSSは中括弧 { ~ } を含む特徴的な書き方をします。HTMLとCSSを見分ける際の参考にしてください。
そしてCSSは、原則CSSファイルに書き込むようにしましょう。

誤ってHTMLファイルにCSSを書き込むと、処理されずに文字がそのまま画面上に表示されてしまいます。つまりページ上に h1 { color:red; } などというよく分からない文字列が出現してしまうわけですね……。😆

コメント

/**/ で囲んだ範囲は「コメント」という扱いになり、CSSでは無効とみなされます。メモをコメントとして書き込んだり、一時的に無効にしたいCSSをコメントにしてしまうと便利です。

なお /* /* */ */ のように二重の入れ子構造を作ってしまうと正しく認識されなくなるので注意してください。

CSS
/* 段落の文字色を青くし、行の高さを1.5倍にする */
p { color:blue; line-height:1.5; }

上の例では、<p>の範囲に対して文字の色 color を青 blue にし、行の高さ line-height1.5 倍にする設定ですが、/* ~ */ の部分は無視して処理されるのでCSSとしての効果はありません。

上のようにコメントで人間にとって分かりやすい文章を書いておくと、あとで設定を確認する時に良いでしょう。

スペースや改行について

CSSでは、セレクタ・プロパティ・値のそれぞれの間に「半角スペース」「改行」「タブ」を自由に入れられます。

CSS
table {
  color: red;
  background-color: green;
}

改行やスペースを多めに使った例

table{color:red;background-color:green;}

スペースや改行を取り去って、全部つなげた例
どっちでもOK!

上の例は改行やスペースが異なりますが、どちらも全く同じ動作になります。

途中に改行を挟んでも、挟まなくても問題ありませんし、単語と単語の間や、中括弧 { } の前後にスペースを入れても入れなくても問題ありません。ただし background-colorgreen など単語の途中では改行やスペースで切らないようにしましょう。

それ以外の部分では、スペースや改行で自由に調整できるので、見やすくなるよう自由にアレンジしてください。CSSは設定が長くなりがちなので、適度に改行などすると良いでしょう。

全角スペースはNG

ただし「全角スペース」は誤動作の元になります。全角スペースをCSS内で使わないよう注意してください。

p { color:blue; line-height:1.5; }
/* ↑ こちらは正しく動作します */

p { color:blue; line-height:1.5; }
/* ↑ こちらは正しく動作しません
  全角スペースが混じっています */

違いがすごく分かりにくいですね……。

テキストエディタによっては、区別が付きやすいように全角スペースは □ のような記号で表示される場合があるので、注意してみると良いでしょう。

サクラエディタの例
全角スペースが □ のように見えています。

原則、日本語モードOFFで文字入力をするのが無難です。もしうっかり日本語モードONでCSSを入力してしまったなら、確定前にキーボードの F10 キーを押して半角英数に変換すると良いでしょう。

設定の重複

CSSでは、同じ効果を持つ設定を複数回書くと、原則、後に書いた設定が有効になり、設定の上書きが起こります。(「後」とは下の行という意味です)

HTML

<h1>これはh1見出しです</h1>

CSS

h1 { color:red; background-color:skyblue; }
h1 { color:blue; }  /* ← h1 に対する color の設定が重複しています */

実行例

これはh1見出しです

上の例の場合、CSSは2行書いてありますが、どちらも <h1> の範囲に対する設定です。

  • 前者は文字の色 color を赤色 red にし、さらに背景色 background-color を水色 skyblue に設定しています。
    こういう色合いです。
  • そして後者は文字の色 color を青色 blue に設定しています。
    こういう色合いです。

つまり、同じ <h1> に対して、color の設定が重複しているわけです。

この場合、文字の色 color は後から書いた設定で上書きされるため、後者の青色 blue が採用されます。一方、背景色 background-color の設定は重複していないので、水色 skyblue のままです。

このように設定が上書きされ、このような色合いになるわけです。

例えば上記のようにCSSの中で設定が重複しているとき、前者の color:red; 部分を書き換えても、最終的な結果は変化しないので注意してください(どんな色に設定しても、あとから上書きされるからです)。

逆にこの仕様を利用して、すでに設定されているデザインを部分的に修正したい場合に、後の方に修正したいCSSを追加で書き込んで意図的に設定の上書きを狙う、という方法もあります。

すでに設定されている部分は書き換えないので、元のCSS設定が壊れるリスクが減り、いざとなれば追加した部分を消して元の設定に戻せる、というメリットもあります。

よく分からなければ、とりあえず「一番最後に書いた設定が有効」と覚えておくと良いでしょう。

以上がCSSの基本的な書き方です。

他にもプロパティや値の設定の仕方がたくさんあるのですが、それらはおいおい紹介していきましょう。

HTMLへの組み込み方

それでは、作ったCSSをあなたのページで使えるようにするための方法を解説します。

今まであなたが作ってきた普通のHTMLページを、新たにCSSに対応させるには、準備が必要となります。

なお上でダウンロードしたサンプルファイルの場合は、先生がすでに準備しておいたので最初からCSSが使えるようにしてありますが、もしあなたが作った普通のHTMLファイルでもCSSが使いたくなった場合は、自分で以下のような準備を行ってCSSを使えるようにする必要があるでしょう。

CSSをHTMLに適用するには、大きく分けて3つの方法があります。

  1. 外部CSSファイルを読み込む ( <link>タグ ) おすすめ!
  2. ファイルごとに設定する ( <style>タグ )
  3. 局所的に設定する ( style属性 )

下で順に解説します。

外部CSSファイルを読み込む

別途CSSを記入したファイルを用意して、HTMLファイルに読み込ませる方法です。そのためにはHTML文章の <head></head> の範囲内に、以下のように <link>(リンク)タグを記述し、読み込ませたいCSSファイル名を指定します。

上でダウンロードしたサンプルファイルも、この方法を使用しています。最も基本的な方法です。とりあえずこの方法だけでも把握しておきましょう。

HTML

<html>
<head>
<!-- ↓↓ここでCSSファイルを読み込んでいます↓↓ -->
<link rel="stylesheet" href="xxx.css" >
</head>
<body>
<h1>第一章 はじめに</h1>
<p>・・・省略・・・</p>
</body>
</html>

CSSファイル「xxx.css」の内容
h1 { color: red; }  /* h1見出しの文字色を赤にする */

上の例では、<head></head> 範囲内に書かれている <link rel="stylesheet" href="xxx.css" > という記述によって xxx.css が読み込まれます。

ちなみに rel は「relation」の略です。

relation リレーション【rɪléɪʃən】 関係、関連、間柄 など

そしてCSSファイル側に書かれた設定によって、HTMLファイル内の全ての <h1> 見出しの文字色 color が赤色 red になるという、おなじみの設定が実行されます。

修正作業のしやすさなどを考慮すると、この方法でCSSを読み込むのがおすすめです。

またもう一枚、新しいHTMLページを作った場合も、同様に <head></head> 範囲内に <link rel="stylesheet" href="xxx.css" > と書き込めば、まったく同じCSS設定を別のページにも適用できるので、複数のページを同じデザインに統一できるというメリットがあります。いちいちページごとに細かい設定をしなくても良いので楽だというわけです。

たくさんページがあるサイトの場合、CSSを一つにまとめておけば、全てのページのデザインを一箇所で管理できるでしょう。

link タグを書いておけば
1つのCSSファイルで複数のページを一括デザインできます。

もしHTMLだけでデザインしようとすると、デザインを修正する際に全てのページを修正しないといけないので、とても大変です。ですがCSSを一つにまとめておけば、デザインを修正する際にCSSファイルを1箇所書き換えるだけで、そのCSSを使っている全てのページのデザインが修正されるので、とても効率的です!😁

他にもCSSの組み込み方があるので、余裕がある方は次の項目も参考にしてください。

細けえこたぁイイ! という方は、次の セレクタの種類 へ進んでください。

ファイルごとに設定する ( <style>タグ )

HTMLの <head></head> の範囲内に <style></style>(スタイル要素)を追加してCSSを設定する方法です。

HTML

<!DOCTYPE html>
<html lang="ja">
<head>
  <!-- ↓↓ここからCSS設定↓↓ -->
<style> h1 { color: red; } </style>
<!-- ↑↑ここまでCSS設定↑↑ --> </head> <body> <h1>第二章 CSSとは</h1> <p>・・・省略・・・</p> <h1>第三章 CSSの書き方</h1> <p>・・・省略・・・</p> </body> </html>

上の例では、<head></head> の範囲内に <style></style> が追加されており、CSS設定が書き込まれていることが分かります。

CSSを別のファイルに書かず、HTMLファイルの中に直接書き込んでいるのが特徴です。

そしてその効果により、このページ内の全ての <h1> 見出しの文字色 color が赤色 red になります。

CSS設定は書き込んだHTMLファイル内だけで有効になります(要するに、このページ限りの設定なのです)。

<style></style>を使えば
HTMLファイルの中に
直接CSSを書き込めます。

この方法は別のCSSファイルを必要としません。わざわざ別途CSSファイルを用意するほどではない、ちょっとしたテストなどに使えます。

局所的に設定する ( style属性 )

最後に紹介するのは、HTMLタグにそのつど style="~"(スタイル属性)を追加してCSSを記述する方法です。style 属性を追加したタグの範囲だけにCSS設定が有効です。

HTML

<p style="color:red; line-height:1.5;">CSSのメリットとは</p>

上の例は、基本は <p></p> による段落ですが、開始タグ <p>style 属性が追加されています。その結果、指定の段落のみ、文字色が赤、行間が1.5倍の高さになります。

好きなタグに style="~" を追加し、「~」の部分に プロパティ:値; のセットをいくつでも書き込めます。対象タグを指定するためのセレクタは、不要なので書きません。設定は style="~" を追加したタグ範囲のみで有効で、その場限りです。

この方法は、必要になったらそのつどスタイルを設定できて便利ですが、HTML記述が複雑になるので、あまりおすすめはしません。効率良く見栄えを管理するには、上で解説したように外部CSSファイルを読み込むのが推奨です6)

以上、あなたのHTMLにCSSを組み込む3つの方法でした。

セレクタの種類

CSSの基本(おさらい)

h1セレクタ { colorプロパティ:red; }

セレクタはデザインを適用する対象を示すものでした。 基本は h1 { ~ } のようにHTMLのタグの名前を書きます。すると、HTML内の <h1></h1> の範囲にデザインが設定されるという仕様でした。

しかし、実はセレクタの書き方は、他にもいくつかのパターンがあります。特別なセレクタを駆使することで、HTMLのさまざまな部分にデザインを適用できるようになります。特定のタグを改造できるだけではないのです。

代表的なセレクタとしては、以下のような種類があります。

名前 セレクタの書式 設定対象 具体例
要素型セレクタ タグ名 指定の要素 p {color:blue;}
一般的な使い方。指定のタグ全てが対象になります。
クラスセレクタ .クラス名 クラスを付けた要素 .sample {color:blue;}
<xxx class="sample"> のように class 設定をした要素が対象になります。
詳しくは次の項目で説明します。
IDセレクタ #id名 idを付けた要素 #sample {color:blue;}
<xxx id="sample"> のように id 設定をした要素が対象になります。
複数セレクタ セレクタ,セレクタ 複数の要素を同時に設定 h1,h2 {color:blue;}
複数のタグをまとめて対象にできます。上の例の場合なら h1h2 が両方影響を受けます。
子孫セレクタ セレクタ セレクタ 下の階層にある指定要素 table td {color:blue;}
上の例の場合なら table 要素の中にある td のみ対象になります。

特に「クラスセレクタ」は重要ですので、下で詳しく説明していきます。

クラスセレクタ

従来のセレクタ「要素型セレクタ」は、HTMLのタグを h1 のように指定してデザインするものでした。

しかし、この方法ではページ内に存在する全ての指定要素がCSSの影響を受けます。例えば h1 を指定すると、ページ内の全ての <h1> 要素が影響を受けてしまいます。

全てではなく、特定の要素だけにデザインを変更したいこともあるでしょう。なのに問答無用で全部の設定を変えられてしまうのは乱暴です。😥

そのような時に便利なのが「クラスセレクタ」です。クラスセレクタを使えば、特定の「クラス名」が付けられた要素に対してだけCSSを適用できるようになるのです。

クラスの書き方

クラスセレクタの効果を発揮させるには、あらかじめHTMLタグに class="~" のように「class(クラス)属性」を追加して、好きなクラス名を決めておきます。例えば以下のように設定します。

HTML

<h1 class="hogehoge">見出し</h1>
<h1>見出し</h1>
<h1>見出し</h1>

これは1つめの <h1> タグにだけ class="hogehoge" を追加し hogehoge というクラスを設定した例です。

hogehoge がクラス名にあたります。hogehoge というヘンテコな名前は、今てきとうに決めました!😆

クラス名は半角英数字で自由なものを決められます。

クラス名のルール

クラス名は自分で好きに決められるので、制作時に分かりやすいものをつけましょう。ただし下記のようなルールがあり、このルールに従ったクラス名でないとCSSが効果を発揮しません。

  • 1文字目は必ず英字にする。
  • 空白(スペース)を混ぜない。
  • 半角英数字とハイフン -、アンダースコア _ のみ使う。

そしてCSSではこのように書きます。

CSS

/* クラスセレクタの書き方 */
.hogehoge { color:red; background-color:orange; }

CSSでは、クラス名の先頭に ドット . を付けたものをセレクタとします。

小さいですが、hogehoge の先頭に付いているドット . を見落とさないでください!

これで class="hogehoge" を追加した要素のみ、CSS設定の影響を受けるようになります。つまり <h1 class="hogehoge"></h1> と書かれた一番目の要素のみ、デザインが設定されます。

実行例

見出し
見出し
見出し

クラスを付けた一番目の見出しだけ、デザインが変更されている様子が分かります。

通常の方法で h1 { ~ } のように設定すると、すべての h1 見出しのデザインが変更されますが、このように特定の要素だけをデザインしたい時に、クラスセレクタを使うと便利です。

クラスを使い回す

なお異なるHTMLタグに対しても、同じクラスを指定すれば、同じデザインになります。

つまり、どんなHTMLタグでも class="hogehoge" を追記すれば、同じスタイル設定が適用されるというわけです。

たとえば下の設定の場合、HTMLを見ると、<h2><p> のうち、2箇所に class="info" が設定されています。この class="info" が設定された要素だけ、CSSの影響を受けます。

HTML

<!DOCTYPE html>
<html lang="ja">
<head>
<!-- CSSを読み込む -->
<link rel="stylesheet" href="ex02.css">
</head>
<body>
<h2 class="info">第三章 CSSのメリット</h2>
<p class="info">CSSとHTMLでページをデザイン</p>
<p>HTML5では文章の構造と見栄えを分離することが推奨されている。</p>
</body>
</html>

CSS
ex02.css
/* info クラスに対する設定。文字の色 color を青 blue にする。 */
.info { color:blue; }

CSSを見ると、クラス info を指定し、文字色 color が青 blue になる設定を行っています。

つまり、HTMLで class="info" が付いている要素は、文字色 color が青 blue になるのです。

実行例

第三章 CSSのメリット

CSSとHTMLでページをデザイン

HTML5では文章の構造と見栄えを分離することが推奨されている。

クラスが設定されている2箇所の <h2><p> の範囲だけ、文字色が変化している様子が分かります。

このように様々なタグにクラスを付けて、同じデザインを使い回しできるのがクラスセレクタの良いところです。

同じタグに複数のクラスを付ける

クラス名を半角スペースで区切ることで、1つのタグに対して複数のクラスを付けられます。

HTML

<p class="small red hint">あれやら これやら なんやら かんやら</p>

上の例では、1つの段落 <p> に対して、small red hint という3つのクラスを同時に付けています。
デザインはそれぞれのクラスで設定した内容が混ざりあった結果になります。

文字の大きさや色など、色々な設定をあらかじめ用意しておけば、後でそれらを組み合わせて表現できます。

複数セレクタ

複数のセレクタをカンマ , で区切って並べると、まとめて同じCSS設定を適用することができます。

CSS

h1, h2, h3 { color:blue; }

上の例では <h1><h2><h3> に対し、まとめて同じ設定を行えます。

複数の要素に同じ設定を適用したい時、何度も設定を書かなくてすむので便利です。

このようにセレクタを使って、さまざまな範囲にCSSを適用しましょう。

その他のセレクタ

なおセレクタには他にもいくつか種類があります。ここで全ては紹介しきれませんが、気になった方は「CSS セレクタ 種類」でウェブ検索するなどして調べてみましょう。

好きな範囲をデザインする

次は、CSSを設定する範囲を操作する話です。

CSSは、何らかの要素で囲われている範囲を目標にスタイル設定を行えます。つまりCSSでデザインするためにはその部分が <???></???> のように、何らかのタグで囲われている必要があるのです。

しかし、もともとHTMLタグが書かれていない場所にスタイルを設定したいこともあるでしょう。
でもタグで囲われていないとセレクタでどこを設定すべきか指定できません。
クラスを付けたくても、やはり何かのHTMLタグの後ろにクラスを書く必要があるので、やっぱり指定できません。
とにかく何かHTMLタグが使われていないとデザインさせてもらえない……。これは困った! 😥

このような場合のために、HTMLには <div>(ディブ)と<span>(スパン)という2種類のタグが用意されています。

<div><span>自体には特別な効果はありません。しかし彼らはまさにCSSでデザインする範囲を決めるために生まれてきたようなタグなのです。

これらを使えば、タグで囲われていなかった範囲にもデザインできてしまいます。

たとえば下の「山田太郎」の部分だけにCSSで設定をしたい! と思っても、できません。
タグで囲われていないからです。

こんにちは山田太郎です。<br>

ならばタグ<span></span>で囲ってしまえばよいのです。

こんにちは<span>山田太郎</span>です。<br>

さらに上で説明したクラス class 属性も追加すれば、CSSを設定できますね!

こんにちは<span class="hogehoge">山田太郎</span>です。<br>

このように、CSSを設定する範囲を決めるために使う「見えないタグ」これが <div><span> タグなのです。

<div><span> について、以下の項でさらに詳しく解説します。

<div>タグ

<div>(ディブ)タグは、それ自身には見た目の効果がありませんが、<div></div> で囲まれた四角形の範囲に対してCSSを適用させられます。 <div> 範囲の上下には自動的に改行が入り、見えない箱のようなものができあがります。

<div> タグ自体は目に見えないので、ほとんどの場合はクラス class="xxx" と併用して使用することになるでしょう。

なお div の由来は、境界や仕切りを意味する「division(ディビジョン)」から来ていると言われています。

division 【発音】divíʒən 【名】 (分割する)仕切り、境界、(分割された)区画、部分 など
HTML

この文章はサンプル文章です。
<div class="dot">注意書き<br>これは重要な文章です。</div>
この文章はサンプル文章です。

CSS
.dot { border:dashed 2px red; }
実行例

この文章はサンプル文章です。
注意書き
これは重要な文章です。
この文章はサンプル文章です。

上の例では、<div>dot という名前のクラスを追加し、CSSで設定を行っています。

ここでの設定内容は、border プロパティを使って要素の周囲に罫線を引くものです。罫線 border の種類を、点線(dashed)、太さ2ピクセル(2px)、赤色(red)に設定しています。つまり、<div> の周囲に太さ2ピクセルの赤い点線を引く設定です。

例えば border:solid 1px blue; なら <div> の周囲に太さ1ピクセル(1px)の青い(blue)実線(solid)を引けます。このように border は要素の周囲にさまざまな線を引くプロパティです。

/* 要素の周囲に罫線を引きます。 */
border: 線の種類 太さ 色;
 
/* 例 */
border: solid 1px gray;
border: dashed 2px pink;

罫線を引くプロパティ border

border - MDN

点線が四角形に引かれていることから分かるように、四角い箱状の範囲を持つタグのことをブロック要素と言います。

なお 見出し(h1h6)、段落(p)、リスト(ul,ol) などもブロック要素扱いなので、<div>と同じような結果になります。

ブロックの大きさを変える

<div>のようなブロック要素は、widthプロパティやheightプロパティで箱の大きさを変えられるのがポイントです。例えば下の例では、箱のサイズが幅400ピクセル、高さ100ピクセルになるように、width:400px; height:100px; の設定を追加しています。

HTML (変化なし)
この文章はサンプル文章です。
<div class="dot">注意書き<br>これは重要な文章です。</div>
この文章はサンプル文章です。
CSS

.dot {
 border:dashed 2px red;
 width:400px;      /* 幅 400ピクセル */
 height:100px;     /* 高さ 100ピクセル */
}

実行例

この文章はサンプル文章です。
注意書き
これは重要な文章です。
この文章はサンプル文章です。

箱のサイズが指定通りに変わって、やや縦に長くなった四角形が描かれていることが分かると思います。

このように<div>は、大きさを自由に調整できる箱(ボックス)のような扱いができるのが特徴です。

<div>の用途は多彩で、テキストボックスのような使い方をしたり、色を塗って強調したり、ボタンのようなものを表現したり、記事をレイアウトするための枠組みにしたり、さまざまに使えます。

下は実際に <div> とCSSを使ってデザインをしてみた例です。

<div>を使うと、こんな感じのボックス状パーツをあなたのページに作れるのです。

上のデザインに対応するCSS
border:solid 1px green;   /* 緑の罫線を引く */
background-color:#ccff99; /* 背景色を決める */
max-width:400px;          /* 最大横幅を400ピクセルに限定 */
padding:1em;              /* ボックス内余白1文字分 */
margin-bottom:1em;        /* 下方向の余白1文字分 */

配置を変えたり、色を変えたり、角を丸くしたりと、<div>のデザインをアレンジすれば、さまざまに応用できます。

上のデザインに対応するCSS
border:solid 1px orange;   /* 緑の罫線を引く */
background-color:#fc9;     /* 背景色を決める */
background:linear-gradient(to bottom, #fc9, #fa6); /* グラデーションを作る */
max-width:300px;     /* 最大横幅を300ピクセルに限定 */
padding:1em;         /* ボックス内余白1文字分 */
border-radius:10px;  /* 角を丸くする */
margin:0 auto;       /* ボックスを中央揃えにする */
box-shadow: 4px 4px 10px rgba(0,0,0,0.4); /* 影をつける */

<div>でいろいろなデザインができそうですね!😀

<span>タグ

<span>(スパン)タグも<div>同様に、それ自身には見た目の効果はありませんが、<span>~</span>で囲まれた範囲に対してCSSを適用させられます。<div>と異なるのは、CSSの効果範囲が1文字単位となる点です。

HTML

<p>この文章はサンプル文章です。
<span class="dotbox">注意書き これは重要な文章です。
少し長い文章を書くことでdivタグとの違いが分かるかと思いますので、
ここではあえて長めの文章を入力しています。</span>
この文章はサンプル文章です。</p>

CSS
.dotbox { border:dashed 2px red; }
実行例

この文章はサンプル文章です。注意書き これは重要な文章です。少し長い文章を書くことでdivタグとの違いが分かるかと思いますので、ここではあえて長めの文章を入力しています。この文章はサンプル文章です。

上の例では、<span>タグにdotboxという名前のクラスを設定し、先の<div>の例で設定したのと同様の罫線を周囲に引いています。

しかし<div>の場合と異なり、<span> は範囲の前後に改行が入りません。箱状にもなりません。マウスをドラッグして文字を範囲選択したときのように、1文字単位で選択される様子が分かります。

たとえばこんなふうに蛍光マーカーでなぞったような演出も<span>ならできます。

このように文字を選択したときのような範囲を持つタグのことをインライン要素7)と言います。

太字<b>、リンク<a>などもインライン要素扱いなので、<span>と同じような結果になります。

インライン要素はブロック要素と異なり、widthプロパティやheightプロパティで幅や高さを変えられません。設定しても無視されます。

まとめ

このように、<div><span> を追加すれば、もともとHTMLタグが書かれていない範囲にもCSS効果を適用できるのです。

両者の異なる点は、<div>は「四角い箱状の範囲」になる「ブロック要素」であり、<span>は「文字列を選択したのとよく似た範囲」になる「インライン要素」であるという点です。

div

<div> を使うと、

このように四角い箱を作れます。
箱は位置や大きさを変えられます。

これをブロック要素と呼びます。

span

<span> を使うと、このように一部の文字にデザインを行えます。これをインライン要素と呼びます。

いろいろなプロパティ

プロパティにはたくさんの種類があります。上の例ではcolorbackground-colorプロパティなどが例として登場しています。

代表的なプロパティ
プロパティ 機能
color 文字の色を変える
font-size 文字の大きさを変える
font-weight 文字の太さを変える
background-color 背景色を変える
border 周囲に罫線を設定する
border-radius 角を丸くする
margin 罫線の外側の余白の量を設定する
padding 罫線から中身までの間の余白の量を設定する
box-shadow ボックスの周囲に影をつける

他にもたくさんあります!

インターネット上の解説サイトなども参考にしてください。たとえばHTMLクイックリファレンスのようなサイトがあります。

その他「CSS おしゃれ デザイン」のようなキーワードでインターネット検索をすると、各種サイトでCSSを使ったさまざまなデザイン例が紹介されていますので、面白そうなデザインを取り入れてみると良いでしょう。

h1見出しをかっこよくしてみた例

HTML
<h1 class="cool">カッコイイ見出しのデザイン</h1>
<p>なんとか かんとか ああたら こうたら うんぬん かんぬん</p>
CSS
.cool {
  padding: 0.4em 0.5em;             /* 文字の周囲の余白を設定 */
  color: #494949;                   /* 文字の色は濃いグレー */
  background: #f4f4f4;              /* 背景色をグレーに */
  border-left: solid 5px #7db4e6;   /* 左に線を描く */
  border-bottom: solid 3px #d7d7d7; /* 下に線を描く */
}
実行例

カッコイイ見出しのデザイン

なんとか かんとか ああたら こうたら うんぬん かんぬん

とにかくたくさんあるプロパティを一気に紹介するのは大変なので、この授業では必要に応じて、そのつど紹介していくことにします。

まとめ

CSSとは

書き方

セレクタ { プロパティ: ; }
セレクタ { プロパティ: ; プロパティ: ; ...  }

くわしくはCSSの書き方参照

CSSをHTMLへ読み込ませる

HTMLの冒頭部分にある <head></head> の範囲内に <link rel="stylesheet" href="xxx.css"> という設定を追加してCSSに対応させましょう。 指定したファイル xxx.css に書かれている設定が読み込まれます。

<head>
 :
<link rel="stylesheet" href="xxx.css">
 :
</head>

くわしくはHTMLへの組み込み方参照

クラス

クラスを使えば、指定のクラスをつけた要素だけに特別なデザインを適用できます。

HTML

<p class="mydesign">なんとかかんとか</p>

何らかのHTMLタグに class 属性を追加すると、そこをデザインできます。クラスの名前は好きに決められます。

CSS

.mydesign { color:red; }

CSS側では、セレクタを「先頭にドット . を付けたクラス名」にして、各種設定を行います。

くわしくはクラスセレクタ参照

DIVとSPANタグ

HTML

<div class="mydesign">DIVで作るボックス要素</div>

SPANは<span class="nantoka">インライン要素</span>です。<br>
このように文章中の一部をデザインできます。

DIVで作るボックス要素

SPANはインライン要素です。
このように文章中の一部をデザインできます。

くわしくは好きな範囲をデザインする参照

参考:CSSを書き間違えた場合

CSSを書き間違えた際のフォロー方法について紹介します。参考にしてください。

CSSでは書き間違いなどで誤った記述をすると、その部分は単に無視され、効果を発揮しません。

しかし画面にはとくにエラーメッセージなどは表示されないので、一体どこが悪かったのか、誤りに気づきにくいです……。 困ったものです。😂

問題箇所の探し方

設定を行ったのに効果がない場合は、CSSの書き間違いの可能性があります。もし間違いの箇所がよくわからない場合は、とりあえず color:red; のような非常に単純な設定に置き換えてみて、このように文字の色が赤色になるか確認して原因箇所を探すと良いでしょう。

文字が赤色にならないなら、color:red; より上の行に何か問題があると分かります。CSSもHTMLと同じように1行目から順番に下に向かって処理されるからです。そして、なにか問題が起こると無視されたり、それ以降が動作しなくなったりするわけです。
こうやって、問題の範囲をあるていど絞り込めれば、修正箇所を見つけやすいでしょう。

その他、/**/ で囲ってコメント化すれば、その範囲のCSS設定は無効になるので、怪しい箇所をコメント化し、残りの部分が正常に動作するか確認しながら問題の箇所を探す、という方法があります。

思い切って怪しい箇所を一旦切り取って(Ctrl+X)セーブし、動作確認するという方法もあります。
問題がなければ、切り取った内容を貼り付け(Ctrl+V)して、元の状態に戻せます。

こまめな動作確認を

一気に作って動作確認すると、どこが悪いのかよく分からなくなるので、こまめに動作確認して、効果があるか無いか確かめならが作業をすすめるのもおすすめです。

もしCSSに何を書いても一切反応しないなら、そもそもCSSを正しく読み込めていなかったり、異なるファイルを編集している可能性があります。

課題

上記を踏まえて、以前作成した自己紹介ページ jikosyokai.html を、CSSに対応したものに置き換えてmoodleに提出してください。

学習支援システム moodle
https://cclms.kyoto-su.ac.jp/

以前作った自己紹介ページは、以下のようなものでした。

<table>などを駆使して作ったデザイン

jikosyokai.htmlを無くした場合

もしも自己紹介ページのファイルが見つからない場合は、moodleにアクセスし、過去の提出物をダウンロードすると再び入手できます。第6回の課題で自己紹介ページは完成していたはずなので、第6回の提出物にアクセスしてダウンロードすると良いでしょう。

どうしても見つからない場合は、以下の例をベースに改造して作ると良いかも。

jikosyokai.html のサンプル

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>自己紹介</title>
</head>

<body bgcolor="#def" text="#048">
<!-- 本文ここから -->

<table border="1" cellpadding="8" cellspacing="0" bgcolor="white" width="700" align="center">
<tr><td>

<table border="1" cellpadding="4" cellspacing="0" bgcolor="white">
<tr><td>コンピュータ基礎実習 上級</td><td>○曜○限</td></tr>
<tr><td>学生番号</td><td>123456</td></tr>
<tr><td>学部</td><td>外国語</td></tr>
<tr><td>学年</td><td>1</td></tr>
<tr><td>氏名</td><td>○○○○</td></tr>
</table>

<h1><font color="#08f">自己紹介</font></h1>

<img src="neko.jpg"><br>

<p>こんにちは、○○です。 コンピュータ基礎実習を受けることになりました!実家から片道30分かけて通っています。<br>
ウェブページは普段見るだけですが、この講義はページを作成する授業と聞いてどんなものか興味があります。</p>

<h2><font color="#08f">● 趣味または得意なこと ●</font></h2>

<p>友人と月に何度かカラオケに行きます。安い店を知っているので行く回数は多めです。気分転換にいいですね。
あと最近は<font color="red">AmazonのKindle</font>で電子書籍を読むのがマイブームです。読み終わった本がかさばらず、値段がちょっとだけ安い事が多いので助かります。
最近面白いと思った作品は「<font color="red">●●●●</font>」です。流行の作品なので読んでみましたが、意外と面白かったです。キャラクターの目的がはっきりしているのが良いと思いました。先生にもお勧めします、未読ならいかがですか?</p>

<h2><font color="#08f">● ウェブページ作成について ●</font></h2>

<p>インターネットは普段良く見ていますが、ページを作ったことはありません。今度サークルのページをつくろうかと思っています。トップページとリンク集と、簡単な掲示板があれば良いかなと思っています。どこまでできるかわかりませんががんばります。</p>

<h2><font color="#08f">● 先生に一言 ●</font></h2>

<p>がんばって受講しますのでお手柔らかにお願いします。</p>

<h2><font color="#08f">● リンク ●</font></h2>

<p><a href="diary.html">飼育日記</a></p>
<p><a href="link.html">リンク集</a></p>

<h2><font color="#08f">● 縮小画像 ●</font></h2>

<p><a href="kuma.png" target="_blank"><img src="kuma-s.png"></a></p>

</td></tr>
</table>

<!-- 本文ここまで -->
</body>
</html>

具体的な作業手順は、以下を参考にしてください。

CSSファイルを読み込ませる

自己紹介を書いたHTMLファイルを見つけます。ここでは jikosyokai.html とします。

まずは jikosyokai.html に、CSSを読み込ませるための設定を追加しましょう。
ページ先頭近くにある <head>~</head> の範囲内に、以下のように <link> の記述を追加し、外部CSSファイルを読み込めるようにしましょう。(詳しくはHTMLへの組み込み方の項目を参照してください)

HTML

<head>
・・・省略(なんか色々書いてあるはず)・・・
<link rel="stylesheet" href="mystyle.css">
</head>

上の例では mystyle.css を読み込む設定になっています。CSSファイルの名前は別のものに書き換えても構いません。

これであなたのHTMLファイルは、CSS対応になりました。かんたんですね!

<link> の行を書き足したら、CSSファイルをHTMLファイルと同じ場所に配置してください。

HTMLファイルとCSSファイルは、
同じ場所に配置しましょう。

なお上のように mystyle.css を使うことにするなら、今回のサンプルファイルに mystyle.css がちょうどありますので、jikosyokai.html と同じ場所に mystyle.css をコピー・貼り付けして使いまわすと良いでしょう。その場合は、いろいろ試した mystyle.css の中身は一度消去して白紙の状態に戻し、課題のために新しく設定をやり直すと良いでしょう。

注意:設定を書き込む場所を間違えないでください!
これからさまざまな設定を書き込みますが、HTMLはHTMLファイル jikosyokai.html に、CSSはCSSファイル mystyle.css にそれぞれ書き込みましょう。間違えると効果が発揮されません。

ページの背景色などを設定

HTMLでは、ページの背景色や文字の色は <body> で設定しているはずです。これをCSSで置き換えます。

HTMLの冒頭部分にある <body> の設定を探しましょう。おそらく以下のように設定されているかと思います(具体的な色などは、あなたの好みに合わせて別なものに置き換えてもらってOKです)。

HTML
<!-- まだ編集していない状態  -->
<body bgcolor="wheat" text="brown">

<body> タグに追加された bgcolor 属性が背景色で、text 属性が文字の色を表すということでした。これをCSSに置き換えます。

HTMLファイル jikosyokai.html 側では bgcolor 属性と text 属性を消去し、CSSファイル mystyle.css 側に設定を追加します。

HTML

<body bgcolor="wheat" text="brown">
  ↓↓↓ 修正 ↓↓↓
<body>

HTMLでは <body> に追加で設定されている bgcolortext の設定をバッサリ削ります。単に <body> と書かれている状態にします。

CSS
mystyle.css
/* 新規で body の設定を追加 */
body { background-color: wheat; color: brown; }

CSSではbackground-colorで背景色を、colorで文字色を設定できます。
上の例なら、背景色は wheat(小麦色)、文字の色は brown(焦げ茶色)です。

実行例

これはサンプル文章です。
CSSのbackground-color設定とcolor設定によって、このようにページの背景色と文字色が変更される様子が分かります。

これでCSSを使ってページの背景色や文字色を設定できます。好みの色を設定してみましょう。

HTML側にあった色の設定がCSSに整理されて、シンプルになった様子が分かると思います。

動作確認

HTMLとCSSファイルをどちらも上書き保存し、ブラウザ画面を リロード した時に、ページの色や文字色が正しく設定されていればOKです。動作確認する場合は、このように保存とリロードを忘れないようにしてください。(通常はブラウザ画面でキーボードの F5 キーを押すとリロードしてページの再読み込みができます)

以降、同様に設定をCSSに置き換えていきましょう。

見出しを設定

<h1><h2> といった見出しのデザインを変更している場合は、以下を参考にCSSに置き換えると良いでしょう。

HTML

<h1><font color="purple"><b>自己紹介</b></font></h1>
  ↓↓↓ 修正 ↓↓↓
<h1>自己紹介</h1>

HTML側に <font><b> のような装飾系のタグでデザインを行っている場合は、バッサリ削ります。
見出しであることには違いないので、<h1> タグは残しておいてくださいね!

CSS

body { background-color: wheat; color: brown; }   /* ← さっきの設定 */
h1 { color:purple; font-weight:bold; }            /* ← ここを書き足す */

先のbodyについての設定 body { ~ } の次の行あたりに、上のように書き足しましょう。CSSの設定は単に列挙していけば良いです。

HTMLの <font color=""> による文字色設定は、CSSの color に、HTMLの <b> による太字設定は、CSSの font-weight:bold; 設定にそれぞれ置き換えられます。

例によって色は好みのものに変えてもらってOKです。

実行例

自己紹介

これでCSSを使って見出し部分のデザインができました。

文字単位の設定

もし、特定の文字だけデザインを変えるなどしている場合は、<span>クラスを使ってCSSに置き換えると良いでしょう。

HTML

はじめまして、<font color="yellowgreen"><b>山田太郎&</b></font>です。
  ↓↓↓ 修正 ↓↓↓
はじめまして、<span class="caution">山田太郎</span>です。

HTMLの <font><b> などの設定をまとめて <span>置き換えます。設定しやすいようにクラス名を付けています。ここでは caution というクラス名にしてみました。(もちろんクラス名は別のものに置き換えても構いません)

CSS

body { background-color: wheat; color: brown; }   /* ← このへんは        */
h1 { color:purple; font-weight:bold; }            /*    さっきまでの設定  */
.caution { color:yellowgreen; font-weight:bold; }       /* ← ここを書き足す */

実行例

はじめまして、山田太郎です。

上の例はCSSの書き方を表しています。先ほどの caution という名前のクラスに対するCSS設定を行っています。

もし同じデザインをいろいろな箇所で使いたい場合は、HTML内に <span class="caution">~</span> で囲まれた場所をつくればOKです。

また、HTMLには無かった効果として、CSSで background-color:yellow; のように background-color 属性を追加すれば、文字の背景色も設定できるので、例えばマーカーでなぞったような効果も得られます。

CSS

/* ・・省略・・ */
/* .caution の設定に background-color:yellow; を追記します  */
.caution { color:yellowgreen; font-weight:bold; background-color:yellow; }

実行例

はじめまして、山田太郎です。

上の例では、CSSに background-color:yellow; を追加することで、背景色を黄色にしています。(お分かりかと思いますが色などの細かい設定は好みで変えてOKです)

このようにして文章中の一部範囲でデザインを変えることもできます。

ページ全体を囲う表

第6回の、表(table)についての講義では、ページ全体を中央寄せにレイアウトするために、表を使う方法を紹介しました。

自己紹介ページでも下のように、<body></body> の内側に <table><tr><td></td></tr></table> のような構造が作られているはずです。(下の図では <body> の直下にある2行と、</body> の直前にある2行分の設定が該当します)

HTML

・・省略・・
<body>
<!-- ↓↓↓↓本文を囲う表↓↓↓↓ -->
<table border="1" cellpadding="4" cellspacing="0" bgcolor="white" width="800" align="center"> <tr><td>
ここにページ全体のコンテンツが書かれています。とっても長いはずです。
</td></tr> </table>
<!-- ↑↑↑↑本文を囲う表↑↑↑↑ --> </body> ・・省略・・

この表を使った構造 <table><tr><td></td></tr></table> をCSSに置き換えてみましょう。以下のようになります。

HTML

・・省略・・
<body>
<!-- ↓↓↓↓本文を囲う表↓↓↓↓ -->
<div class="layout">
 
 
   ここにページ全体のコンテンツが書かれています。とっても長いはずです。
 
 
</div>
<!-- ↑↑↑↑本文を囲う表↑↑↑↑ -->
</body>
・・省略・・

HTMLでは <table ... ><tr><td></td></tr></table> を、それぞれ <div></div>置き換えます。そして設定しやすいようにクラス名を付けます。ここでは layout というクラス名にしています。

ずいぶんスッキリしましたね!

CSS
/* ・・省略・・  */
/* 一番下の行に追加します */
.layout { border: solid 1px gray;
          padding: 8px;
          background-color:white;
          width:800px;
          margin:20px auto;
          border-radius:10px;
          box-shadow: 10px 10px 10px #44444480; }

CSSでは、layoutクラスに対して上記のような設定を行います。
上のそれぞれの設定項目には、以下のような意味があります。詳しく知りたい方は参考にしてください。

  1. border: solid 1px gray;
    HTMLの border="1" に該当する設定です。周囲に罫線を引いています。ここでは罫線の種類を実線 solid・太さ1ピクセル 1px・色はグレー gray としています。
    このように border プロパティは、「罫線の種類」「太さ」「色」といった値を複数設定できるプロパティです。
    もし周囲に罫線が要らないなら、この設定は不要です。
    border - MDN
  2. padding: 8px;
    HTMLの cellpadding="8" に該当する設定です。セル内に余白を8ピクセル設けています。
    表の境界から文字までの距離に相当します。適度な距離を設けたほうが文字が読みやすいでしょう。
    padding - MDN
  3. background-color:white;
    HTMLの bgcolor="white" に該当する設定です。背景色を白色にしています。もちろん好みの色を塗ってOK。
    background-color - MDN
  4. width:800px;
    HTMLの width="800" に該当する設定です。<div> の横幅を800ピクセルにしています。
    width - MDN
  5. margin:20px auto;
    HTMLの align="center" に該当する設定です。ここでは中央寄せにするための特別な書き方をしています8)
    とりあえず、width を設定した上で、上のように margin を設定すると、中央揃えができると覚えておくと良いでしょう。
    margin - MDN
  6. border-radius:10px;
    この設定はCSSにしか無い設定で、要素の角を丸くする効果があります。ページの角の部分に注目してください。丸くなっているはずです! CSSではこんな事もできるんですね。😲
    ページの角が丸くなっています!
    border-radius - MDN
  7. box-shadow: 10px 10px 10px #44444480;
    この設定もCSSにしかない設定で、要素に影を付けることができます。やはりページの角、右や下側を見ると、うっすら影が落ちているように見えるはずです。カッコイイ!
    境界部分を見ると、やや色が濃くなっています。
    立体的!
    box-shadow - MDN

これでページ全体を囲う表をCSSで表現できました。

CSSを使って改修した結果

以上で修正完了です。

デザインが劇的に変化したわけではありませんが、最新技術を使ってHTMLをシンプルにできたのでヨシ!としましょう。

このようにして、必要に応じてHTMLの設定をCSSに置き換えていきましょう。
修正後のHTMLを眺めてみると、デザインに関する設定がほぼCSSに置き換わったことで、スッキリしたことを実感できるのではないでしょうか?

もし、この自己紹介ページと同じデザインのページをもう一枚作りたくなった場合も、複雑な設定は必要ありません。
新しいページでも、<head>~</head> の範囲内に <link rel="stylesheet" href="mystyle.css"> を追加すれば、mystyle.css が参照できるようになり、すぐに同じデザインにすることができます。これもCSSの便利なところでしょう。

提出

上記のような改造を行った自己紹介ページ jikosyokai.html を、画像やCSSなど関連ファイルをすべて含めてZIP圧縮し、moodleに提出してください。

関連ファイル
jikosyokai.html HTML本体
mystyle.css CSSが書かれたファイル
各種画像 ページに掲載している画像など

圧縮フォルダの名前は 学生番号 氏名 CSS.zip としてください。

細部のデザインは資料の例と多少違っていても構いません。独自にアレンジしてもらってOKです。

学習支援システム moodle
https://cclms.kyoto-su.ac.jp/


以上で今回は終了です。おつかれさまでした。

とはいえ、今日の基本的な話を見ただけでは、CSSがどう使えるのか今ひとつ分からなかったかもしれません……。サンプルのデザインもいまいちイケてない感じかもしれません😅。そこで、次回からはより具体的なCSSの使い方について演習をしていきたいと思いますので、よろしくおねがいします。

おまけ

htdocs フォルダ直下の index.html もCSSに対応させてみましょう。

今回の課題と同様に mystyle.css を使う設定にすれば、jikosyokai.html と同じデザインを使い回せます。統一感のあるデザインを実現できますね! もちろん好みで全く新しいCSSファイルを書き起こしてもOKです。

なおCSS側でデザインを行うので、いくつかの設定は不要になります。

下で緑色に塗られている箇所は追加する部分、オレンジ色に塗られている箇所は、削除する部分を表しています。

<!DOCTYPE html>
<html lang="ja">

<head>
<meta charset="UTF-8">
<title>基礎実習の課題ページ</title>
<link rel="stylesheet" href="mystyle.css">
</head>
 
<body bgcolor="wheat" text="#444444">
<!-- 本文ここから -->

<table border="1" cellpadding="16" cellspacing="0" bgcolor="white" width="80%" align="center">
<tr><td>

<div class="layout">

<h1>コンピュータ基礎実習(上級)課題のページ</h1>

<p>ここにはコンピュータ基礎実習で作成した課題を掲載しておきます。</p>

<h2>課題</h2>

<p><a href="jikosyokai.html" target="_blank">自己紹介ページはこちら</a></p>
<p><a href="recipe.php" target="_blank">ゴブリン・シチューのレシピ</a></p>

<p><a href="gousei.pdn" target="_blank">合成写真</a><br>
<a href="button.pdn" target="_blank">ボタン画像</a></p>

<p><a href="trend/">私の○○サイト</a></p>

<p><a href="bbs/pppbbs.php" target="_blank">掲示板CGI</a><br>
<a href="calendar/" target="_blank">カレンダーCGI</a></p>

<p><a href="pukiwiki/" target="_blank">PukiWikiサイト</a></p>

<h2>リンク集</h2>

<p><a href="https://www.cc.kyoto-su.ac.jp/~shimizu/" target="_blank">基礎実習のページ</a> <a href="https://cclms.kyoto-su.ac.jp/" target="_blank">moodle</a></p>

<p><a href="https://www.kyoto-su.ac.jp/entrance/index-ksu.html" target="_blank">学内TOP</a></p>

</div>

</td></tr>
</table>

<!-- 本文ここまで -->
</body>
</html>
index.html をCSS対応にしてみた例

戻る

1)
つまりSEOとはサイトにアクセスを集めるための技術です。ビジネスでサイト運営を行う場合などは、このSEOが収益に関わってくるので、重要なテクニックとされています。SEOについては多くの本が出版されているほど内容が深いので、ここでは詳細について触れません。気になる人は検索してみましょう。
2)
波括弧と呼ぶ場合もあります。
3)
通常のリロードでは、ブラウザが表示を高速化するために「キャッシュ」と呼ばれる、一度表示したページの内容を記憶して次回素早く表示する機能が働いており、CSSを書き換えてもキャッシュが使われるせいで更新内容が読み込まれない場合があります。
そのような場合には Ctrl+F5 でリロードをすると、キャッシュを破棄して再度読み込み直しが行われるので、更新内容が反映されます。
4)
{ ~ }の範囲全体を宣言ブロック(declaration block)、プロパティ:値; の部分をスタイル宣言(declaration)と呼びます。が、あまり使われない用語なので忘れても構いません。
5)
「メディアクエリ」など、二重になる例外はあります。詳しくはCSSの授業の後半で紹介します。
6)
もともとHTMLを複雑にしないために、CSSにデザイン関連の設定をまとめるという目的だったのに、この方法を多用してHTMLを複雑にしてしまうのは本末転倒と言えます。
しかしあえて使いみちを挙げるなら、例えばブログサービスを使って記事を書いている時などです。
デザインはシステムによって最初からバッチリ決められていますが、「どうしても特別なデザインをしたい!でもブログのシステムは複雑でよく分からないから設定が難しい……」という時に、style="~" で無理やり独自のデザインを書き込む、というような使いみちが考えられます。
7)
in-line」は「行内」といったニュアンスです。
8)
margin: 20px auto; の設定内容を詳しく説明すると、次のようになります。(少々難解なので、ここでは聞き流しておいてもらってOKです)
margin は本来、要素の外側に余白を設けるプロパティですが、特別な書き方をすることで、中央寄せにするのに活用できます。
margin に値を2つ書くと、それぞれ上下、左右の余白を指定できます。
ここでは 20pxauto という2つの値を書いているので、上下方向の余白を 20px、左右方向の余白を auto に指定していることになります。
左右方向の余白を auto に設定すると、左右の余白が同じ大きさになるよう自動調整されるという仕様があります。この仕様により、要素が結果的に中央揃えになります。ただし、この設定が効果を発揮するためには、要素の width が設定されている必要があります。(width が設定されていないと、要素は横幅いっぱいまで広がるため、左右の余白はどちらもゼロとなり、中央寄せの効果が発揮されません)
とまあややこしいですが、要するに「width:???px;margin: ??px auto; を両方設定すると、要素を中央揃えできる」というCSSのメジャーなテクニックです。