94
CSS.2012 ~Latest & Coming CSS Features~ Slides @ CSS Nite in Osaka vol.31 on 2012/06/29 by Tomoya ASAI (dynamis) Last Update: 2012/07/05

CSS.2012

Embed Size (px)

DESCRIPTION

CSS Nite in Osaka vol.31 で使用したスライド(に若干加筆したもの)

Citation preview

Page 1: CSS.2012

CSS.2012~Latest & Coming CSS Features~

Slides @ CSS Nite in Osaka vol.31 on 2012/06/29by Tomoya ASAI (dynamis)

Last Update: 2012/07/05

Page 2: CSS.2012

about:

Page 3: CSS.2012

about:dynamisMozilla Japan

http://dynamis.jp@dynamitter

facebook.com/dynamisレッサーパンダが好き。

mailto: Tomoya ASAI <dynamis mozilla-japan.org>@

Page 4: CSS.2012

about:slides

下線なしリンクも使いますコードは要点だけの簡略版特に注意が必要なとき以外は-moz- 以外の接頭辞など割愛

右下には補足や一次情報源 URL

画像からも時々リンクしてます

mailto: Tomoya ASAI <dynamis mozilla-japan.org>@

Page 5: CSS.2012

Web Standards

Page 6: CSS.2012
Page 8: CSS.2012

SemanticElements

MultiMedia

Canvas

HTML5Forms

OfflineSupport

Micro-Data

Server-Sent ev.

WebSockets

WebStorage

HTML5HTML5Parser

Mouse,Key ev.

XHTML5

WebWorkers

WebMessag-

ing

WAI-ARIA

W3C

WHATWG

HTML

Page 9: CSS.2012

SemanticElements

MultiMedia

Canvas

HTML5Forms

OfflineSupport

Micro-Data

Server-Sent ev.

WebSockets

WebStorage

LayoutMedia

Queries

HTML5

CSS3~Transform

Animation Regions

FlexBox

HTML5Parser

Mouse,Key ev.

XHTML5

WebWorkers

WebMessag-

ing

WAI-ARIA

W3C

WHATWG

HTML

Page 10: CSS.2012

SemanticElements

MultiMedia

Canvas

HTML5Forms

OfflineSupport

Micro-Data

WebGL

IndexedDB

SVG

Server-Sent ev.

WebSockets

WebSockets

Geo-location

FileAPI

WebStorage

XHR2

MathML

LayoutMedia

Queries

HTML5

CSS3~Transform

Animation Regions

FlexBox

HTML5Parser

Mouse,Key ev.

ECMAScript

CSP

SPDY

XHTML5

Orien-tation

WebWorkers

WebMessag-

ing

DOM4

SMIL Vibra-tion

XPathRSS

OGP

WAI-ARIA

W3C

WHATWG

other

Khronos

ECMA

IETF

WOFF

HTML

DNT

Page 11: CSS.2012

SemanticElements

MultiMedia

Canvas

HTML5Forms

OfflineSupport

Webm

H.264

Micro-Data

WebGL

WebSQL

IndexedDB

SVG

Server-Sent ev.

WebSockets

WebSockets

Geo-location

FileAPI

WebStorage

XHR2

MathML

WebAudio

LayoutMedia

Queries

HTML5

CSS3~Transform

Animation Regions

FlexBox

HTML5Parser

Mouse,Key ev.

Opus

ECMAScript ECMA

6th

USB

CSP

SPDY

WebCL

WebRTC

NetInfo

MP3

DeviceStorage

TCPSocket

NFC

File Sys

Notifi-cation

XHTML5

Orien-tation

WebWorkers

WebMessag-

ing

DOM4

SMIL Vibra-tion

Proxi-mity

XPathRSS

RDF

OGPSchema

.org

WAI-ARIA

W3C

WHATWG

other

Khronos

ECMA

IETF

WOFF

BatteryStatus

Radio

Tel

HTML

DNT

Page 12: CSS.2012

SemanticElements

MultiMedia

Canvas

HTML5Forms

OfflineSupport

Webm

H.264

Micro-Data

WebGL

WebSQL

