Front-end Developer Handbookを教科書にフロントエンド周りの技術を習得する連載。
HTMLとCSSについて学ぶの説明です。
HTMLとCSSについて学ぶ
HTML
一般にHTMLと呼ばれるハイパーテキストマークアップランゲージは、Webページを作成するために使用される標準マークアップ言語です。
WebブラウザはHTMLファイルを読み込み、Webページにレンダリングできます。HTMLはWebサイトの構造を記述する、プログラミング言語というよりはマークアップ言語です。
参照元:英語版Wikipedia
HTMLでは以下の様に、ドキュメントの内容に対して意味づけを行うことができます。
<!--「見出し1」という文字列は「h1(1番重要なヘッダ)」ですよ-->
<h1>見出し1</h1>
基本的なHTMLの例
See the Pen html example by mojage (@mojage) on CodePen.
CSS
カスケーディングスタイルシート(CSS)は、マークアップ言語で記述されたドキュメントの外観とフォーマットを定義するために使用されるスタイルシート言語です。
HTMLやXHTMLで書かれたWebページやユーザインタフェースのスタイルを変更するためによく使用されますが、XML、SVG、XULなど、あらゆる種類のXMLドキュメントに適用できます。
HTMLとJavaScriptに加えて、CSSは、視覚的に魅力的なWebページ、Webアプリケーション用のユーザーインターフェイス、および多くのモバイルアプリケーション用のユーザーインターフェイスを作成するために、ほとんどのWebサイトで使用される基礎技術です。
参照元:英語版Wikipedia
CSSでは以下の様に、ドキュメントの内容に対して装飾を行うことができます。
/*「h1」というタグに対して以下の装飾を施します。*/
h1{
font-size: 20px; /*<-フォントサイズは20ピクセル */
color: #eee; /*<-文字色を#eee */
background-color: #800000; /*<-背景色を#800000 */
padding: 5px; /*<-内側の余白を5ピクセルとる */
margin: 0px; /*<-外側に余白は必要ない */
border-left: 10px solid #eee; /*<-左側に10ピクセル分の縁取りをして、#eeeの色を指定 */
}
基本的なCSSの例
See the Pen css example by mojage (@mojage) on CodePen.
家を建てることに例えれば、HTMLが骨組み、CSSは外装と見なすことも出来ます。
一般的な学習リソース
- Absolute Centering in CSS [読み物]
(CSSで絶対的中央寄せ) - Introduction to Web Development (v2) [視聴]
(WEB開発の紹介v2) - Interneting is Hard [読み物]
(インターネットは難しい) - Learn to Code HTML & CSS [読み物]
(HTML&CSSのコードを学ぶ) - Learn CSS Layout [読み物]
(CSSレイアウトを学ぶ) - Resilient Web Design [読み物]
(弾力性のあるWebデザイン) - MarkSheet [読み物]
- MDN: HTML [読み物]
- MDN: CSS [読み物]
- HTML+CSSによるウェブページ制作例 [読み物][日本語]
- Intro to HTML/CSS: Making webpages [視聴]
(HTML/CSSのイントロ:Webページを作る) - Semantic HTML: How to Structure Web Pages [視聴]
(HTMLの概要:どの様にWebページを組むのか) - Solid HTML Form Structure [視聴]
(ソリッドHTMLフォームの構造) - Understanding the CSS Box Model [視聴]
(CSSボックスモデルの理解)
有料のコース
- CSS Positioning [視聴][$]
(CSSポジショニング) - Front End Web Development: Get Started [視聴][$]
(フロントエンドWeb開発:始めよう) - Front-End Web Development Quick Start With HTML5, CSS, and JavaScript [視聴][$]
(フロントエンドWeb開発 クイックスタートHTML, CSS and JavaScript) - HTML Document Flow [視聴][$]
(HTMLドキュメントフロー) - Webサイトコーディングの人気オンライン講座
[視聴][日本語][$] - Webデザイン入門オンライン講座
[視聴][日本語][$]
書籍
HTML and CSS: Design and Build Websites
(HTMLとCSS:デザインとWebサイト作成)
HTML Mastery: Semantics, Standards, and Styling
(HTMLマスター:概要、標準仕様、スタイリング)
HTML5/CSS3モダンコーディング フロントエンドエンジニアが教える3つの本格レイアウト スタンダード・グリッド・シングルページレイアウトの作り方
マスタリングCSS
さらにCSSを使いこなす為に、セレクタとFlexboxを中心に学びましょう。
よく使うCSSセレクタの例
CSSのセレクタとは、どの要素に対してスタイルを定義するかを指定する方法です。
div{background-color: red;} /*divがセレクタ*/
#topix1 h2{background-color: red;} /*#topix1 h2がセレクタ*/
セレクタ | シンタックス | 例 |
---|---|---|
タグ名 | A | div{background-color: red;} |
id名 | #id | #topix1{background-color: red;} |
A要素配下の全てのB要素 | A B | p strong{background-color: red;} |
id名配下の全てのA要素 | #id A | #topix1 h2{background-color: red;} |
class名 | .class | .hotwords{background-color: red;} |
A要素配下の指定した全てのclass名 | A.class | ul.important{background-color: red;} |
A要素とB要素 | A, B | p, .important{background-color: red;} |
全ての要素 | * | *{background-color: red;} |
A要素配下の全ての要素 | A* | p*{background-color: red;} |
A要素の次にあるB要素 | A + B | p + .greeting{background-color: red;} |
A要素に続く全てのB要素 | A ~ B | h2 ~ p{background-color: red;} |
A要素直下のB要素 | A > B | h2 > p{background-color: red;} |
Flexboxサンプル
Flexboxとは、レイアウトをフレキシブルに行える手法です。
#container1 {
display: -webkit-flex; /*flexboxを適用する(safari用)*/
display: flex; /*flexboxを適用する*/
flex-direction:row; /*flexbox内での配置順序を左から右にする*/
}
See the Pen flexbox sample by mojage (@mojage) on CodePen.
参照元
- A Complete Guide to Flexbox [読み物]
(フレックスボックスのコンプリートガイド) - CSS Grids and Flexbox for Responsive Web Design [視聴][$]
(レスポンシブWEBデザインのためのCSSグリッドとフレックスボックス) - CSS Diner [インタラクション]
(CSSダイナー) - A Complete Guide to Flexbox [読み物]
(Flexboxのコンプリートガイド) - CSS Selectors from CSS4 till CSS1 [読み物]
(CSS4からCSS1までのCSSセレクター) - CSS3 [読み物][日本語]
- What the Flexbox?! A Simple, Free 20 Video Course That Will Help You Master CSS Flexbox [視聴]
(Flexboxとは?!CSSをマスターする為のシンプルかつ無料の20のビデオコース) - CSS3 In-Depth [視聴][$]
(CSS3の詳細) - 30 Seconds of CSS - A curated collection of useful CSS snippets you can understand in 30 seconds or less. [読み物]
(30秒CSS-30秒以内で理解できる便利なCSSスニペットを集めました。)
書籍
CSSの設計
有名なCSS設計手法はいくつかありますが、共通することはウェブサイトをパーツの集合体として考え、そのパーツごとに分けてCSSを考えることです。
す。(ヘッダー、フッダー、大見出し、小見出し、リスト、表、ボタンなど)
Atomic Design
Atomic Designはコンポーネントの単位を5つに分けています。
コンポーネント | 内容 | 例 |
---|---|---|
Atoms(原子) | UIを構成する基礎的な要素。 | 対象の要素が機能的にそれ以上分割できないもの。カラーパレット、フォント、アニメーションなど。 |
Molecules(分子) | Atomsを組み合わせて作る要素。 | Moleculesになることで意味を持つ。フォームはラベル・入力フォーム・登録ボタンというAtomsからなる。 |
Organisms(有機体) | AtomsやMolecules、他のOrganismsを組み合わせて作る要素。 | ヘッダーやフッターはこのOrganismsに含まれ、「タイトル」というAtomsと、2つのMolecules「ナビゲーション」「SNSのボタン群」が組み合わさり、ヘッダーというOrganismsになる。 |
Templates(テンプレート) | MoleculesやOrganismsを組み合わせて作る。 | Templatesはページ構造を説明するもので、ワイヤーフレームと同義。 |
Pages(ページ) | Template内へ実際の文章や画像などが入ったもの。 | 実際のページ。 |
BEM
BEMは3つの概念によってCSSを構成します。
概念 | クラス命名規則 | 説明 |
---|---|---|
Block | .[Block名] { ... } | Webページを構成するパーツのこと。ヘッダー、ナビゲーション、商品説明、フッターなど。 |
Element | .[Block名]__[Element名] { ... } | Blockを構成する要素のこと。検索フォームを構成するinputやbottonなど。 |
Modifier | {[Block名]or[Element名]}_[key]_[value] { ... } | 既存のBlockやElementを流用し、見た目や動きが違うものを作る場合。現在いるタブのみ色が変わる場合など。 |
ITCSS
Inverted Triangle CSS(逆三角形CSS)の略称で、全体に渡る[Settings]から詳細な[Trumps]まで、7つのレイヤーにわけてCSSを構成します。
レイヤー | 説明 |
---|---|
Settings | プリプロセッサで利用するグローバル変数、フォント、色など。 |
Tools | プリプロセッサで利用するmixinやfunctionなど。最初の2つのレイヤーにはCSSを出力しないことが重要。 |
Generic | normalize.css、resetなど、スタイルのリセットや正規化、ボックスサイズの定義など。これは実際のCSSを生成する最初のレイヤー。 |
Elements | H1タグやaタグなど巣のHTML要素のスタイリング。 |
Objects | 装飾されていないデザインパターンを定義するクラスベースのセレクタ、例えばOOCSSのメディアオブジェクト。 |
Components | 固有のUIコンポーネント。UIコンポーネントはオブジェクトとコンポーネントで構成される。 |
Trumps | ユーティリティとヘルパークラス。ヘルパークラスを隠すなど!important を利用して良い。 |
OOCSS
Object-Oriented CSSの略で、Webページをレゴの集まりの様に捉え、ひとつひとつのパーツをそのパーツで完結するようにCSSを書きます。
<h2 class="topix">Title</h2>
<h2 class="topix2">Contact</h2>
<h2 class="topix3"><span>Menu1</span></h2>
<h2 class="topix3"><span>Menu2</span></h2>
/* topix module */
.topix {
prop: val;
}
/* topix2 module */
.topix2 {
prop: val;
}
/* topix3 module */
.topixg3 {
prop: val;
}
.topix3 > span {
prop: val;
}
SMACSS
Scalable and Modular Architecture for CSSの略です。CSSのためのスケーラブルでモジュラーなアーキテクチャという意味になります。
SMACSSでは、CSSのルールを次の5つのカテゴリに分類しています。
カテゴリ | 説明 | セレクタの規則 |
---|---|---|
Base | サイト全体に影響するもの。 | classやIDセレクタを使わない。 |
Layout | ヘッダやフッタなど、ページレイアウトを定義する。 | l- をつけるなどレイアウトだとわかるクラス名にする。 |
Module | レイアウトの中に配置する再利用可能なパーツを定義する。 | 接頭辞なし |
State | JavaScriptで操作されるレイアウトやモジュールの状態に対するスタイルを定義する。 | 接頭辞is- |
Theme | テーマ機能がある場合にのみ、テーマごとのスタイルを定義する。 | theme- 接頭辞などをつける。 |
- SMACSS[読み物] [$]
- Scalable Modular Architecture for CSS (SMACSS) [視聴][$]
(CSS用スケーラブルモジュラアーキテクチャ(SMACSS))
- Scalable Modular Architecture for CSS (SMACSS) [視聴][$]
- SMACSSによるCSSの設計 - 第1回 ベースとレイアウト [日本語]
SUIT CSS
SUIT CSSはコンポーネントベースのCSS設計手法。ReactやEmber、AngularといったコンポーネントベースのUI設計と相性がよい
rscss
rscssはフレームワークではありません。メンテナンス可能なCSSを構築する為のアイデアです。
- rscss
- RSCSS というCSS設計について [日本語]
参照元
- ウェブ制作者なら意識してほしいCSS設計の基礎知識 [日本語]
OOCSS/BEM/SMACSSについて触れられています。
コーディングガイド
- CSS code guide [読み物]
(CSSコードガイド) - css-architecture
(CSSアーキテクチャ) - cssguidelin.es [読み物]
- Idiomatic CSS [読み物]
(よく使われるCSS) - MaintainableCSS [読み物]
(維持することの出来るCSS) - Standards for Developing Flexible, Durable, and Sustainable HTML and CSS [読み物]
(柔軟で丈夫で持続可能なHTMLとCSSを開発するための標準的な方法) - 「Google HTML/CSS Style Guide」を適当に和訳してみた [読み物][日本語]
- こんなHTMLとCSSのコーディング規約で書きたい [読み物][日本語]
参考文献/ドキュメント
- CSS Triggers…a Game of Layout, Paint, and Composite
(CSSトリガー・・・レイアウト、ペイント、コンポジットのゲーム) - cssreference.io
- cssvalues.com
- Default CSS for Chrome Browser
(クロームブラウザ用デフォルトCSS) - HTML属性リファレンス [日本語]
- CSS リファレンス [日本語]
- HTML 要素リファレンス [日本語]
用語集
- CSS Glossary - Programming Reference for CSS Covering Comments, Properties, and Selectors
(CSSの用語集 - CSSのコメント、プロパティ、セレクタをカバーするプログラミングリファレンス) - HTML Glossary - Programming Reference for HTML elements
(HTML用語集 - HTML要素のプログラミングリファレンス)
規格/仕様
- All W3C CSS Specifications
(すべてのW3C CSS仕様) - All W3C HTML Spec
(すべてのW3C HTML仕様) - Cascading Style Sheets Level 2 Revision 2 (CSS 2.2) Specification
(カスケードディングスタイルシートレベル2リビジョン2(CSS 2.2)仕様) - CSS Indexes - A listing of every term defined by CSS specs
(CSSインデックス - CSS仕様で定義されているすべての用語のリスト) - The Elements of HTML from the Living Standard
(HTML要素) - The HTML Syntax from the Living Standard
(HTMLシンタックス) - Global Attributes [日本語]
- HTML 5.2 from W3C
- Selectors Level 3
0 件のコメント:
コメントを投稿