Zenn
🔰

初心者必見!Webデザインとレスポンシブ対応の頻出用語まとめ

に公開

Webサイトを作成し始めると、HTML・CSS・JavaScriptに関する様々な専門用語が登場します。特にウェブデザインとレスポンシブ対応に関連する用語は、初心者にとって押さえておきたい重要なキーワードです。これらの用語を理解しておくと、サイトの構造や見た目を正しくコーディングできるようになり、思い通りのレイアウトやデザインを実現しやすくなります。

本記事では、初心者向けにウェブデザインとレスポンシブ対応に焦点を当てて、HTML・CSS・JavaScriptで頻出する基本用語を紹介します。それぞれの用語について、日本語名と英語名、意味や役割の説明、簡単な使用例、そして初心者が陥りがちな間違い・注意点を解説します。ウェブデザインの基礎用語から始めて、レスポンシブデザインの用語まで順に見ていきましょう。

まずはウェブデザインに関する基礎的な用語から解説します。

ウェブデザインの基本用語

セマンティックHTML (Semantic HTML)

セマンティックHTMLとは、Webページの構造や意味を明確にするために、適切なHTMLタグを使ってコンテンツをマークアップする手法です​。
例えば、見出しには<h1>~<h6>タグ、段落には<p>タグを使うように、内容に応じた意味を持つ要素を用います。HTML5では<header>(ヘッダー部分)、<nav>(ナビゲーションメニュー)、<main>(主コンテンツ)、<article>(記事コンテンツ)、<aside>(サイドバーなど補足情報)、<footer>(フッター部分)といったセマンティック要素が導入され、これらを使うことでコードの可読性や検索エンジン・支援技術による理解が向上します​。

実際の使用例として、サイトの基本的なレイアウトは以下のようにセマンティックなタグで構造化できます。

html
<body>
  <header>サイトのヘッダー</header>
  <nav>ナビゲーションメニュー</nav>
  <main>
    <article>記事やコンテンツ</article>
    <aside>サイドバーの補足情報</aside>
  </main>
  <footer>フッター情報</footer>
</body>

このように書くことで、構造が一目で分かりやすくなり、ブラウザや検索エンジンにもページの構造を正しく伝えられます。視覚的な見た目は従来どおりCSSで装飾しますが、マークアップ段階で意味を持たせておくことが重要です。

よくある間違いと注意点: 初心者が混同しやすいのが、<head>タグと<header>タグの違いです。<head>はページのメタ情報(タイトルやCSS読み込みなど)を記述する場所で、画面には表示されません。一方<header>は本文中のヘッダー部分で、サイトの見出しやロゴ、ナビゲーションリンクなどをまとめるための表示される要素です​。
また、セマンティックタグを使えば必ずデザインが良くなるわけではありません。意味に沿ったタグを使いつつ、CSSでデザイン調整することが必要です。慣れないうちはつい<div>タグばかり使ってしまいがちですが、コンテンツの意味に適したタグを選ぶ習慣をつけましょう。

CSSセレクタ (CSS Selector)

CSSセレクタとは、HTML文書内のどの要素にCSSスタイルを適用するかを指定するためのパターン(選択子)のことです​。
セレクタは要素名やクラス名、ID名などによって指定でき、CSSルールの先頭部分に記述します。例えば「p { color: red; }」と書けば<p>タグ全てが赤文字になり、「.notice { background: yellow; }」と書けばclass属性が"notice"の要素に黄色の背景を適用できます。