IndexedDB

SVG

Server-Sent ev.

WebSockets

WebSockets

Geo-location

FileAPI

WebStorage

XHR2

MathML

WebAudio

LayoutMedia

Queries

HTML5

CSS3~Transform

Animation Regions

FlexBox

HTML5Parser

Mouse,Key ev.

Opus

ECMAScript ECMA

6th

USB

CSP

SPDY

WebCL

WebRTC

NetInfo

MP3

DeviceStorage

TCPSocket

NFC

File Sys

Notifi-cation

XHTML5

Orien-tation

WebWorkers

WebMessag-

ing

DOM4

SMIL Vibra-tion

Proxi-mity

XPathRSS

RDF

OGPSchema

.org

WAI-ARIA

W3C

WHATWG

other

Khronos

ECMA

IETF

WOFF

BatteryStatus

Radio

Tel

HTML

DNT

Page 13: CSS.2012

LayoutMedia

Queries

CSS3~Transform

Animation Regions

FlexBox

今日はここの話です

Page 14: CSS.2012

CSS.2012

Page 15: CSS.2012

マルチデバイス対応&

DTP レベルのデザイン

Page 16: CSS.2012

Responsive

Page 17: CSS.2012

Media Queries

デバイスに応じたスタイル画面サイズ、解像度、縦横...

https://developer.mozilla.org/en/CSS/Media_queries

Page 18: CSS.2012

