SlideShare a Scribd company logo
マークアップ講座
CSS
1. CSSとは 
2. CSS3について 
3. CSS実装 
4. CSS運用の効率化 
5. CSS高速化
1. CSSとは 
2. CSS3について 
3. CSS実装 
4. CSS運用の効率化 
5. CSS高速化
1. CSSとは 
Cascading Style Sheets 
1994年 CERN 
Håkon Wium Lie 
(ホーコン・ウィウム・リー) 
! 
W3C管轄
1. CSSとは 
CSSの役割 
ドキュメントからデザイン要素を分離 
させるために開発されたスタイルシー 
ト言語の1つ
1. CSSとは 
Cascading Style Sheetsの意味 
「Cascading」とは、「階段上の滝」 
の意味であり、 
親要素のスタイルが子要素に、先に書 
いた宣言が後から書いた宣言へ継承さ 
れる性質をたとえた名称
1. HTMLとは 
CSSの基本構造 
! 
.sample {color: red;} 
! 
selector {property: value;} 
! 
セレクタ {プロパティ: 値;}
1. HTMLとは 
CSSの基本構造 
! 
セレクタ { 
プロパティ: 値; 
プロパティ: 値; 
プロパティ: 値; 
} 
! 
/* 
コメント 
*/
1. CSSとは【補足】 
レイアウトとしてのHTML 
(displayプロパティのデフォルト値) 
• ブロックレベル要素(Block-Level Elements) 
• インライン要素(Inline Elements) 
• インラインブロック要素(Inline-block Elements)
1. CSSとは【補足】 
ブロックレベル要素 
(Block-Level Elements) 
• 自身の明確な大きさを持つ 
• 改行を伴わずとも縦に積み上がる 
• 横幅のサイズは親要素の横幅に従う 
http://codepen.io/sekiyaeiji/pen/CFdLa?editors=100
1. CSSとは【補足】 
インライン要素 
(Inline Elements) 
• 文章の一部のように振る舞う 
• 文章の1行としてだけの縦幅をもつ 
• 横幅のサイズはコンテンツ内容に従う 
• 自身の大きさを持たず、制御もできない 
http://codepen.io/sekiyaeiji/pen/Cqbne?editors=100
1. CSSとは【補足】 
インラインブロック要素 
(置換インライン要素) 
(Inline-block Elements) 
• 文章の一部のように振る舞う 
• 横幅のサイズはコンテンツ内容に従う 
• 自身の大きさを持ち、縦横幅のサイズが制御 
できる 
http://codepen.io/sekiyaeiji/pen/HxFcu?editors=100
1. CSSとは【補足】 
利用頻度の高い要素における 
displayのデフォルト値 
http://codepen.io/sekiyaeiji/pen/bcIie?editors=100 
display値はCSSにより変更できる 
http://codepen.io/sekiyaeiji/pen/Hmuxy?editors=100
1. CSSとは【補足】 
li要素のレイアウトへの利用 
ナビゲーションメニューやfeed項目な 
どの繰り返しレイアウトに利用するli要 
素においては、デフォルトスタイルを 
リセットする
1. CSSとは【補足】 
li要素のレイアウトへの利用 
! 
[ul要素に設定したセレクタ] { 
padding-left: 0; 
} 
! 
[li要素に設定したセレクタ] { 
list-style-type: none; 
} 
http://codepen.io/sekiyaeiji/pen/mGBFA?editors=110
1. CSSとは 
2. CSS3について 
3. CSS実装 
4. CSS運用の効率化 
5. CSS高速化
2. CSS3について 
モジュールという概念の導入
2. CSS3について 
モジュールとは 
「すべてを一度に決めないことに決めた」 
CSSの新しい仕様 
! 
http://www.w3.org/Style/CSS/ 
current-work
2. CSS3について 
モジュールとは 
• 完成したモジュールから勧告できる 
• 新機能を追加しやすい 
• ブラウザ、環境が採用の取捨選択をしやすい 
! 
→ 今後、CSSは五月雨式に勧告される
2. CSS3について 
CSS3新仕様 
1. gradient (グラデーション) 
2. border-radius (角丸) 
3. text-shadow、box-shadow (影) 
4. animation (アニメーション) 
5. transition (変移アニメーション) 
6. transform (変形) 
7. Web Fonts 
8. Media Queries 
9. セレクタ 
10.ベンダープレフィックス
2-1. gradient (グラデーション) 
• background: 
linear-gradient([水平開始位置] [垂直開始位 
置] [角度], [開始色] 0%, [色] [位置], [色] [位 
置], [色] [位置], [終了色] 100%); 
! 
値 : left/center/right、top/center/right、 
角度、色値、パーセント、1以下の少数
2-1. gradient (グラデーション) 
! 
/* Old browsers */ 
background: #ff8f38; 
/* FF3.6+ */ 
background: -moz-linear-gradient(top, #ff8f38 0%, #ffa24d 40%, #ff7f28 100%); 
/* Chrome,Safari4+ */ 
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ff8f38), color-stop( 
40%,#ffa24d), color-stop(100%,#ff7f28)); 
/* Chrome10+,Safari5.1+ */ 
background: -webkit-linear-gradient(top, #ff8f38 0%,#ffa24d 40%,#ff7f28 100%); 
/* Opera 11.10+ */ 
background: -o-linear-gradient(top, #ff8f38 0%,#ffa24d 40%,#ff7f28 100%); 
/* IE10+ */ 
background: -ms-linear-gradient(top, #ff8f38 0%,#ffa24d 40%,#ff7f28 100%); 
/* W3C */ 
background: linear-gradient(to bottom, #ff8f38 0%,#ffa24d 40%,#ff7f28 100%); 
/* IE6-9 */ 
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ff8f38', 
endColorstr='#ff7f28',GradientType=0 ); 
http://codepen.io/sekiyaeiji/pen/nAlkb?editors=010
2-1. gradient (グラデーション) 
『Ultimate CSS Gradient 
Generator - ColorZilla.com』 
! 
import from image 
http://www.colorzilla.com/gradient-editor/ 
! 
→ gradient(グラデーション) CSSの値は、 
自力では書かない
2-1. gradient (グラデーション) 
gradient button 
ボタンのベースデザインをCSSに書き 
換えてみる 
https://type.jp/mypage/scout.do 
ボタンデザインを拝借します 
http://codepen.io/sekiyaeiji/pen/pFcKe?editors=110
2-2. border-radius (角丸) 
• border-radius: 
[曲線の水平半径] / [曲線の垂直半径]; 
! 
• border-[位置]-radius: [曲線半径]; 
! 
値 : 長さ、パーセント
2-2. border-radius (角丸) 
! 
/* border-radius sample */ 
border-radius: 100px / 50px; 
border-top-left-radius: 30px; 
border-top-right-radius: 10px; 
border-bottom-right-radius: 60px; 
http://codepen.io/sekiyaeiji/pen/gvdJj?editors=011
※ 円になる 
2-2. border-radius (角丸) 
! 
/* border-radius sample */ 
width: 100px; 
height: 100px; 
border-radius: 50%; 
http://codepen.io/sekiyaeiji/pen/IrKkg?editors=010
2-3. text-shadow、box-shadow (影) 
• text-shadow: 
[水平位置] [垂直位置] [ぼかし半径] [色]; 
! 
• box-shadow: 
[水平位置] [垂直位置] [ぼかし半径] [大きさ] 
[色] [外側(省略)/内側(inset)]; 
! 
値 : 長さ、(空)/inset
2-3. text-shadow、box-shadow (影) 
! 
/* text-shadow sample */ 
text-shadow: -1px -1px 0px #444, 1px 1px 
0px #eee; 
text-shadow: -1px 0px 0px #c60, 1px 0px 
0px #c60, 0px -1px 0px #c60, 0px 1px 0px 
#c60; 
http://codepen.io/sekiyaeiji/pen/dzDrg?editors=110
2-3. text-shadow、box-shadow (影) 
『CSS3 box-shadowジェネレー 
ター』 
! 
http://www.bad-company.jp/demos/box-shadow/
2-4. animation (アニメーション) 
• animation-name: [アニメーション名]; 
• animation-duration: [アニメーションの再生時間]; 
• animation-timing-function: [アニメーションの加速度演出名]; 
• animation-iteration-count: [アニメーションの再生回数]; 
• animation-direction: [アニメーションの偶数回目の再生方法]; 
• animation-play-state: [アニメーションの再生状態]; 
• animation-delay: [アニメーションの開始タイミング]; 
• @keyframes [アニメーション名] { 
0% {[開始時の処理内容]} 
[処理タイミング] {[途中の処理内容]} 
[処理タイミング] {[途中の処理内容]} 
[処理タイミング] {[途中の処理内容]} 
100% {[終了時の処理内容]} 
}
2-4. animation (アニメーション) 
! 
/* animation sample */ 
.sample { 
-webkit-animation-name: animKey; 
-webkit-animation-duration: 2s; 
-webkit-animation-timing-function: ease-in-out; 
-webkit-animation-iteration-count: infinite; 
-webkit-animation-play-state: running; 
} 
! 
@-webkit-keyframes animKey { 
0% { 
top: 50px; 
left: 50px; 
background: #c60; 
}
2-4. animation (アニメーション) 
! 
50% { 
top: 60px; 
left: 150px; 
background: #fc9; 
} 
100% { 
top: 50px; 
left: 50px; 
background: #c60; 
} 
} 
• 「@(-webkit-)keyframes」とセットでの運用 
• 0~100%の細かいタイムライン設定が可能 
• CSS単体でループ再生可能 
http://codepen.io/sekiyaeiji/pen/CeDwt?editors=010
2-5. transition (変移アニメーション) 
• transition-property: 
[アニメーションさせるCSSプロパティ]; 
• transition-duration: 
[アニメーションの再生時間]; 
• transition-timing-function: 
[アニメーションの加速度演出名]; 
• transition-delay: 
[アニメーションの開始タイミング];
2-5. transition (変移アニメーション) 
! 
/* transition sample */ 
-webkit-transition-property: top left 
background-color; 
-webkit-transition-duration: 1s; 
-webkit-transition-timing-function: ease-in-out; 
-webkit-transition-delay: 0; 
http://codepen.io/sekiyaeiji/pen/qglFu?editors=010
2-6. transform (変形) 
• transform: translate([水平距離], [垂直距離]); 
• transform: scale([水平縮尺], [垂直縮尺]); 
• transform: rotate([回転角度]); 
• transform: 
skew([水平傾斜角度], [垂直傾斜角度]); 
• transform-origin: 
[水平変形支点] [垂直変形支点];
2-6. transform (変形) 
! 
/* transform sample */ 
-webkit-transform: rotate(-60deg) 
scale(0.9) skew(40deg, -10deg) 
translate(-100px, 50px); 
http://codepen.io/sekiyaeiji/pen/KDqvf?editors=010 
• animation keyframesの値としても利用しやすい 
http://codepen.io/sekiyaeiji/pen/psBEz?editors=010
2-7. Web Fonts 
• フォントをオンライン側から提供する仕組み 
• デバイスインストール済みフォント依存からの開放 
• アイコン画像の代替にWeb Fontsを利用すると利便性があがり、 
リクエスト数削減などメリットが多い 
• 漢字や外字が十分に用意されていて、かつライセンスがコスト的 
に見合う日本語WebFontはまだ存在しない 
• フォントの複数読み込みや、日本語フォントなどファイルサイズ 
が大きくなると、サイト全体のパフォーマンス低下が懸念され 
る 
http://test0001.s-ej.com/51/font01.html
2-7. Web Fonts 
『Google Fonts』 
https://www.google.com/fonts 
! 
『Fontello - icon fonts generator』 
http://fontello.com/ 
!利用するアイコンだけをWebフォント化できてパフォー 
マンス改善に役立つWeb Fonts提供サービス 
オリジナルデザインのアイコン集も作成可能、一度つくっ 
ておくと一生使えるアイコン集になるかも 
http://test0001.s-ej.com/51/font02.html 
http://test0001.s-ej.com/51/font03.html
2-8. Media Queries 
レスポンシブWeb 
! 
/* media screen sample */ 
/* ウィンドウ横幅1000px以下で有効 */ 
@media screen and (max-width: 1000px) {} 
! 
/* ウィンドウ横幅600px以上900px以下で有効 */ 
@media screen and (min-width: 600px) and (max-width: 900px) {} 
! 
/* ウィンドウ横幅600px以下でsample.cssを適用 */ 
<link rel="stylesheet" media="screen and (max-width: 600px)" 
href="sample.css"> 
http://codepen.io/sekiyaeiji/pen/wGkdg?editors=110
2-9. セレクタ 
新しい擬似class 
セレクタ意味 
E[foo^="bar"] foo属性の値がbarで始まっているE要素 
E[foo$="bar"] foo属性の値がbarで終わっているE要素 
E[foo*="bar"] foo属性の値にbarを含むE要素 
E:root 文章内のルート要素であるEという要素 
E:nth-child(n) 親要素のn番目の子要素 
E:nth-last-child(n) 親要素の後から数えてn番目の子要素 
E:nth-of-type(n) n番目にあるE要素 
E:nth-last-of-type(n) 最後から数えてn番目にあるE要素 
E:last-child 最後にある子要素 
E:first-of-type 兄弟関係にあるE要素で最初のもの 
E:last-of-type 兄弟関係にあるE要素で最後のもの 
http://codepen.io/sekiyaeiji/pen/jLBzH?editors=110
2-9. セレクタ 
新しい擬似class 
セレクタ意味 
E:only-child 唯一の子要素であるE要素 
E:only-of-type 子要素の中で唯一のE要素 
E:empty 子要素を持たないE要素 
E:target 参照URIの目標となっているE要素 
E:enabled 有効になっている(:enabled)E要素 
E:disabled 無効になっている(:disabled)E要素 
E:checked ラジオボタンやチェックボックスがチェッ 
クされた状態のときにE要素 
E:not(s) sでないセレクタを持つE要素 
E ~ F E要素の後にあるF要素 
http://codepen.io/sekiyaeiji/pen/CsAxo?editors=110
2-10. ベンダープレフィックス 
vendor prefixes 対応ブラウザ 
-webkit- Chrome、Safari 
-moz- Firefox 
-ms- InternetExplorer 
-o- Opera 
『CSS3 Reference』 
http://www.w3schools.com/cssref/css3_browsersupport.asp 
! 
ベンダープレフィックスが必要なプロパティの一覧
2. CSS3について 
* ブラウザごとの 
対応状況が知りたくなったら 
! 
http://caniuse.com/ 
! 
http://status.modern.ie/ 
http://mobilehtml5.org/ 
! 
http://css3clickchart.com/
2. CSS3について 
* プログレッシブ・エンハンスメントと 
フォールバック
* プログレッシブ・エンハンスメントとフォールバック 
プログレッシブ・エンハンスメント 
プログレッシブ・エンハンスメント(Progressive Enhancement) 
あるいはグレイスフル・デグラデーション(Graceful 
Degradation) 
! 
レガシー・低バージョン環境では可読性と機能性において"ふつうの 
体験"を提供し、最新の環境でより先進的な体験を提供する 
! 
プログレッシブ・エンハンスメントは、レガシー環境に対しては最低 
限の実装以外を"行わない"こと
* プログレッシブ・エンハンスメントとフォールバック 
フォールバック 
フォールバック(fall back)とは、後退する、代替するなどの意味 
! 
レガシーなメソッドや低バージョン対応のスクリプトなどを駆使して 
代替対応をすること 
! 
フォールバックは、低バージョン環境に対しても代替実装を"行う"こ 
と 
! 
フォールバックしない、またはできないと判断した場合に、プログレッ 
シブ・エンハンスメント対応を選択する、という場合もある
1. CSSとは 
2. CSS3について 
3. CSS実装 
4. CSS運用の効率化 
5. CSS高速化
3. CSS実装 (CSS3以前の要素を含む) 
擬似要素 
擬似要素意味 
::before、:before 要素の前に内容を追加 
::after、:after 要素の後に内容を追加 
::first-letter、:first-letter 最初に現れる文字 
::first-line、:first-line 最初の行 
::selection 選択時ハイライト状態の部分 
※ IE8以下にてシングルコロンのみ対応 
http://codepen.io/sekiyaeiji/pen/AsJBd?editors=110
3. CSS実装 (CSS3以前の要素を含む) 
擬似class 
擬似class 意味 
:link リンク 
:visited 訪問済みのリンク 
:active ユーザがアクティブにした要素 
:hover ユーザがポイティングデバイスで指 
示した要素 
:focus アクティベートされてフォーカスを 
受けた要素 
:first-child 最初の子要素
3. CSS実装 (CSS3以前の要素を含む) 
上記以外のCSSテクニック 
• media float 
• multi-column grid 
• position fixed 
• checkbox toggle switch
3. CSS実装 (CSS3以前の要素を含む) 
media float 
http://codepen.io/sekiyaeiji/pen/gGrbx?editors=110 
! 
/* media float sample */ 
.media__img { 
float: left; 
display: block; 
} 
.media__text { 
overflow: hidden; 
}
3. CSS実装 (CSS3以前の要素を含む) 
multi-column grid 
http://codepen.io/sekiyaeiji/pen/Ibhnf?editors=110 
! 
/* multi-column grid layout sample */ 
.list-wrap { 
width: 440px; 
} 
.list { 
margin-left: -10px; 
} 
!
3. CSS実装 (CSS3以前の要素を含む) 
multi-column grid 
! 
.list__item { 
display: inline-block; 
/display:inline; 
/zoom:1; 
margin-left: 10px; 
margin-bottom: 10px; 
width: 80px; 
vertical-align:top; 
}
3. CSS実装 (CSS3以前の要素を含む) 
position fixed 
http://codepen.io/sekiyaeiji/pen/qdvkz?editors=110 
! 
/* position fixed sample */ 
.header { 
position: fixed; 
} 
.footer { 
position: fixed; 
bottom: 0; 
}
3. CSS実装 (CSS3以前の要素を含む) 
checkbox toggle switch 
http://codepen.io/sekiyaeiji/pen/bkgif?editors=110 
! 
.switch__inner:before, 
.switch__inner:after { 
float: left; 
box-sizing: border-box; 
} 
.switch__inner:before { 
content: "ON"; 
} 
.switch__inner:after { 
content: “OFF"; 
}
1. CSSとは 
2. CSS3について 
3. CSS実装 
4. CSS運用の効率化 
5. CSS高速化
4. CSS運用の効率化 
1. CSSが目指すべきゴール 
2. classセレクタ 
3. コンポーネント指向 
4. 命名方針
4. CSS運用の効率化 
1. CSSが目指すべきゴール 
2. classセレクタ 
3. コンポーネント指向 
4. 命名方針
4-1. CSSが目指すべきゴール 
CSSが目指すべきカタチ 
• 予測のしやすさ 
• 再利用のしやすさ 
• 保守のしやすさ 
• 拡張のしやすさ 
『CSS設計の教科書』 谷拓樹氏(http://twitter.com/hiloki)記 
http://www.amazon.co.jp/gp/product/4844336355
4. CSS運用の効率化 
1. CSSが目指すべきゴール 
2. classセレクタ 
3. コンポーネント指向 
4. 命名方針
4-2. classセレクタ 
idセレクタとclassセレクタ 
HTML要素のセマンティック性が向上した影響 
もあり、CSSセレクタとしてのid属性の役割が 
減少した現状では、異なる詳細度により運用が複 
雑になるidセレクタを使うよりも、classセレク 
タ主体のスタイル定義が好ましい
4-2. classセレクタ 
要素セレクタとclassセレクタ 
CSSセレクタにHTML要素を伴うセレクタを利 
用している場合、デザイン要件以外の事情でも発 
生し得る要素のマークアップ変更に対して、セレ 
クタの書き換えの工数が加わる状況は好ましくな 
い 
スタイル定義はclassセレクタ主体で運用すべき 
である 
http://codepen.io/sekiyaeiji/pen/knrdA?editors=110
4-2. classセレクタ 
セレクタと詳細度 
これらは混在して利用されると運用性が著しく低 
下することが懸念される 
!important > style="" > #id 
> .class > element 
http://codepen.io/sekiyaeiji/pen/EyjBL?editors=110
4-2. classセレクタ 
セレクタと詳細度 
詳細度の制御には 
この程度で十分ではないだろうか… 
!important > (#id) > .class 
http://codepen.io/sekiyaeiji/pen/EyjBL?editors=110
4. CSS運用の効率化 
1. CSSが目指すべきゴール 
2. classセレクタ 
3. コンポーネント指向 
4. 命名方針
4-3. コンポーネント指向 
構造と見た目を分離する 
(Separate structure and skin) 
(OOCSS) 
『Object-Oriented CSS』 
http://oocss.org/ 
https://github.com/stubbornella/oocss/wiki 
! 
『Nicole Sullivan』 
https://twitter.com/stubbornella
4-3. コンポーネント指向 
構造と見た目を分離する 
(Separate structure and skin) 
(OOCSS) 
基本構造と、見た目など具体的なプロ 
パティとでセレクタをわける 
http://codepen.io/sekiyaeiji/pen/aohjb?editors=110
4-3. コンポーネント指向 
コンテナとコンテンツを分離する 
(Separate container and content) 
(OOCSS) 
• 場所依存のセレクタ命名を行わないように気を 
つける 
• 機能、役割、転用可能なセレクタ名の利用を心 
がける 
http://codepen.io/sekiyaeiji/pen/GLisb?editors=110
4-3. コンポーネント指向 
CSSをカテゴライズする 
(SMACSS) 
『SMACSS』 
https://smacss.com/ 
https://smacss.com/ja(日本語) 
! 
『Jonathan Snook』 
https://twitter.com/snookca
4-3. コンポーネント指向 
CSSをカテゴライズする 
(SMACSS) 
• Base 
• Layout 
• Module 
• State 
• Theme
4-3. コンポーネント指向 
CSSをカテゴライズする 
Base 
サイト全体を定義し、更新を前提としない項目 
• html、bodyのサイト全体定義 
• reset.css、normalize.css
4-3. コンポーネント指向 
CSSをカテゴライズする 
Layout 
レイアウトのアウトラインとなる項目や、汎用的 
に利用されるレイアウトパーツ 
• ヘッダ、フッタ、コンテンツエリア、ナビゲーションなど 
• カラム構造、グリッド構造、メニュー構造などのベースレイア 
ウト 
• classセレクタには接頭辞「l-」を付与 
• idセレクタの利用を認める
4-3. コンポーネント指向 
CSSをカテゴライズする 
Module 
Layoutで定義した項目以外のページレイアウト 
のすべて
4-3. コンポーネント指向 
CSSをカテゴライズする 
State 
JavaScriptで制御されるような状態表現を定義 
する項目 
• 表示非表示、選択非選択などの一時的な定義 
• メディアクエリの各状態定義
4-3. コンポーネント指向 
CSSをカテゴライズする 
Theme 
blogのスキンやカテゴリ毎カラーバリエーショ 
ンなど、ページ全体の定義を大きく切り替える項 
目
4. CSS運用の効率化 
1. CSSが目指すべきゴール 
2. classセレクタ 
3. コンポーネント指向 
4. 命名方針
4-4. Modifier と Element 
MindBEMding 
『MindBEMding ‒ getting your head 
’round BEM syntax ‒ CSS Wizardry ‒ 
CSS, OOCSS, front-end architecture, 
performance and more, by Harry 
Roberts』 
http://csswizardry.com/2013/01/mindbemding-getting- 
your-head-round-bem-syntax/
4-4. Modifier と Element 
MindBEMding 
サイト全体で統一されたclass命名規則がある方 
が開発・運用効率が向上する 
MindBEMdingもその規則の一つ 
! 
.sample-block {} /* Block */ 
.sample-block--full {} /* Modifier バリエーション */ 
.sample-block__field {} /* Element 子要素 */
4-4. Modifier と Element 
BEM 
『BEM. Block, Element, Modifier』 
http://bem.info/ 
Block、Element、Modifierの頭文字、 
フロントエンド設計方法提案の一つ 
MindBEMdingのベース
1. CSSとは 
2. CSS3について 
3. CSS実装 
4. CSS運用の効率化 
5. CSS高速化
5. CSS高速化 
1. link要素 と @import 
2. 画像からCSSへ 
3. Data URI scheme 
4. CSSスプライト
5-1. link要素 と @import 
外部CSS読み込み : link要素 と @import 
→ ◯ レンダリング速度向上 
! 
<link rel="stylesheet" href="sample.css"> 
! 
@import “sample.css" 
『ハイパフォーマンスWebサイト ― 
高速サイトを実現する14のルール』 
Steve Souders 
http://www.amazon.co.jp/exec/obidos/ASIN/487311361X/
5-1. link要素 と @import 
外部CSS読み込み : link要素 と @import 
• @importを含んだパターンの多くは、 
複数ファイルの並列読み込みを阻害する 
• link要素による読み込みがベター 
テストパターン 
http://test0001.s-ej.com/50/s01.html 
http://test0001.s-ej.com/50/s02.html 
http://test0001.s-ej.com/50/s03.html
5-2. 画像からCSSへ 
画像からCSSへ 
→ ◯ ファイル容量削減 
→ ◯ リクエスト数の削減 
→ ◯ レンダリング速度向上 
• グラデーション 
• 影 
• 角丸、円 
• 吹き出し 
http://cssarrowplease.com/ 
http://codepen.io/sekiyaeiji/pen/Iwvly?editors=110 
• Web Fonts(先述)
5-3. Data URI scheme 
Data URI scheme (データURIスキーム) 
→ ◯ リクエスト数の削減 
 → ◯ レンダリング(描画)時に確実に表示したい画像 
→ ◯ 小さな画像に最適 
→ ✕ 初期表示速度が下がるため多用は禁物 
通常外部ファイルとして存在する画像データを、Base64 
エンコードという方式で文字列化することによって文書 
ファイルに内包する手法 
! 
『Data URI Generator』 
http://bran.name/dump/data-uri-generator/
5-3. Data URI scheme 
Data URI scheme (データURIスキーム) 
! 
<!--html--> 
<img src="data:image/ 
png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAAkCAIAAAC8 
~(中略)~EDoYtxpdozVEn3GLzsN/3W4LKitQDX/ 
xdgAA9QFIRxxhj2AAAAAElFTkSuQmCC"> 
! 
/* css */ 
background-image: url(data:image/ 
png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAAkCAIAAAC8 
~(中略)~EDoYtxpdozVEn3GLzsN/3W4LKitQDX/ 
xdgAA9QFIRxxhj2AAAAAElFTkSuQmCC);
5-4. CSSスプライト 
CSSスプライト 
→ ◯ リクエスト数の削減 
→ ◯ 小さな画像群に最適 
「スプライト」 
妖精の意味から、アニメーション合成などのため 
の小さな画像片やその集合 
http://test0001.s-ej.com/50/sprite.png 
http://codepen.io/sekiyaeiji/pen/FeaKz?editors=110
5-4. CSSスプライト 
CSSスプライト 
• Google (http://www.google.co.jp/) の例 
http://ssl.gstatic.com/gb/images/v1_2e543709.png 
! 
• Amazon (http://www.amazon.co.jp/) の例 
http://g-ec2.images-amazon.com/images/G/09/gno/sprites/global-sprite-v1._ 
V339353423_.png 
http://g-ec2.images-amazon.com/images/G/09/associates/network/assoc_ss/ss-noregion- 
sprite-softy._V177524614_.gif 
• Yahoo! (http://www.yahoo.com/) の例 
https://s.yimg.com/dh/ap/default/140717/pc_icons_btns_sprite_0717_5pm.png 
https://s.yimg.com/dh/ap/default/140317/pc_flags_sprite_0317_Regular_630pm.png 
https://s.yimg.com/dh/ap/default/140610/pc_icons_video_sprite_0610_630pm.png

More Related Content

What's hot

今必要なCSSアーキテクチャ
今必要なCSSアーキテクチャ今必要なCSSアーキテクチャ
今必要なCSSアーキテクチャMayu Kimura
 
Word press34
Word press34Word press34
Word press34BREN
 
ネストを覚えた人のためのSassの便利な使い方
ネストを覚えた人のためのSassの便利な使い方ネストを覚えた人のためのSassの便利な使い方
ネストを覚えた人のためのSassの便利な使い方Hiroki Shibata
 
実践Sass 後編
実践Sass 後編実践Sass 後編
実践Sass 後編kosei27
 
ブラウザにやさしいHTML/CSS
ブラウザにやさしいHTML/CSSブラウザにやさしいHTML/CSS
ブラウザにやさしいHTML/CSSTakeharu Igari
 
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩Chieko Aihara
 
2017: A CSS Design Odyssey
2017: A CSS Design Odyssey2017: A CSS Design Odyssey
2017: A CSS Design OdysseyKenjiro Kubota
 
大規模サイトにおける本当は怖いCSSの話
大規模サイトにおける本当は怖いCSSの話大規模サイトにおける本当は怖いCSSの話
大規模サイトにおける本当は怖いCSSの話井上 誠
 
ロールオーバーのいろいろなやり方
ロールオーバーのいろいろなやり方ロールオーバーのいろいろなやり方
ロールオーバーのいろいろなやり方silvers ofsilvers
 
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!Takashi Uemura
 
今日から使える! Sass/compass ゆるめ勉強会
今日から使える! Sass/compass ゆるめ勉強会今日から使える! Sass/compass ゆるめ勉強会
今日から使える! Sass/compass ゆるめ勉強会Yuji Nojima
 
設計から実装まで、今すぐ始める高速化
設計から実装まで、今すぐ始める高速化設計から実装まで、今すぐ始める高速化
設計から実装まで、今すぐ始める高速化masaaki komori
 
HTML5 と SVG で考える、これからの画像アクセシビリティ
HTML5 と SVG で考える、これからの画像アクセシビリティHTML5 と SVG で考える、これからの画像アクセシビリティ
HTML5 と SVG で考える、これからの画像アクセシビリティNaoki Matsuda
 
css基本。
css基本。css基本。
css基本。web12
 
中級者のためのWordPress講座[第2回]WordPressテーマをカスタマイズしてみよう!
中級者のためのWordPress講座[第2回]WordPressテーマをカスタマイズしてみよう!中級者のためのWordPress講座[第2回]WordPressテーマをカスタマイズしてみよう!
中級者のためのWordPress講座[第2回]WordPressテーマをカスタマイズしてみよう!switch3000
 
201706 EC-CUBE 3.1開発進捗説明会:デザインカスタマイズ&新機能編 02_デザインカスタマイズ
201706 EC-CUBE 3.1開発進捗説明会:デザインカスタマイズ&新機能編 02_デザインカスタマイズ201706 EC-CUBE 3.1開発進捗説明会:デザインカスタマイズ&新機能編 02_デザインカスタマイズ
201706 EC-CUBE 3.1開発進捗説明会:デザインカスタマイズ&新機能編 02_デザインカスタマイズEC-CUBE
 
CSS設計のお勉強
CSS設計のお勉強CSS設計のお勉強
CSS設計のお勉強MarlboroLand
 

What's hot (19)

今必要なCSSアーキテクチャ
今必要なCSSアーキテクチャ今必要なCSSアーキテクチャ
今必要なCSSアーキテクチャ
 
Word press34
Word press34Word press34
Word press34
 
ネストを覚えた人のためのSassの便利な使い方
ネストを覚えた人のためのSassの便利な使い方ネストを覚えた人のためのSassの便利な使い方
ネストを覚えた人のためのSassの便利な使い方
 
実践Sass 後編
実践Sass 後編実践Sass 後編
実践Sass 後編
 
SMACSS入門
SMACSS入門SMACSS入門
SMACSS入門
 
ブラウザにやさしいHTML/CSS
ブラウザにやさしいHTML/CSSブラウザにやさしいHTML/CSS
ブラウザにやさしいHTML/CSS
 
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩
CSSだけでもけっこうイケルTwenty Tenのカスタマイズとそこから踏み出す第一歩
 
2017: A CSS Design Odyssey
2017: A CSS Design Odyssey2017: A CSS Design Odyssey
2017: A CSS Design Odyssey
 
大規模サイトにおける本当は怖いCSSの話
大規模サイトにおける本当は怖いCSSの話大規模サイトにおける本当は怖いCSSの話
大規模サイトにおける本当は怖いCSSの話
 
ロールオーバーのいろいろなやり方
ロールオーバーのいろいろなやり方ロールオーバーのいろいろなやり方
ロールオーバーのいろいろなやり方
 
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
 
今日から使える! Sass/compass ゆるめ勉強会
今日から使える! Sass/compass ゆるめ勉強会今日から使える! Sass/compass ゆるめ勉強会
今日から使える! Sass/compass ゆるめ勉強会
 
設計から実装まで、今すぐ始める高速化
設計から実装まで、今すぐ始める高速化設計から実装まで、今すぐ始める高速化
設計から実装まで、今すぐ始める高速化
 
実践Sass 前編
実践Sass 前編実践Sass 前編
実践Sass 前編
 
HTML5 と SVG で考える、これからの画像アクセシビリティ
HTML5 と SVG で考える、これからの画像アクセシビリティHTML5 と SVG で考える、これからの画像アクセシビリティ
HTML5 と SVG で考える、これからの画像アクセシビリティ
 
css基本。
css基本。css基本。
css基本。
 
中級者のためのWordPress講座[第2回]WordPressテーマをカスタマイズしてみよう!
中級者のためのWordPress講座[第2回]WordPressテーマをカスタマイズしてみよう!中級者のためのWordPress講座[第2回]WordPressテーマをカスタマイズしてみよう!
中級者のためのWordPress講座[第2回]WordPressテーマをカスタマイズしてみよう!
 
201706 EC-CUBE 3.1開発進捗説明会:デザインカスタマイズ&新機能編 02_デザインカスタマイズ
201706 EC-CUBE 3.1開発進捗説明会:デザインカスタマイズ&新機能編 02_デザインカスタマイズ201706 EC-CUBE 3.1開発進捗説明会:デザインカスタマイズ&新機能編 02_デザインカスタマイズ
201706 EC-CUBE 3.1開発進捗説明会:デザインカスタマイズ&新機能編 02_デザインカスタマイズ
 
CSS設計のお勉強
CSS設計のお勉強CSS設計のお勉強
CSS設計のお勉強
 

Similar to マークアップ講座 02 CSS

Css3でキャラクターアニメーションに挑戦してみた
Css3でキャラクターアニメーションに挑戦してみたCss3でキャラクターアニメーションに挑戦してみた
Css3でキャラクターアニメーションに挑戦してみたShinichi Sato
 
CSS Design and Programming
CSS Design and ProgrammingCSS Design and Programming
CSS Design and ProgrammingTaku AMANO
 
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみようJavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみようHiroaki Wakamatsu
 
CSS3の最新事情
CSS3の最新事情CSS3の最新事情
CSS3の最新事情Makoto Kato
 
㉗HTML5+jQueryでお絵かき
㉗HTML5+jQueryでお絵かき㉗HTML5+jQueryでお絵かき
㉗HTML5+jQueryでお絵かきNishida Kansuke
 
ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』
ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』
ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』Naoki Matsuda
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップYasuhito Yabe
 
React で CSS カプセル化の可能性を考える
React で CSS カプセル化の可能性を考えるReact で CSS カプセル化の可能性を考える
React で CSS カプセル化の可能性を考えるYutaro Miyazaki
 
マークアップエンジニア だからうれしい Fireworksの使い方あれこれ
マークアップエンジニア だからうれしい Fireworksの使い方あれこれマークアップエンジニア だからうれしい Fireworksの使い方あれこれ
マークアップエンジニア だからうれしい Fireworksの使い方あれこれNaoki Matsuda
 
Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)
Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)
Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)shigeya
 
HTML5でスマートフォン開発の理想と現実
HTML5でスマートフォン開発の理想と現実HTML5でスマートフォン開発の理想と現実
HTML5でスマートフォン開発の理想と現実Takumi Ohashi
 
マークアップ講座 03 スマートフォン・デバイス最適化
マークアップ講座 03 スマートフォン・デバイス最適化マークアップ講座 03 スマートフォン・デバイス最適化
マークアップ講座 03 スマートフォン・デバイス最適化eiji sekiya
 
⑰jQueryをおぼえよう!その3
⑰jQueryをおぼえよう!その3⑰jQueryをおぼえよう!その3
⑰jQueryをおぼえよう!その3Nishida Kansuke
 
㉘HTML5+CSS3でアニメーション!
㉘HTML5+CSS3でアニメーション!㉘HTML5+CSS3でアニメーション!
㉘HTML5+CSS3でアニメーション!Nishida Kansuke
 
Sassをはじめよう!
Sassをはじめよう!Sassをはじめよう!
Sassをはじめよう!Yoshiya OKI
 
Movable Typeセミナー8月9日@大久保 アイデアマンズ
Movable Typeセミナー8月9日@大久保 アイデアマンズMovable Typeセミナー8月9日@大久保 アイデアマンズ
Movable Typeセミナー8月9日@大久保 アイデアマンズKunihiko Miyanaga
 

Similar to マークアップ講座 02 CSS (20)

What's Sketch.app
What's Sketch.appWhat's Sketch.app
What's Sketch.app
 
Css3でキャラクターアニメーションに挑戦してみた
Css3でキャラクターアニメーションに挑戦してみたCss3でキャラクターアニメーションに挑戦してみた
Css3でキャラクターアニメーションに挑戦してみた
 
CSS Design and Programming
CSS Design and ProgrammingCSS Design and Programming
CSS Design and Programming
 
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみようJavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
 
CSS3の最新事情
CSS3の最新事情CSS3の最新事情
CSS3の最新事情
 
㉗HTML5+jQueryでお絵かき
㉗HTML5+jQueryでお絵かき㉗HTML5+jQueryでお絵かき
㉗HTML5+jQueryでお絵かき
 
Hello css animation_public
Hello css animation_publicHello css animation_public
Hello css animation_public
 
ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』
ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』
ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ
 
React で CSS カプセル化の可能性を考える
React で CSS カプセル化の可能性を考えるReact で CSS カプセル化の可能性を考える
React で CSS カプセル化の可能性を考える
 
First sass
First sassFirst sass
First sass
 
マークアップエンジニア だからうれしい Fireworksの使い方あれこれ
マークアップエンジニア だからうれしい Fireworksの使い方あれこれマークアップエンジニア だからうれしい Fireworksの使い方あれこれ
マークアップエンジニア だからうれしい Fireworksの使い方あれこれ
 
Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)
Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)
Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)
 
SocketStream入門
SocketStream入門SocketStream入門
SocketStream入門
 
HTML5でスマートフォン開発の理想と現実
HTML5でスマートフォン開発の理想と現実HTML5でスマートフォン開発の理想と現実
HTML5でスマートフォン開発の理想と現実
 
マークアップ講座 03 スマートフォン・デバイス最適化
マークアップ講座 03 スマートフォン・デバイス最適化マークアップ講座 03 スマートフォン・デバイス最適化
マークアップ講座 03 スマートフォン・デバイス最適化
 
⑰jQueryをおぼえよう!その3
⑰jQueryをおぼえよう!その3⑰jQueryをおぼえよう!その3
⑰jQueryをおぼえよう!その3
 
㉘HTML5+CSS3でアニメーション!
㉘HTML5+CSS3でアニメーション!㉘HTML5+CSS3でアニメーション!
㉘HTML5+CSS3でアニメーション!
 
Sassをはじめよう!
Sassをはじめよう!Sassをはじめよう!
Sassをはじめよう!
 
Movable Typeセミナー8月9日@大久保 アイデアマンズ
Movable Typeセミナー8月9日@大久保 アイデアマンズMovable Typeセミナー8月9日@大久保 アイデアマンズ
Movable Typeセミナー8月9日@大久保 アイデアマンズ
 

More from eiji sekiya

ぐるなびあるあるLt2017
ぐるなびあるあるLt2017ぐるなびあるあるLt2017
ぐるなびあるあるLt2017eiji sekiya
 
Q&Aで振り返る「Back to Basics」 CSS 2015.08.30
Q&Aで振り返る「Back to Basics」 CSS 2015.08.30Q&Aで振り返る「Back to Basics」 CSS 2015.08.30
Q&Aで振り返る「Back to Basics」 CSS 2015.08.30eiji sekiya
 
フロントエンド実装 グロースのポイント
フロントエンド実装 グロースのポイントフロントエンド実装 グロースのポイント
フロントエンド実装 グロースのポイントeiji sekiya
 
Webサービスにおける
Surface Pro 3 対応とは
Webサービスにおける
Surface Pro 3 対応とはWebサービスにおける
Surface Pro 3 対応とは
Webサービスにおける
Surface Pro 3 対応とはeiji sekiya
 
マークアップ講座 04 jQuery - JavaScript
マークアップ講座 04 jQuery - JavaScriptマークアップ講座 04 jQuery - JavaScript
マークアップ講座 04 jQuery - JavaScripteiji sekiya
 
マークアップ講座 01b HTML
マークアップ講座 01b HTMLマークアップ講座 01b HTML
マークアップ講座 01b HTMLeiji sekiya
 
マークアップ講座 01a プロローグ
マークアップ講座 01a プロローグマークアップ講座 01a プロローグ
マークアップ講座 01a プロローグeiji sekiya
 

More from eiji sekiya (7)

ぐるなびあるあるLt2017
ぐるなびあるあるLt2017ぐるなびあるあるLt2017
ぐるなびあるあるLt2017
 
Q&Aで振り返る「Back to Basics」 CSS 2015.08.30
Q&Aで振り返る「Back to Basics」 CSS 2015.08.30Q&Aで振り返る「Back to Basics」 CSS 2015.08.30
Q&Aで振り返る「Back to Basics」 CSS 2015.08.30
 
フロントエンド実装 グロースのポイント
フロントエンド実装 グロースのポイントフロントエンド実装 グロースのポイント
フロントエンド実装 グロースのポイント
 
Webサービスにおける
Surface Pro 3 対応とは
Webサービスにおける
Surface Pro 3 対応とはWebサービスにおける
Surface Pro 3 対応とは
Webサービスにおける
Surface Pro 3 対応とは
 
マークアップ講座 04 jQuery - JavaScript
マークアップ講座 04 jQuery - JavaScriptマークアップ講座 04 jQuery - JavaScript
マークアップ講座 04 jQuery - JavaScript
 
マークアップ講座 01b HTML
マークアップ講座 01b HTMLマークアップ講座 01b HTML
マークアップ講座 01b HTML
 
マークアップ講座 01a プロローグ
マークアップ講座 01a プロローグマークアップ講座 01a プロローグ
マークアップ講座 01a プロローグ
 

マークアップ講座 02 CSS

  • 2. CSS
  • 3. 1. CSSとは 2. CSS3について 3. CSS実装 4. CSS運用の効率化 5. CSS高速化
  • 4. 1. CSSとは 2. CSS3について 3. CSS実装 4. CSS運用の効率化 5. CSS高速化
  • 5. 1. CSSとは Cascading Style Sheets 1994年 CERN Håkon Wium Lie (ホーコン・ウィウム・リー) ! W3C管轄
  • 6. 1. CSSとは CSSの役割 ドキュメントからデザイン要素を分離 させるために開発されたスタイルシー ト言語の1つ
  • 7. 1. CSSとは Cascading Style Sheetsの意味 「Cascading」とは、「階段上の滝」 の意味であり、 親要素のスタイルが子要素に、先に書 いた宣言が後から書いた宣言へ継承さ れる性質をたとえた名称
  • 8. 1. HTMLとは CSSの基本構造 ! .sample {color: red;} ! selector {property: value;} ! セレクタ {プロパティ: 値;}
  • 9. 1. HTMLとは CSSの基本構造 ! セレクタ { プロパティ: 値; プロパティ: 値; プロパティ: 値; } ! /* コメント */
  • 10. 1. CSSとは【補足】 レイアウトとしてのHTML (displayプロパティのデフォルト値) • ブロックレベル要素(Block-Level Elements) • インライン要素(Inline Elements) • インラインブロック要素(Inline-block Elements)
  • 11. 1. CSSとは【補足】 ブロックレベル要素 (Block-Level Elements) • 自身の明確な大きさを持つ • 改行を伴わずとも縦に積み上がる • 横幅のサイズは親要素の横幅に従う http://codepen.io/sekiyaeiji/pen/CFdLa?editors=100
  • 12. 1. CSSとは【補足】 インライン要素 (Inline Elements) • 文章の一部のように振る舞う • 文章の1行としてだけの縦幅をもつ • 横幅のサイズはコンテンツ内容に従う • 自身の大きさを持たず、制御もできない http://codepen.io/sekiyaeiji/pen/Cqbne?editors=100
  • 13. 1. CSSとは【補足】 インラインブロック要素 (置換インライン要素) (Inline-block Elements) • 文章の一部のように振る舞う • 横幅のサイズはコンテンツ内容に従う • 自身の大きさを持ち、縦横幅のサイズが制御 できる http://codepen.io/sekiyaeiji/pen/HxFcu?editors=100
  • 14. 1. CSSとは【補足】 利用頻度の高い要素における displayのデフォルト値 http://codepen.io/sekiyaeiji/pen/bcIie?editors=100 display値はCSSにより変更できる http://codepen.io/sekiyaeiji/pen/Hmuxy?editors=100
  • 15. 1. CSSとは【補足】 li要素のレイアウトへの利用 ナビゲーションメニューやfeed項目な どの繰り返しレイアウトに利用するli要 素においては、デフォルトスタイルを リセットする
  • 16. 1. CSSとは【補足】 li要素のレイアウトへの利用 ! [ul要素に設定したセレクタ] { padding-left: 0; } ! [li要素に設定したセレクタ] { list-style-type: none; } http://codepen.io/sekiyaeiji/pen/mGBFA?editors=110
  • 17. 1. CSSとは 2. CSS3について 3. CSS実装 4. CSS運用の効率化 5. CSS高速化
  • 19. 2. CSS3について モジュールとは 「すべてを一度に決めないことに決めた」 CSSの新しい仕様 ! http://www.w3.org/Style/CSS/ current-work
  • 20. 2. CSS3について モジュールとは • 完成したモジュールから勧告できる • 新機能を追加しやすい • ブラウザ、環境が採用の取捨選択をしやすい ! → 今後、CSSは五月雨式に勧告される
  • 21. 2. CSS3について CSS3新仕様 1. gradient (グラデーション) 2. border-radius (角丸) 3. text-shadow、box-shadow (影) 4. animation (アニメーション) 5. transition (変移アニメーション) 6. transform (変形) 7. Web Fonts 8. Media Queries 9. セレクタ 10.ベンダープレフィックス
  • 22. 2-1. gradient (グラデーション) • background: linear-gradient([水平開始位置] [垂直開始位 置] [角度], [開始色] 0%, [色] [位置], [色] [位 置], [色] [位置], [終了色] 100%); ! 値 : left/center/right、top/center/right、 角度、色値、パーセント、1以下の少数
  • 23. 2-1. gradient (グラデーション) ! /* Old browsers */ background: #ff8f38; /* FF3.6+ */ background: -moz-linear-gradient(top, #ff8f38 0%, #ffa24d 40%, #ff7f28 100%); /* Chrome,Safari4+ */ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ff8f38), color-stop( 40%,#ffa24d), color-stop(100%,#ff7f28)); /* Chrome10+,Safari5.1+ */ background: -webkit-linear-gradient(top, #ff8f38 0%,#ffa24d 40%,#ff7f28 100%); /* Opera 11.10+ */ background: -o-linear-gradient(top, #ff8f38 0%,#ffa24d 40%,#ff7f28 100%); /* IE10+ */ background: -ms-linear-gradient(top, #ff8f38 0%,#ffa24d 40%,#ff7f28 100%); /* W3C */ background: linear-gradient(to bottom, #ff8f38 0%,#ffa24d 40%,#ff7f28 100%); /* IE6-9 */ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ff8f38', endColorstr='#ff7f28',GradientType=0 ); http://codepen.io/sekiyaeiji/pen/nAlkb?editors=010
  • 24. 2-1. gradient (グラデーション) 『Ultimate CSS Gradient Generator - ColorZilla.com』 ! import from image http://www.colorzilla.com/gradient-editor/ ! → gradient(グラデーション) CSSの値は、 自力では書かない
  • 25. 2-1. gradient (グラデーション) gradient button ボタンのベースデザインをCSSに書き 換えてみる https://type.jp/mypage/scout.do ボタンデザインを拝借します http://codepen.io/sekiyaeiji/pen/pFcKe?editors=110
  • 26. 2-2. border-radius (角丸) • border-radius: [曲線の水平半径] / [曲線の垂直半径]; ! • border-[位置]-radius: [曲線半径]; ! 値 : 長さ、パーセント
  • 27. 2-2. border-radius (角丸) ! /* border-radius sample */ border-radius: 100px / 50px; border-top-left-radius: 30px; border-top-right-radius: 10px; border-bottom-right-radius: 60px; http://codepen.io/sekiyaeiji/pen/gvdJj?editors=011
  • 28. ※ 円になる 2-2. border-radius (角丸) ! /* border-radius sample */ width: 100px; height: 100px; border-radius: 50%; http://codepen.io/sekiyaeiji/pen/IrKkg?editors=010
  • 29. 2-3. text-shadow、box-shadow (影) • text-shadow: [水平位置] [垂直位置] [ぼかし半径] [色]; ! • box-shadow: [水平位置] [垂直位置] [ぼかし半径] [大きさ] [色] [外側(省略)/内側(inset)]; ! 値 : 長さ、(空)/inset
  • 30. 2-3. text-shadow、box-shadow (影) ! /* text-shadow sample */ text-shadow: -1px -1px 0px #444, 1px 1px 0px #eee; text-shadow: -1px 0px 0px #c60, 1px 0px 0px #c60, 0px -1px 0px #c60, 0px 1px 0px #c60; http://codepen.io/sekiyaeiji/pen/dzDrg?editors=110
  • 31. 2-3. text-shadow、box-shadow (影) 『CSS3 box-shadowジェネレー ター』 ! http://www.bad-company.jp/demos/box-shadow/
  • 32. 2-4. animation (アニメーション) • animation-name: [アニメーション名]; • animation-duration: [アニメーションの再生時間]; • animation-timing-function: [アニメーションの加速度演出名]; • animation-iteration-count: [アニメーションの再生回数]; • animation-direction: [アニメーションの偶数回目の再生方法]; • animation-play-state: [アニメーションの再生状態]; • animation-delay: [アニメーションの開始タイミング]; • @keyframes [アニメーション名] { 0% {[開始時の処理内容]} [処理タイミング] {[途中の処理内容]} [処理タイミング] {[途中の処理内容]} [処理タイミング] {[途中の処理内容]} 100% {[終了時の処理内容]} }
  • 33. 2-4. animation (アニメーション) ! /* animation sample */ .sample { -webkit-animation-name: animKey; -webkit-animation-duration: 2s; -webkit-animation-timing-function: ease-in-out; -webkit-animation-iteration-count: infinite; -webkit-animation-play-state: running; } ! @-webkit-keyframes animKey { 0% { top: 50px; left: 50px; background: #c60; }
  • 34. 2-4. animation (アニメーション) ! 50% { top: 60px; left: 150px; background: #fc9; } 100% { top: 50px; left: 50px; background: #c60; } } • 「@(-webkit-)keyframes」とセットでの運用 • 0~100%の細かいタイムライン設定が可能 • CSS単体でループ再生可能 http://codepen.io/sekiyaeiji/pen/CeDwt?editors=010
  • 35. 2-5. transition (変移アニメーション) • transition-property: [アニメーションさせるCSSプロパティ]; • transition-duration: [アニメーションの再生時間]; • transition-timing-function: [アニメーションの加速度演出名]; • transition-delay: [アニメーションの開始タイミング];
  • 36. 2-5. transition (変移アニメーション) ! /* transition sample */ -webkit-transition-property: top left background-color; -webkit-transition-duration: 1s; -webkit-transition-timing-function: ease-in-out; -webkit-transition-delay: 0; http://codepen.io/sekiyaeiji/pen/qglFu?editors=010
  • 37. 2-6. transform (変形) • transform: translate([水平距離], [垂直距離]); • transform: scale([水平縮尺], [垂直縮尺]); • transform: rotate([回転角度]); • transform: skew([水平傾斜角度], [垂直傾斜角度]); • transform-origin: [水平変形支点] [垂直変形支点];
  • 38. 2-6. transform (変形) ! /* transform sample */ -webkit-transform: rotate(-60deg) scale(0.9) skew(40deg, -10deg) translate(-100px, 50px); http://codepen.io/sekiyaeiji/pen/KDqvf?editors=010 • animation keyframesの値としても利用しやすい http://codepen.io/sekiyaeiji/pen/psBEz?editors=010
  • 39. 2-7. Web Fonts • フォントをオンライン側から提供する仕組み • デバイスインストール済みフォント依存からの開放 • アイコン画像の代替にWeb Fontsを利用すると利便性があがり、 リクエスト数削減などメリットが多い • 漢字や外字が十分に用意されていて、かつライセンスがコスト的 に見合う日本語WebFontはまだ存在しない • フォントの複数読み込みや、日本語フォントなどファイルサイズ が大きくなると、サイト全体のパフォーマンス低下が懸念され る http://test0001.s-ej.com/51/font01.html
  • 40. 2-7. Web Fonts 『Google Fonts』 https://www.google.com/fonts ! 『Fontello - icon fonts generator』 http://fontello.com/ !利用するアイコンだけをWebフォント化できてパフォー マンス改善に役立つWeb Fonts提供サービス オリジナルデザインのアイコン集も作成可能、一度つくっ ておくと一生使えるアイコン集になるかも http://test0001.s-ej.com/51/font02.html http://test0001.s-ej.com/51/font03.html
  • 41. 2-8. Media Queries レスポンシブWeb ! /* media screen sample */ /* ウィンドウ横幅1000px以下で有効 */ @media screen and (max-width: 1000px) {} ! /* ウィンドウ横幅600px以上900px以下で有効 */ @media screen and (min-width: 600px) and (max-width: 900px) {} ! /* ウィンドウ横幅600px以下でsample.cssを適用 */ <link rel="stylesheet" media="screen and (max-width: 600px)" href="sample.css"> http://codepen.io/sekiyaeiji/pen/wGkdg?editors=110
  • 42. 2-9. セレクタ 新しい擬似class セレクタ意味 E[foo^="bar"] foo属性の値がbarで始まっているE要素 E[foo$="bar"] foo属性の値がbarで終わっているE要素 E[foo*="bar"] foo属性の値にbarを含むE要素 E:root 文章内のルート要素であるEという要素 E:nth-child(n) 親要素のn番目の子要素 E:nth-last-child(n) 親要素の後から数えてn番目の子要素 E:nth-of-type(n) n番目にあるE要素 E:nth-last-of-type(n) 最後から数えてn番目にあるE要素 E:last-child 最後にある子要素 E:first-of-type 兄弟関係にあるE要素で最初のもの E:last-of-type 兄弟関係にあるE要素で最後のもの http://codepen.io/sekiyaeiji/pen/jLBzH?editors=110
  • 43. 2-9. セレクタ 新しい擬似class セレクタ意味 E:only-child 唯一の子要素であるE要素 E:only-of-type 子要素の中で唯一のE要素 E:empty 子要素を持たないE要素 E:target 参照URIの目標となっているE要素 E:enabled 有効になっている(:enabled)E要素 E:disabled 無効になっている(:disabled)E要素 E:checked ラジオボタンやチェックボックスがチェッ クされた状態のときにE要素 E:not(s) sでないセレクタを持つE要素 E ~ F E要素の後にあるF要素 http://codepen.io/sekiyaeiji/pen/CsAxo?editors=110
  • 44. 2-10. ベンダープレフィックス vendor prefixes 対応ブラウザ -webkit- Chrome、Safari -moz- Firefox -ms- InternetExplorer -o- Opera 『CSS3 Reference』 http://www.w3schools.com/cssref/css3_browsersupport.asp ! ベンダープレフィックスが必要なプロパティの一覧
  • 45. 2. CSS3について * ブラウザごとの 対応状況が知りたくなったら ! http://caniuse.com/ ! http://status.modern.ie/ http://mobilehtml5.org/ ! http://css3clickchart.com/
  • 46. 2. CSS3について * プログレッシブ・エンハンスメントと フォールバック
  • 47. * プログレッシブ・エンハンスメントとフォールバック プログレッシブ・エンハンスメント プログレッシブ・エンハンスメント(Progressive Enhancement) あるいはグレイスフル・デグラデーション(Graceful Degradation) ! レガシー・低バージョン環境では可読性と機能性において"ふつうの 体験"を提供し、最新の環境でより先進的な体験を提供する ! プログレッシブ・エンハンスメントは、レガシー環境に対しては最低 限の実装以外を"行わない"こと
  • 48. * プログレッシブ・エンハンスメントとフォールバック フォールバック フォールバック(fall back)とは、後退する、代替するなどの意味 ! レガシーなメソッドや低バージョン対応のスクリプトなどを駆使して 代替対応をすること ! フォールバックは、低バージョン環境に対しても代替実装を"行う"こ と ! フォールバックしない、またはできないと判断した場合に、プログレッ シブ・エンハンスメント対応を選択する、という場合もある
  • 49. 1. CSSとは 2. CSS3について 3. CSS実装 4. CSS運用の効率化 5. CSS高速化
  • 50. 3. CSS実装 (CSS3以前の要素を含む) 擬似要素 擬似要素意味 ::before、:before 要素の前に内容を追加 ::after、:after 要素の後に内容を追加 ::first-letter、:first-letter 最初に現れる文字 ::first-line、:first-line 最初の行 ::selection 選択時ハイライト状態の部分 ※ IE8以下にてシングルコロンのみ対応 http://codepen.io/sekiyaeiji/pen/AsJBd?editors=110
  • 51. 3. CSS実装 (CSS3以前の要素を含む) 擬似class 擬似class 意味 :link リンク :visited 訪問済みのリンク :active ユーザがアクティブにした要素 :hover ユーザがポイティングデバイスで指 示した要素 :focus アクティベートされてフォーカスを 受けた要素 :first-child 最初の子要素
  • 52. 3. CSS実装 (CSS3以前の要素を含む) 上記以外のCSSテクニック • media float • multi-column grid • position fixed • checkbox toggle switch
  • 53. 3. CSS実装 (CSS3以前の要素を含む) media float http://codepen.io/sekiyaeiji/pen/gGrbx?editors=110 ! /* media float sample */ .media__img { float: left; display: block; } .media__text { overflow: hidden; }
  • 54. 3. CSS実装 (CSS3以前の要素を含む) multi-column grid http://codepen.io/sekiyaeiji/pen/Ibhnf?editors=110 ! /* multi-column grid layout sample */ .list-wrap { width: 440px; } .list { margin-left: -10px; } !
  • 55. 3. CSS実装 (CSS3以前の要素を含む) multi-column grid ! .list__item { display: inline-block; /display:inline; /zoom:1; margin-left: 10px; margin-bottom: 10px; width: 80px; vertical-align:top; }
  • 56. 3. CSS実装 (CSS3以前の要素を含む) position fixed http://codepen.io/sekiyaeiji/pen/qdvkz?editors=110 ! /* position fixed sample */ .header { position: fixed; } .footer { position: fixed; bottom: 0; }
  • 57. 3. CSS実装 (CSS3以前の要素を含む) checkbox toggle switch http://codepen.io/sekiyaeiji/pen/bkgif?editors=110 ! .switch__inner:before, .switch__inner:after { float: left; box-sizing: border-box; } .switch__inner:before { content: "ON"; } .switch__inner:after { content: “OFF"; }
  • 58. 1. CSSとは 2. CSS3について 3. CSS実装 4. CSS運用の効率化 5. CSS高速化
  • 59. 4. CSS運用の効率化 1. CSSが目指すべきゴール 2. classセレクタ 3. コンポーネント指向 4. 命名方針
  • 60. 4. CSS運用の効率化 1. CSSが目指すべきゴール 2. classセレクタ 3. コンポーネント指向 4. 命名方針
  • 61. 4-1. CSSが目指すべきゴール CSSが目指すべきカタチ • 予測のしやすさ • 再利用のしやすさ • 保守のしやすさ • 拡張のしやすさ 『CSS設計の教科書』 谷拓樹氏(http://twitter.com/hiloki)記 http://www.amazon.co.jp/gp/product/4844336355
  • 62. 4. CSS運用の効率化 1. CSSが目指すべきゴール 2. classセレクタ 3. コンポーネント指向 4. 命名方針
  • 63. 4-2. classセレクタ idセレクタとclassセレクタ HTML要素のセマンティック性が向上した影響 もあり、CSSセレクタとしてのid属性の役割が 減少した現状では、異なる詳細度により運用が複 雑になるidセレクタを使うよりも、classセレク タ主体のスタイル定義が好ましい
  • 64. 4-2. classセレクタ 要素セレクタとclassセレクタ CSSセレクタにHTML要素を伴うセレクタを利 用している場合、デザイン要件以外の事情でも発 生し得る要素のマークアップ変更に対して、セレ クタの書き換えの工数が加わる状況は好ましくな い スタイル定義はclassセレクタ主体で運用すべき である http://codepen.io/sekiyaeiji/pen/knrdA?editors=110
  • 65. 4-2. classセレクタ セレクタと詳細度 これらは混在して利用されると運用性が著しく低 下することが懸念される !important > style="" > #id > .class > element http://codepen.io/sekiyaeiji/pen/EyjBL?editors=110
  • 66. 4-2. classセレクタ セレクタと詳細度 詳細度の制御には この程度で十分ではないだろうか… !important > (#id) > .class http://codepen.io/sekiyaeiji/pen/EyjBL?editors=110
  • 67. 4. CSS運用の効率化 1. CSSが目指すべきゴール 2. classセレクタ 3. コンポーネント指向 4. 命名方針
  • 68. 4-3. コンポーネント指向 構造と見た目を分離する (Separate structure and skin) (OOCSS) 『Object-Oriented CSS』 http://oocss.org/ https://github.com/stubbornella/oocss/wiki ! 『Nicole Sullivan』 https://twitter.com/stubbornella
  • 69. 4-3. コンポーネント指向 構造と見た目を分離する (Separate structure and skin) (OOCSS) 基本構造と、見た目など具体的なプロ パティとでセレクタをわける http://codepen.io/sekiyaeiji/pen/aohjb?editors=110
  • 70. 4-3. コンポーネント指向 コンテナとコンテンツを分離する (Separate container and content) (OOCSS) • 場所依存のセレクタ命名を行わないように気を つける • 機能、役割、転用可能なセレクタ名の利用を心 がける http://codepen.io/sekiyaeiji/pen/GLisb?editors=110
  • 71. 4-3. コンポーネント指向 CSSをカテゴライズする (SMACSS) 『SMACSS』 https://smacss.com/ https://smacss.com/ja(日本語) ! 『Jonathan Snook』 https://twitter.com/snookca
  • 72. 4-3. コンポーネント指向 CSSをカテゴライズする (SMACSS) • Base • Layout • Module • State • Theme
  • 73. 4-3. コンポーネント指向 CSSをカテゴライズする Base サイト全体を定義し、更新を前提としない項目 • html、bodyのサイト全体定義 • reset.css、normalize.css
  • 74. 4-3. コンポーネント指向 CSSをカテゴライズする Layout レイアウトのアウトラインとなる項目や、汎用的 に利用されるレイアウトパーツ • ヘッダ、フッタ、コンテンツエリア、ナビゲーションなど • カラム構造、グリッド構造、メニュー構造などのベースレイア ウト • classセレクタには接頭辞「l-」を付与 • idセレクタの利用を認める
  • 75. 4-3. コンポーネント指向 CSSをカテゴライズする Module Layoutで定義した項目以外のページレイアウト のすべて
  • 76. 4-3. コンポーネント指向 CSSをカテゴライズする State JavaScriptで制御されるような状態表現を定義 する項目 • 表示非表示、選択非選択などの一時的な定義 • メディアクエリの各状態定義
  • 77. 4-3. コンポーネント指向 CSSをカテゴライズする Theme blogのスキンやカテゴリ毎カラーバリエーショ ンなど、ページ全体の定義を大きく切り替える項 目
  • 78. 4. CSS運用の効率化 1. CSSが目指すべきゴール 2. classセレクタ 3. コンポーネント指向 4. 命名方針
  • 79. 4-4. Modifier と Element MindBEMding 『MindBEMding ‒ getting your head ’round BEM syntax ‒ CSS Wizardry ‒ CSS, OOCSS, front-end architecture, performance and more, by Harry Roberts』 http://csswizardry.com/2013/01/mindbemding-getting- your-head-round-bem-syntax/
  • 80. 4-4. Modifier と Element MindBEMding サイト全体で統一されたclass命名規則がある方 が開発・運用効率が向上する MindBEMdingもその規則の一つ ! .sample-block {} /* Block */ .sample-block--full {} /* Modifier バリエーション */ .sample-block__field {} /* Element 子要素 */
  • 81. 4-4. Modifier と Element BEM 『BEM. Block, Element, Modifier』 http://bem.info/ Block、Element、Modifierの頭文字、 フロントエンド設計方法提案の一つ MindBEMdingのベース
  • 82. 1. CSSとは 2. CSS3について 3. CSS実装 4. CSS運用の効率化 5. CSS高速化
  • 83. 5. CSS高速化 1. link要素 と @import 2. 画像からCSSへ 3. Data URI scheme 4. CSSスプライト
  • 84. 5-1. link要素 と @import 外部CSS読み込み : link要素 と @import → ◯ レンダリング速度向上 ! <link rel="stylesheet" href="sample.css"> ! @import “sample.css" 『ハイパフォーマンスWebサイト ― 高速サイトを実現する14のルール』 Steve Souders http://www.amazon.co.jp/exec/obidos/ASIN/487311361X/
  • 85. 5-1. link要素 と @import 外部CSS読み込み : link要素 と @import • @importを含んだパターンの多くは、 複数ファイルの並列読み込みを阻害する • link要素による読み込みがベター テストパターン http://test0001.s-ej.com/50/s01.html http://test0001.s-ej.com/50/s02.html http://test0001.s-ej.com/50/s03.html
  • 86. 5-2. 画像からCSSへ 画像からCSSへ → ◯ ファイル容量削減 → ◯ リクエスト数の削減 → ◯ レンダリング速度向上 • グラデーション • 影 • 角丸、円 • 吹き出し http://cssarrowplease.com/ http://codepen.io/sekiyaeiji/pen/Iwvly?editors=110 • Web Fonts(先述)
  • 87. 5-3. Data URI scheme Data URI scheme (データURIスキーム) → ◯ リクエスト数の削減  → ◯ レンダリング(描画)時に確実に表示したい画像 → ◯ 小さな画像に最適 → ✕ 初期表示速度が下がるため多用は禁物 通常外部ファイルとして存在する画像データを、Base64 エンコードという方式で文字列化することによって文書 ファイルに内包する手法 ! 『Data URI Generator』 http://bran.name/dump/data-uri-generator/
  • 88. 5-3. Data URI scheme Data URI scheme (データURIスキーム) ! <!--html--> <img src="data:image/ png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAAkCAIAAAC8 ~(中略)~EDoYtxpdozVEn3GLzsN/3W4LKitQDX/ xdgAA9QFIRxxhj2AAAAAElFTkSuQmCC"> ! /* css */ background-image: url(data:image/ png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAAkCAIAAAC8 ~(中略)~EDoYtxpdozVEn3GLzsN/3W4LKitQDX/ xdgAA9QFIRxxhj2AAAAAElFTkSuQmCC);
  • 89. 5-4. CSSスプライト CSSスプライト → ◯ リクエスト数の削減 → ◯ 小さな画像群に最適 「スプライト」 妖精の意味から、アニメーション合成などのため の小さな画像片やその集合 http://test0001.s-ej.com/50/sprite.png http://codepen.io/sekiyaeiji/pen/FeaKz?editors=110
  • 90. 5-4. CSSスプライト CSSスプライト • Google (http://www.google.co.jp/) の例 http://ssl.gstatic.com/gb/images/v1_2e543709.png ! • Amazon (http://www.amazon.co.jp/) の例 http://g-ec2.images-amazon.com/images/G/09/gno/sprites/global-sprite-v1._ V339353423_.png http://g-ec2.images-amazon.com/images/G/09/associates/network/assoc_ss/ss-noregion- sprite-softy._V177524614_.gif • Yahoo! (http://www.yahoo.com/) の例 https://s.yimg.com/dh/ap/default/140717/pc_icons_btns_sprite_0717_5pm.png https://s.yimg.com/dh/ap/default/140317/pc_flags_sprite_0317_Regular_630pm.png https://s.yimg.com/dh/ap/default/140610/pc_icons_video_sprite_0610_630pm.png