基本的なセレクタの種類には以下のようなものがあります。

  • 要素セレクタ: 要素名そのものを指定します(例:pdivh1など)。HTMLの該当要素すべてにスタイルを適用します。
  • クラスセレクタ: 任意のclass名を指定します(例:.btn.highlightなど)。該当クラスを持つ要素にスタイルを適用します。クラスは複数の要素で使い回せます。
  • IDセレクタ: 任意のid名を指定します(例:#header#main-contentなど)。該当IDを持つ要素にスタイルを適用します。IDはページ内で一意である必要があります。

使用例として、以下のCSSは様々なセレクタを使っています。

css
/* 要素セレクタの例 */
h1 { font-size: 2em; }

/* クラスセレクタの例 */
.notice { background-color: yellow; }

/* IDセレクタの例 */
#header { padding: 20px; }

上記では、すべての<h1>を大きな文字にし、class="notice"の要素に黄色背景を適用し、id="header"の要素に余白をつけています。

よくある間違いと注意点: CSSセレクタで頻出するミスは、クラス名やID名の指定方法です。CSSではクラス名の前に「.」(ドット)、ID名の前に「#」(ハッシュ)を付けますが、これを忘れて「notice { ... }」のように書いてしまうと意図したスタイルが当たりません。また、IDは一つのHTMLページ内でユニークでなければならない点にも注意しましょう。同じIDを複数の要素に使い回すのは避け、共通のスタイルを当てたい場合はクラスを使う方が適切です。さらに、複雑なセレクタを多用しすぎるとCSSの管理が難しくなります。慣れるまではシンプルなセレクタを心がけ、必要に応じて子孫セレクタや擬似クラス(:hoverなど)を学んでいくと良いでしょう。

CSSボックスモデル (CSS Box Model)

ボックスモデルとは、「HTMLの各要素はすべて四角いボックス(領域)として扱われ、その周囲に余白や枠線を持つ」というCSSの基本概念です​。
各要素は内容を表示するコンテンツ領域を中心に、内側の余白であるパディング (padding)、枠線であるボーダー (border)、外側の余白である**マージン (margin)**という四層構造で箱を形成しています​。

例えば、ある要素にテキストが入っている場合、そのテキスト部分がコンテンツ領域となります。そこにpadding: 10px;を指定すれば内容の周囲に10pxの内側余白ができ、border: 1px solid black;を指定すればその周囲に1pxの枠線が描画されます。さらにmargin: 20px;を指定すれば要素の外側に20pxの余白が生まれ、他の要素との間隔が空きます。

ボックスモデルの概念をコードで確認してみましょう。以下のHTMLとCSSを考えます。

html
<div class="box">サンプルテキスト</div>
css
.box {
  padding: 10px;
  border: 2px solid blue;
  margin: 20px;
}

上記の.box要素では、コンテンツ("サンプルテキスト")の周囲に10pxのパディング(背景色がある場合はpadding部分まで背景が表示されます)が入り、要素を囲む青色の枠線が2px描かれ、その外側に20pxのマージンが確保されています。他の要素がすぐ隣にあっても、このマージンのおかげで20px離れることになります。

よくある間違いと注意点: ボックスモデルで初心者が混乱しやすいのはマージンとパディングの使い分けです。パディングは要素内側の余白なので背景色やボーダーと一緒に拡張されますが、マージンは要素の外側の空白で隣接する要素同士の距離を調整します。また、ブロック要素同士の上下のマージンが重なって意図せず大きくなる「マージンの相殺」という現象もあります。
例えば親子要素間の上下マージンが合算されてしまい、子要素にmargin-topを指定しただけなのに親ごと下に押し下げられるようなケースです。対策として、親要素にpaddingを入れる、またはmarginではなくpaddingで調整するなどの方法があります。さらに、CSSプロパティbox-sizing: border-box;を指定すると、要素の幅や高さにパディング・ボーダーを含めて計算でき、レイアウト調整が簡単になります。このプロパティを使うとボックスモデルの計算違いによるレイアウト崩れを防ぎやすいので、初心者にもおすすめです。

ブロック要素とインライン要素 (Block-level & Inline Elements)

HTMLの要素には大きく分けてブロックレベル要素(ブロック要素)とインライン要素の2種類があります。それぞれレイアウト上の振る舞いが異なるため、理解しておくことが大切です。

  • ブロック要素: ブロック要素は画面上でそれ自体が一つの段落(ブロック)として扱われます。通常、前後に改行が入り、横幅いっぱいに広がる特性があります​。
    代表例は<div><p><h1>などの見出しや段落要素です。ブロック要素にはwidthheightmargin(上下左右全て)などのCSSプロパティを適用できます。
  • インライン要素: インライン要素は文章の一部として行内に並んで配置されます。前後で改行されることはなく、隣接要素と同じライン上に続けて表示されます​。
    代表例は<span><a><strong><em>などの文字を囲む要素です。インライン要素には基本的にwidthheightは適用できず、要素の内容に応じたサイズになります​。
    また上下のmarginもレイアウト上は無視され、水平方向のmarginだけが有効になります​。

簡単な例を示します。HTMLでインライン要素とブロック要素をそれぞれ2つずつ並べてみます。

html
<span>インライン1</span> <span>インライン2</span>
<div>ブロック1</div> <div>ブロック2</div>

この結果、インライン要素同士(<span>同士)は改行されずに横に連続して「インライン1インライン2」と表示されます。一方、ブロック要素の<div>同士は自動で間に改行が入り、「ブロック1」は1行目、「ブロック2」は2行目に表示されます​。

よくある間違いと注意点: インライン要素に対して直接widthheightを指定しても効果がない点に注意しましょう​。
例えば<span>に幅や高さを与えたい場合、CSSでdisplay: inline-block;と表示形式を変更する必要があります。また、インライン要素の上下マージンが効かないことも戸惑いやすいポイントです(例えばmargin-topmargin-bottomを指定しても周囲にスペースが空かない)。このような場合もdisplay: block;inline-blockに変更すると期待通り動作します。逆に、ブロック要素を横に並べたい場合もfloatを使うか、display: inline-block;を指定する方法があります。レイアウト調整の際は、このブロック/インラインの性質を理解し、適宜displayプロパティを切り替えることが重要です。

フレックスボックス (Flexbox)

フレックスボックス(Flexbox)は、CSS3で導入された新しいレイアウトモードで、要素を簡潔かつ柔軟なコードで配置するための方法です​。
従来は横並びレイアウトを実現するのにfloatinline-block、あるいは複雑なマージン調整が必要でしたが、Flexboxを使うと親コンテナと子要素の関係を宣言的に定義するだけで、要素の整列や間隔調整が容易に行えます。Flexboxは1次元(縦一列か横一列)のレイアウトに適しており、要素を行方向または列方向に整列させ、余白を均等配分したり中央寄せしたりといったレイアウト調整が非常にシンプルにできます​。

Flexboxの使用例として、複数のボタンを水平方向に中央配置し、均等に間隔を空けるケースを考えてみます。

html
<div class="btn-container">
  <button>Button 1</button>
  <button>Button 2</button>
  <button>Button 3</button>
</div>
css
.btn-container {
  display: flex;                /* 子要素をフレックスボックスレイアウトに */
  justify-content: center;      /* 水平方向に中央揃え */
  gap: 10px;                    /* 子要素間の間隔を10pxに */
}

上記のCSSでは、親要素.btn-containerdisplay: flex;を指定しています。これにより、中の<button>要素がFlexboxの子要素(フレックスアイテム)となり、横一列に並びます。justify-content: center;によって子要素全体が親要素の中央に配置され、gap: 10px;でボタン間に一定のスペースが確保されます。結果、3つのボタンが左右中央に整列し、均等に10px離れて並ぶようになります。

よくある間違いと注意点: Flexboxを使う際にまず忘れがちなのは、親要素にdisplay: flex;を指定しないと何も始まらないという点です。子要素側にいくらflex関連プロパティ(例えばflex: 1;など)を指定しても、親がフレックスコンテナになっていなければ効果がありません。また、Flexboxでは主軸(デフォルトは横方向)と交差軸(縦方向)があり、justify-contentは主軸方向、align-itemsは交差軸方向の整列に使います。この軸の概念を誤解すると、思った方向に揃わず戸惑うことがあります。例えば縦方向に子要素を中央揃えしたい場合、親にalign-items: center;を指定します(親にheightが必要)。さらに、Flexboxは一行(または一列)内での並びに強力ですが、2次元のレイアウトには対応しません。その場合は次に紹介するCSSグリッドレイアウトを検討しましょう。

CSSグリッドレイアウト (CSS Grid Layout)

CSSグリッドレイアウトは、縦横のグリッド(格子状の区画)を使って2次元的に要素を配置できる強力なレイアウトシステムです。CSS GridもCSS3で追加された比較的新しい機能で、Flexboxが1次元レイアウトを得意とするのに対し、Gridは行と列の両方向についてレイアウトを制御できます​

これにより、従来は複雑だったページ全体のレイアウト構成(例えばヘッダー・サイドバー・コンテンツ・フッターの配置など)を、CSSだけで直感的に定義できるようになりました。

Gridレイアウトの基本は親要素をグリッドコンテナ化し、列数や行数、各セルのサイズを指定することです。例として、2列構成のレイアウトを作ってみます。

html
<div class="grid-container">
  <div class="item1">アイテム1</div>
  <div class="item2">アイテム2</div>
  <div class="item3">アイテム3</div>
</div>
css
.grid-container {
  display: grid;                     /* グリッドレイアウトを適用 */
  grid-template-columns: 1fr 2fr;    /* 2列構成:左列1fr、右列2frの幅 */
  gap: 16px;                         /* グリッド間の隙間を16px */
}
.item1 { grid-column: 1 / 3; }       /* アイテム1は1列目から3列目まで(つまり2列分)占有 */

上記CSSでは、.grid-containerdisplay: grid;にして2列のグリッドを定義しました。grid-template-columns: 1fr 2fr;により、1列目の幅を2列目の幅の半分程度に設定しています(frは残りスペースを割合配分する単位)。デフォルトでは行方向は必要に応じて自動追加されます。この例では3つのアイテムを配置しているため、自動的に2行になります。さらに、.item1に対してgrid-column: 1 / 3;と指定することで、1列目から2列目まで跨いで配置する(2カラム分の幅を占める)ようにしています。こうした指定により、例えばアイテム1を上段に横長く配置し、下段にアイテム2・3を左右に並べるといったレイアウトが簡単に実現できます。

よくある間違いと注意点: CSS Gridを使う際の注意点は、グリッドコンテナとグリッドアイテムの関係を正しく把握することです。親にdisplay: grid;を指定してはじめて子要素にグリッドの設定(grid-columngrid-rowなど)が効きます。これを忘れると、Flexbox同様に何も起こりません。また、Gridではトラック(列・行)のサイズ指定を明示的に行いますが、指定がない要素は自動的に次の空きセルに入ります。意図しない配置になった場合は、grid-template-areasjustify-items等を駆使してレイアウトを調整しましょう。対応ブラウザに関しては、現在主要なモダンブラウザはすべてCSS Gridをサポートしていますが、古いIE11以前ではサポートが不完全でした​。
もし古い環境をサポートする必要がある場合は注意が必要です(とはいえ2020年代後半ではIEの利用はほぼなくなっています)。最後に、FlexboxとGridはいずれも強力なレイアウトツールなので、用途に応じて使い分けましょう。一般に「ページ全体の大枠レイアウト」にはGrid、「部品の整列や伸縮」にはFlexboxが向いています。

レスポンシブデザインの基本用語

レスポンシブウェブデザイン (Responsive Web Design)

レスポンシブWebデザインとは、PC・タブレット・スマートフォンなど様々なデバイスの画面サイズに応じて、Webサイトの表示レイアウトを自動で最適化する設計手法のことです​。
ひとつのHTMLファイルでコーディングし、画面幅に応じてレイアウトやデザインを切り替えることで、ユーザーがどの端末からアクセスしても見やすい画面を提供できます。レスポンシブ対応にすることで、従来のように「PC向けサイト」と「モバイル向けサイト」を別々に作成・運用する必要がなくなり​、管理コストを削減できるというメリットもあります。

レスポンシブWebデザインを実現するために重要なのが、後述するビューポート(Viewport)の適切な指定とメディアクエリ(Media Query)によるスタイル切り替えです。例えば、画面幅が小さいスマホではメニューを折りたたんでアイコンで表示し、大きなPC画面ではメニューを横並びに表示するといった調整をCSSで行います。以下は簡単な例です。

html
<head>
  <!-- ビューポートの指定 -->
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <nav class="menu"> ... </nav>
  <main> ... </main>
</body>
styles.css
/* モバイル向けの基本スタイル (狭い画面向け) */
.menu { display: none; }             /* モバイルではメニュー非表示(ハンバーガーアイコン等で代替) */
/* ...その他モバイル用のスタイル... */

/* 画面幅768px以上(タブレット・PC)でのスタイル上書き */
@media (min-width: 768px) {
  .menu { display: block; }         /* 広い画面ではナビメニューを表示 */
  main { margin-left: 200px; }      /* メニュー分コンテンツを右にずらす例 */
}

上記では、HTMLの<head>内で<meta name="viewport"...>を設定し、CSSでは@mediaルールを使って画面幅によるスタイルの切り替えを行っています。min-width: 768pxのメディアクエリ内のCSSは、画面幅が768px以上の場合にのみ適用され、それ未満のスマホサイズでは基本スタイルが適用されます。これにより1つのHTML/CSSコードでマルチデバイス対応ができます。

よくある間違いと注意点: レスポンシブ対応で陥りがちなミスは、ビューポートの指定漏れと、画面幅の確認不足です。特に<meta name="viewport" content="width=device-width, initial-scale=1.0">の記述を忘れると、スマホで表示した際にPC用の幅でレンダリングされてしまい、ページ全体が縮小表示されて文字が読みにくくなります​。必ずHTMLの<head>内にビューポート設定を入れておきましょう。また、一度作ったデザインは実際に様々なデバイス幅で確認し、必要に応じてメディアクエリのブレイクポイント(切り替え幅)を調整することが大切です。画面幅だけでなく、縦横の向き(orientation)によってもレイアウトが変わる場合は、その条件もメディアクエリに指定できます。レスポンシブデザインは「一度作れば全てOK」ではなく、様々な画面サイズへのテストと微調整を繰り返すプロセスである点を覚えておきましょう。

ビューポート (Viewport)

ビューポートとは、端的に言えばデバイス(ブラウザ)の表示領域のことです​。
PC・スマホ・タブレットなどそれぞれの画面幅で、ブラウザがWebページをどう表示するかを決める基準となる領域です。HTMLでは<meta name="viewport">タグを使って、このビューポートのサイズや拡大縮小の挙動を指定できます。一般的な指定は先述の通り以下のようになります。

html
<meta name="viewport" content="width=device-width, initial-scale=1.0">

width=device-widthはビューポート幅をデバイスのスクリーン幅に合わせる設定、initial-scale=1.0は初期表示倍率を1(等倍)にする設定です。これを記述することで、スマホではビューポートが例えば360px程度(機種により異なる)になり、CSSのメディアクエリなども意図した通り機能します。

よくある間違いと注意点: ビューポートを正しく設定しないとレスポンシブデザインは機能しません。もし上記のメタタグを指定しなければ、スマホで閲覧してもビューポート幅がPCと同じ約980pxに固定されてしまい、スタイルが崩れたり極端に縮小表示されて文字や画像が小さく見えたりします​。
その結果、ユーザーが毎回ピンチイン・ピンチアウトで拡大縮小しなければならず、非常に閲覧しづらくなってしまいます​。
したがって、レスポンシブ対応では真っ先に適切なviewport設定を行いましょう。また、initial-scaleをユーザーの好みで変更できなくするuser-scalable=noの指定は、ユーザー体験やアクセシビリティを損ねる可能性があるため一般的には避けるべきです。
基本的には上記のdevice-widthとinitial-scaleの指定だけ入れておけば十分です。

メディアクエリ (Media Query)

メディアクエリは、CSSにおいてデバイスの特性(画面幅や高さ、解像度、向きなど)に応じて異なるスタイルを適用するための仕組みです​。レスポンシブデザインでは主に画面の幅(ブレイクポイント)に応じてレイアウトや装飾を切り替える目的で使われます。@mediaルールを用いて記述し、条件を満たす場合にのみ中括弧内のCSSを適用します。

例えば、「画面幅が600px以下のときに文字サイズを小さくする」場合、以下のように書きます。

css
/* 基本のスタイル */
body { font-size: 16px; }

/* 600px以下の画面ではフォントサイズを14pxに */
@media screen and (max-width: 600px) {
  body {
    font-size: 14px;
  }
}

上記では、通常はfont-size:16pxですが、閲覧環境の幅が600px以下の場合に限りfont-size:14pxが適用され、スマホなど小さい画面で文字が大きくなりすぎないよう調整できます。

メディアクエリの条件式には様々なものが指定可能です。よく使われるのはmin-width(ある幅以上)やmax-width(ある幅以下)ですが、他にもorientation: landscape/portrait(画面の向き)、min-resolution(画面の解像度dpi)などがあります。基本的な構文は以下の通りです。

css
@media メディアタイプ and (条件) {
  /* 適用するスタイル */
}

ここでメディアタイプは通常screen(画面用)を指定します。印刷用ならprintなどもありますが、ウェブデザインではほぼscreenで問題ありません。andで繋いだ括弧内に条件式を書きます。条件は複数組み合わせることも可能です(,で区切ればOR条件)。

よくある間違いと注意点: メディアクエリを使う際に気をつけたいのは、CSSの記述順と条件の重複です。CSSは後から書かれたルールが優先されるため、例えばmax-widthの条件を使って「小さい画面用CSS」を後に書く(デスクトップ→モバイルの順)方法と、min-widthを使って「大きい画面用CSS」を後に書く(モバイル→デスクトップの順)方法があります。前者はデスクトップ・PC向けスタイルを先に書き、後からモバイル向けを上書きするデスクトップファーストのアプローチ、後者はモバイル中心にスタイルを書き、後からPC向けを追加するモバイルファーストのアプローチです。どちらでも実現は可能ですが、一般にはモバイルファーストで書いた方が無駄な上書きが減り、効率的と言われます。自分の書きやすい方法を選んでも構いませんが、メディアクエリの条件が競合しないように注意しましょう。同じ要素に対してmax-width:600pxmax-width:800pxの両方でスタイルを定義すると、600px以下の場合にどちらもマッチしてしまうため、意図せぬ優先順位問題が発生します。条件は可能な限り明確に、そして過不足なく設定することが大切です。

モバイルファースト (Mobile-First)

モバイルファーストとは、Web制作においてスマートフォンなどモバイル端末向けデザインを優先的に考える手法です​。
要するに、「小さい画面から大きい画面へ」順に設計する考え方で、近年のウェブ制作では主流となっています。モバイルユーザーの割合増加に伴い、まずはスマホで使いやすいUIを作り、そこから画面が大きくなるにつれて余白や装飾をリッチにしていく方が効率的かつユーザー体験的にも良いからです。

モバイルファーストを具体的に実践するには、CSSの記述をモバイル向けベーススタイル -> メディアクエリ(min-width)でPC向け拡張、という順序にするのが典型です。先ほどのメディアクエリの例でも、基本スタイルをモバイル想定で書き、大画面用の変更点を@media (min-width: 768px)などで下に追加する書き方をしました。このようにすると、モバイル端末では追加のCSSを無視して必要最低限のスタイルだけを読み込み、PCではそれにプラスしてレイアウトを調整する、といった具合に動作します。

よくある間違いと注意点: モバイルファーストという言葉から、「スマホサイトだけ作ればいい」という誤解を持つ人がいるかもしれません。しかし実際には、スマホ向けにデザインしたあと必ずタブレットやPCでの表示もチェックし、それぞれに適した改善を加える必要があります。モバイルファーストはあくまで開発順序の指針であり、最終的には全デバイスで最適な体験を提供することが目標です。また、モバイルファーストを採用するときは、画像サイズや通信量にも気を配りましょう。モバイルユーザーは通信帯域が限られることが多いため、最初から軽量な画像を使い、大画面の場合にのみ高解像度画像に切り替える(<img srcset>の利用など)といった工夫も有効です。結局のところ、ユーザーの多くがスマホ経由である現状では、まずスマホで快適に見られるかを最優先にデザインし、それを土台に全体を構築していくというモバイルファーストの考え方が理にかなっていると言えるでしょう。

まとめ

今回紹介したように、Webデザインとレスポンシブ対応に関する基本用語を理解することで、HTML・CSS・JavaScriptによるサイト制作の土台がしっかり固まります。セマンティックなHTMLタグで意味構造を整理し、CSSのセレクタやボックスモデルの知識で思い通りにスタイルを当て、FlexboxやGridレイアウトを駆使してデザインの幅を広げましょう。そして、ビューポートの設定とメディアクエリを用いてレスポンシブに対応し、モバイルファーストの視点で現代の様々なデバイスに最適化されたサイトを作ることができます。

最初は覚えることが多く感じるかもしれませんが、各用語のポイントを押さえて実際に手を動かしてみると徐々に理解が深まります。ぜひ本記事を参考に、基本用語を一つひとつ確認しながらコーディング練習をしてみてください。正しい理解に基づいてコーディングすれば、初心者でも効率的に美しいWebデザインを実現できるはずです。あなたのウェブ制作の一助になれば幸いです。
https://pf-creater.com/

Discussion

ログインするとコメントできます