画面サイズ別 CSS を書く<style>/* @media 規則で画面サイズ別ルールを記述 */@media only screen and (min-width: 481px) { #header { backgournd: url(head.png); /* 大きい画像 */ }}@media only screen and (max-width: 480px) { #header { backgournd: url(head-small.png); /* 小さい画像 */ }}</style><!-- 外部ファイルで分けるときは media 属性 --><link rel="stylesheet" type="text/css" href="pc.css" media="only screen and (min-width:481px)"><link rel="stylesheet" type="text/css" href="mobile.css" media="only screen and (max-width:480px)">

cm など物理サイズは iPhone などで正しくないので注意

Page 19: CSS.2012

Responsive Web Design

ピクセル単位で調整しないWeb はピクセル指向ではない

画面サイズに応じて適切に

http://www.alistapart.com/articles/responsive-web-design/

Page 21: CSS.2012

背景画像も左右切り取り

横幅に応じてサイズを変更

http://www.alistapart.com/articles/responsive-web-design/

Page 22: CSS.2012

http://colly.com/link_to_the_document

Page 23: CSS.2012

http://colly.com/

横幅に応じて要素数を増減

link_to_the_document

Page 24: CSS.2012

<meta> viewport

拡大率制御には viewportユーザのズーム禁止も可能

表示領域の CSS ピクセル幅iPhone はデフォルト 980pxFirefox for Mobile は 800px

https://developer.mozilla.org/en/Mobile/Viewport_meta_tag

Page 25: CSS.2012

viewport を指定する<!-- デバイスの画面幅で等倍表示 --><meta name="viewport" content="device-width, initial-scale=1.0">

<!-- 幅 500px の領域に描いて等倍表示 --><meta name="viewport" content="width=500, initial-scale=1.0"/>

<!-- デバイスの画面幅で等倍固定表示 --><meta name="viewport" content="width=device-width, user-scalable=no">

https://developer.mozilla.org/en/Mobile/Viewport_meta_tag

Page 26: CSS.2012

Retina?

Page 27: CSS.2012

高解像度ディスプレイ対応

link_to_the_document

見なかったことに!(・・).それが一番楽ですよね。

Page 28: CSS.2012

高解像度ディスプレイ対応

高解像度版だけを使うファイルサイズが…

解像度別の画像を用意手間が掛かります…

CSS, SVG, WebFont に可能ならこれがベスト?

link_to_the_document

Page 29: CSS.2012

解像度別の画像を用意

Device Pixel RateCSS または JS で条件分岐

srcset 属性image-set() 関数Gecko で対応するか未定

サーバサイドで自動変換

Page 30: CSS.2012

Device Pixel Rate

CSS の論理ピクセルと端末画面のピクセル比iPhone 4 以降の高解像度端末では 1:1.5 や 1:2 の端末が多い

高解像度画像や SVG などを使わないとぼやけてしまう

https://developer.mozilla.org/en/CSS/Media_queries/#-moz-device-pixel-ratio

Page 31: CSS.2012

Device Pixel Rateheader { /* 通常サイズの画像 */ background: url(head.png);}/* "only" で媒体型のみ対応する古いブラウザ除外 *//* min/max と -moz-/-webkit- の順に注意 */@mediaonly screen and (min--moz-device-pixel-ratio: 1.5),only screen and (-webkit-min-device-pixel-ratio: 1.5),only screen and (min-device-pixel-ratio: 1.5) { header { /* 2倍解像度画像 */ background: url(head-2x.png); }}

注: 古い WebKit は使わない画像も両方 DL するバグあり

Page 32: CSS.2012

JS では matchMedia()var q = "(min--moz-device-pixel-ratio: 1.5), (-webkit-min-device-pixel-ratio: 1.5), (min-device-pixel-ratio: 1.5)";if (window.matchMedia(q).matches) { // 高解像度時の処理  } else {   // 低解像度時の処理}  

https://developer.mozilla.org/ja/DOM/window.matchMedia

Page 33: CSS.2012

srcset 属性<!-- 高解像度ディスプレイには別画像を使う --><img src="fire.png" srcset="fire-2x.png 1.5x">

<!-- 更に細かく画像を分けるのも比較的容易 --><img src="fox.png" srcset="fox-1.5x.png 1.5x, fox-2x.png 2x">

Page 34: CSS.2012

CSS, SVG, WebFonts に

グラデーション、影付き、角丸などは CSS で実現ボタン程度は CSS で十分

SVG 画像に置き換えるWebFonts を使う... などサイズ非依存に

Page 35: CSS.2012

Text

Page 36: CSS.2012

Web Fonts

ダウンロードフォントIE9 なども WOFF サポートiPhone は WOFF 未サポートWOFF: Web用圧縮フォント

フォントサービスも充実やっと時代が変わりましたね…

https://developer.mozilla.org/ja/CSS/@font-face

Page 37: CSS.2012

Web Fonts の使い方@font-face { /* IE8 以前用 EOT フォント設定 (最初に) */ font-family: Sawarabi; src: url(Sawarabi.eot) /* IE8 以前 format() 非対応 */;}@font-face { /* WOFF 非対応ブラウザ向けフォント設定 */ font-family: Sawarabi; src: url(Sawarabi.otf) format("opentype");}@font-face { /* WOFF 対応ブラウザには WOFF を */ font-family: Sawarabi; src: url(Sawarabi.woff) format("woff");}body { font-family: Sawarabi, sans-serif; }

http://hacks.mozilla.org/2009/06/beautiful-fonts-with-font-face/

Page 38: CSS.2012

Web Fonts の使い方@font-face { font-family: 'Lisa'; src: url('Lisa.eot'); src: url('Lisa.eot?#iefix') /* IEバグ対応Hack */ format('embedded-opentype'), url('Lisa.woff') format('woff'), url('Lisa.ttf') format('truetype'), url('Lisa.svg') format('svg');}body { font-family: Lisa, sans-serif;}

http://www.fontspring.com/blog/the-new-bulletproof-font-face-syntax

Page 39: CSS.2012

WOFF フォントに変換

WOFF コンバータWindows, Mac アプリ

@font-face kit generatorWeb サービス (サイズ制限あり)

http://www.fontsquirrel.com/fontface/generatorhttp://musashi.or.tv/woffconv.htm

Page 40: CSS.2012

サブセットフォントを作る

必要文字だけで軽量化サブセットフォントメーカーWindows, Mac アプリ

@font-face kit generatorExpert モードの Subsetting でCustom Subsetting を指定する

http://www.fontsquirrel.com/fontface/generatorhttp://musashi.or.tv/subsetfontmk.htm

Page 41: CSS.2012

デコもじ

日本初の WebFont サービスhttp://decomoji.jp/字游工房のフォントもある!

JavaScript 埋め込み型個人 ¥315/月~法人 ¥1575/月~

http://decomoji.jp/

Page 42: CSS.2012

webfonts.fonts.com

多言語 WebFont サービスhttp://webfonts.fonts.com/10,000 以上のフォント日本語フォントも 100 以上

JavaScript 埋め込み型25,000 view/30days まで無料

http://webfonts.fonts.com/

Page 43: CSS.2012

Google Web Font API

フォントは約 500 種類開始当初は 18 しかなかった

日本語フォントなしメニューなど限られた用途で

サブセットも指定可能ファイルサイズを最小限に

https://developers.google.com/webfonts/

Page 44: CSS.2012

Web Font API の使い方<html><head> <link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Tangerine"> <style> body { font-family: 'Tangerine', serif; } </style></head><body> <h1>Firefox Developer Conference 2011 in Osaka!</h1></body></html>

http://code.google.com/intl/ja/apis/webfonts/docs/getting_started.html

Page 46: CSS.2012

http://webfont.fontplus.jp/

Page 47: CSS.2012

Font+

日本語フォント 500 以上!フォントワークス、モリサワ、イワタ、モトヤ ...

サブセットの事前 DL 可能あるいは JS 埋め込み¥1050/月~

http://webfont.fontplus.jp/

Page 48: CSS.2012

Font Control Features

CSS3 font-variantフォントの詳細機能を制御分数、桁揃え、合字、旧字体...

仕様執筆者自身が実装

詳細: http://people.mozilla.org/~jdaggett/webfontsfuture.pdf

Page 51: CSS.2012

text-decoration

破線や波線などにも対応もはや Keynote より高機能…

text-decoration 設定すると-moz-text-decoration-* はリセットされるので注意

https://developer.mozilla.org/en/CSS/text-decoration

Page 52: CSS.2012

text-decoration/* 複数同時指定も可能 */.bothline { text-decoration: underline overline;}/* Firefox は wavy などにも対応 */.wavyredline { text-decoration-line: underline; text-decoration-style: wavy; text-decoration-color: red;}

https://developer.mozilla.org/en/CSS/text-decoration

Page 53: CSS.2012

hyphen

英単語の音節で折り返し折り返し位置の明示指定U+2010 (HYPHEN) - ハードU+00AD (SHY, &shy;) - ソフト

p.auto { -moz-hyphens: auto;}

https://developer.mozilla.org/en/CSS/hyphens

Page 54: CSS.2012

text-overflow

Fx7 で ellipsis (...) に対応

Fx9 でサポートを強化左右両端指定の 2 値構文省略時の末端文字を指定

https://developer.mozilla.org/en/CSS/text-overflow

Page 56: CSS.2012

font-stretch

字間のつまり具合を調整normal, condensed, expanded,semi-condensed, semi-expanded ...

https://developer.mozilla.org/en/CSS/font-stretch

h1 { font-stretch: extra-expanded }p { font-stretch: condensed }

Page 57: CSS.2012

c.f. PDF.js

プラグインフリー PDFWeb 技術の結晶状態

DTP 品質の描画を...font-stretch も PDF で必要な機能だったから実装された

https://github.com/mozilla/pdf.js

Page 59: CSS.2012

text-align-last

最終行だけ行揃え変更Fx12 からサポートjustify だと最後の行がスカスカになるケースなどに便利

https://developer.mozilla.org/en/CSS/text-align-last

Page 60: CSS.2012

text-size-adjust

スマートフォン向けの文字サイズ変更を許可・不許可Fx11 からサポート意図せず拡大されてしまっている場合などに none 指定すると良い

https://developer.mozilla.org/en/CSS/text-size-adjust

Page 61: CSS.2012

Box

Page 62: CSS.2012

border-image 仕様更新

border-image = shorthand*-source, *-slice, *-repeat に加え*-width, *-image-outset にも対応

デフォルトで中央省略に中央にも画像がいるなら fill

border width 上書き不能に/ 使ってたスタイルは無効に

http://dbaron.org/log/20120612-border-image

Page 63: CSS.2012

border-image 仕様更新// ボーダー画像の中央部分も使用する場合-moz-border-image: url(my-border.png) 30 30 30 30 stretch stretch;-webkit-border-image: url(my-border.png) 30 30 30 30 stretch stretch;-o-border-image: url(my-border.png) 30 30 30 30 stretch stretch;// 最新仕様では fill 指定しないと中央不使用border-image: url(my-border.png) 30 30 30 30 fill stretch stretch;

http://dbaron.org/log/20120612-border-image

Page 64: CSS.2012

border-image 仕様更新// これまでの記述-moz-border-image: url(my-border.png) 30 30 30 30 / 2em stretch stretch;-webkit-border-image: url(my-border.png) 30 30 30 30 / 2em stretch stretch;border-image: url(my-border.png) 30 30 30 30 / 2em stretch stretch;// 仕様変更に合わせた記述border: 2em solid transparent; // Fallback は別途書くように-moz-border-image: url(my-border.png) 30 30 30 30 stretch stretch;-webkit-border-image: url(my-border.png) 30 30 30 30 stretch stretch;border-image: url(my-border.png) 30 30 30 30 stretch stretch;

http://dbaron.org/log/20120612-border-image

Page 65: CSS.2012

background-repeat - 2値構文

X, Y 方向別に設定可能にFx13 からサポートrepeat = repeat repeatrepeat-x = repeat no-repeatrepeat-y = no-repeat repeat1値構文で定義されていない組み合わせ repeat round なども可能

https://developer.mozilla.org/en/CSS/background-repeat

Page 66: CSS.2012

background-position - 4値構文

左上以外の角から位置指定

https://developer.mozilla.org/en/CSS/background-position

Page 67: CSS.2012

Transform

Page 68: CSS.2012

CSS Transform

任意の要素を変形させる拡大縮小、回転、移動、歪みIE8 は Matrix Transform

skew は Fx14 で廃止skewX と skewY を使うこと

https://developer.mozilla.org/en/CSS/-moz-transform

Page 69: CSS.2012

CSS Transform 使用例<iframe id="skewframe" width="800" height="600" src="http://mozilla.jp/"></iframe><style>#skewframe { /* 右に 150px 移動、左下原点で 10°歪める*/ -moz-transform: skewx(10deg) translatex(150px); -moz-transform-origin: bottom left;}</style>

https://developer.mozilla.org/En/CSS/Using_CSS_transforms

Page 70: CSS.2012

turn (角度の単位)

Transform などの値で使用当面は deg とかが無難turn は Fx13 からサポート

https://developer.mozilla.org/en/CSS/angle

Page 71: CSS.2012

3D Transform

3次元版Fx10 からサポートrotateZ や translateZ を使う視点は perspective などで指定

https://developer.mozilla.org/en/CSS/Using_CSS_transforms

Page 72: CSS.2012

3D Transform の注意

Firefox は最新仕様に厳格perspective など単位が必須iphone 3.0 は逆に単位なしWebKit だけ…って時は単位確認

https://developer.mozilla.org/en/CSS/perspective

Page 73: CSS.2012

今回に合わせて Firefox にも対応! http://pr.fontplus.jp/sample/02/

Page 74: CSS.2012

Animation

Page 75: CSS.2012

CSS Transitions

スタイル遷移をなめらかに簡単にアニメーションGPU を用いた高速処理

今日は詳細割愛します

http://24ways.org/2009/going-nuts-with-css-transitions

Page 76: CSS.2012

CSS Transitions 使用例#somebox { color: black; background-color: yellow; /* すべてのスタイルを2秒かけて変化、開始はなめらかに */ -moz-transition: all 2s ease-in; transition: all 2s ease-in;}#somebox:hover { /* マウスオーバーで配色、サイズ、角度を変化 */ color: white; background-color: red; -moz-transform: rotate(-60deg) scale(1.5); transform: rotate(-60deg) scale(1.5);}

http://hacks.mozilla.org/2010/07/firefox4-beta2/

Page 77: CSS.2012

CSS Transitions 発動条件

「スタイル変更」時に発動変更前の状態が一度描画されている必要があるページロード時に遷移するなら onload 後にスタイル指定が必要left など一部スタイルは変化前にも left: 0px; などの指定が必要

Page 78: CSS.2012

CSS Animations

Transitions を連続する機能キーフレーム毎のスタイルを指定

CSS だけでアニメーションGPU を用いた高速処理

https://developer.mozilla.org/en/CSS/CSS_animations

Page 79: CSS.2012

CSS Animations 使用例<div id="target"></div><style>@-moz-keyframes changecolor { /* アニメーション定義 */ from { } /* 開始する瞬間は既存スタイルのまま */ 50% { background: purple; } /* 半分の時間で紫に */ to { background: orange; } /* 最終的にオレンジに */}#target { background: blue; width: 100px; height: 100px;}#target:hover { -moz-animation: changecolor 4s; /* アニメーション適用 */}</style>

https://developer.mozilla.org/en/CSS/CSS_animations

Page 80: CSS.2012

CSS Animations の注意

完了後は元のスタイルに戻るto スタイルは維持されない

開始前と from, to と完了後のスタイルは一瞬で切り替わる滑らかに変化して維持:from は既存スタイルと同じにto は完了後スタイルと同じに

Page 81: CSS.2012

滑らかに変化して維持する<div id="target"></div><style>@-moz-keyframes changecolor { from { background: blue; } /* 既存スタイルと同じ */ 50% { background: purple; } to { background: orange; } /* 完了後と同じ */}#target { background: blue; width: 100px; height: 100px;}#target:hover { -moz-animation: changecolor 4s; background: orange; /* to {} と同じ */}</style>

Page 82: CSS.2012

CSS Animations 発動条件

-moz-animation を設定onload 前でも問題なし

一定時間後に発動したい場合は animation-delay を使って遅延時間を指定する

Page 83: CSS.2012

Layout

Page 84: CSS.2012

多段レイアウト(column-fill)

雑誌や新聞などの多段組column-fill: auto | balance

https://developer.mozilla.org/en/CSS/column-fill

Page 86: CSS.2012

Flexbox Layout 仕様変更

残りを X:Y で分割などXUL 由来のレイアウト機能古い仕様は Fx2 からサポート複数回仕様変更されててカオス

互換対応複雑になるので今回割愛...

Page 87: CSS.2012

-vendor-prefix

Page 88: CSS.2012

ベンダー接頭辞サポート終了

接頭辞なしを使いましょう:border-radius* @Fx13~box-shadow @Fx13~

その他も今後のため接頭辞なしを併記する習慣を

https://bugzilla.mozilla.org/show_bug.cgi?id=693510

Page 89: CSS.2012

other...

Page 90: CSS.2012

CSS3 calc()

サイズを計算式で指定可能width: -moz-calc(20% + 1rem)

-moz- prefix に注意IE9 はいきなり no prefix 実装

https://developer.mozilla.org/en/CSS/-moz-calc

Page 91: CSS.2012

CSS3 calc()

/* margin 分を考慮した左右の分割を行う例 */#main { width: 75%; margin-right: 1rem;}#side { width: -moz-calc(25% - 1rem); width: calc(25% - 1rem); /* prefix なし忘れずに */}/* rem はルート要素に対する font-size (Fx3.6~) */

http://hacks.mozilla.org/2010/06/css3-calc/

Page 92: CSS.2012

@document regexp()

CSS3 Conditional Rules の@document 規則の対応強化

@-moz-document url(http://dynamis.jp/),     url-prefix(http://dynamis.jp/foo/),     domain(dynamis.jp),     regexp("^https:.*"){ /* 指定 URL にマッチしたページ用のルール */ /* regexp() は Fx6~ 他は Fx1.5 からサポート */}

https://developer.mozilla.org/en/CSS/@-moz-document

Page 93: CSS.2012

@規則の入れ子利用

@media や @document 内でも @規則が利用可能にFx11 から入れ子サポート

https://bugzilla.mozilla.org/show_bug.cgi?id=511909

Page 94: CSS.2012

新機能や互換性情報はMozilla Developer Street:

dev.mozilla.jp