本書で使用するシステム名、製品名は、いずれも各社の商標、または登録商標
なお、本文中では
© 2016 O’Reilly Japan, Inc. Authorized Japanese translation of the English edition of “CSS Secrets”.
© 2015 Lea Verou. This translation is published and sold by permission of O’Reilly Media, Inc., the owner of all rights to publish and sell the same.
本書は、株式会社オライ
日本語版の内容について、株式会社オライ
新世代の
CSSに対応した、新世代の解説書です。今日の CSSは W3Cによる 80以上の仕様から成り立っており、リッチで強力かつ深く複雑な生態系です。以前のように、ブラウザごとのややこしいハックや一時しのぎと併用するシンプルな言語ではありません。この新しい CSSを正しく理解し、問題解決に役立つデザインの指針を示してくれるのは、著書 Lea Verouをおいては他にはありません。私の知る限り、彼女は本当にすばらしい コード書きの 1人 です。 Jeffrey Zeldman
『Designing with Web Standards』著者
Lea Verouは本書で、自らが持つ随一の博識を気前よく分け与えてくれました。本書を読めば、思いつく限りすべてのことが
CSSで可能になるということを理解できるでしょう。 CSSについて隅々まで知っているという読者も、まだ気づいていなかった CSSの秘密にきっと出会えるはず です。 Jeremy Keith
Shepherd of Unknown Futures、
Clearleft
CSSに関する魅惑的なテクニックやス
マートなベストプラクティス、その他のとてもすごいことについて深く知りたいなら、本書の購入をためらってはいけません。私のお気に入りの 1冊 です。 Eric A. Meyer
Leaは抜きん出てすばらしい
コード書きです。本書には、クレ バーで便利なアイデアが文字どおり満載されています。 CSSをよく知っているという読者にも、本書は役立つでしょう。また、本書では当たり前の常識を超えたアプ ローチが推奨されています。読者は日常の作業の中にも、クレ バーさを実感できるようになるでし ょう。 Chris Coyier
CodePen
『CSS Secrets』はあっという間に、定番書の地位を獲得しました。すばらしいヒントやコツの数々は、読者の
UXデザインを即座に向上させてくれるはず です。 Christopher Schmitt
『CSS Cookbook』著者
Lea Verouの 『CSS Secrets』よりも多くの実践的なテクニックを紹介してくれる本は、ほとんどありません。本書には、デザイン関連のよくある課題に対して数十もの解決策が詰め込まれています。物事を速く上手にこなすためのヒントとコツの数々はとても貴重です。
CSSを知りつくしているという読者にもおすすめし ます。 Vitaly Friedman
共同創設者兼編集長、
Smashing Magazine
Lea Verouの著作はいつも、私に新しいことを学ばせてくれます。
『CSS Secrets』も例外ではありません。本書の内容は理解しやすいように短く小分けされており、それぞれに興味深い知識が詰め込まれています。将来実現するであろう事柄の解説も含まれてはいますが、今すぐ各自のプロジェクトに適用できそうなヒントが満載 です。 Jonathan Snook
Webデザイ
ナー、 Web開発者
すばらしい本です。
Leaは CSSを飼い慣らし、仕様の執筆者さえも想像していなかったであろうと思われる事柄にも適用しています。読み進めてゆけば、さまざまな表示効果を複数のやり方で実現できるようになるでしょう。そして読者はきっと、 Leaが紹介したテクニックが自らの業務にも完全に当てはまっていることに気づくでしょう。しかも、これらのテクニックで画像 データが必要になることはほとんどありません。グラフィックは保守しやすい CSSとして記述されているためです。しかも彼女のテクニックは楽しく、実践的でありながら予想もできないようなもの です。 Nicole Sullivan
プリンシパルソフトウェアエンジニア、
OOCSSの考案者
Lea Verouの 『CSS Secrets』は単に
CSSのヒント集として便利なだけでなく、 CSSでの問題を解決するための教科書でもあります。それぞれの シークレットに至る思考のプロセスも詳しく紹介されており、 CSSにまつわる問題を自ら解決できるようになるでしょう。また、イントロダクションの章も必読です。 CSSでの重要なベストプラクティスが紹介されてい ます。 Elika J. Etemad (通称
fantasai) Invited Expert、
W3C CSS作業グ ループ
世界中で開かれる
Web開発関連のイベントで、 Leaのプレゼン テーションは常に必聴です。 『CSS Secrets』には長年にわたる彼女の経験が凝縮されており、 Webデザインに関する面倒な問題に対して CSSを使ったエレガントな解決策を示してくれます。フロントエンドに関わるすべてのデザイ ナーと開発者にとって、本書は間違いなく必読 です。 Dudley Storey
デザイ
ナー、開発者、著述家、 Web教育のスペシャリスト
CSSについてかなり理解していると思い込んでいましたが、
Lea Verouによる本書を読んで考えが変わりました。 CSSに関する知識を次のレベルに引き上げたいなら、本書は必携 です。 Ryan Seddon
チーム
リード、 Zendesk
『CSS Secrets』は、今までに筆者が読んできた
CSS関連の書籍の中でも群を抜いてテクニカルです。 Leaは CSSというシンプルな言語で、あたかも魔法のようにその能力の限界を押し広げることに成功しました。決して初心者向けではありませんが、 CSSについてすべて理解したと思っているすべての人々に強くおすすめし ます。 Hugo Giraudel
フロントエンド開発者、
Edenspiekermann
CSSとは魔法のようだと思うことがよくあります。少しの
ルールを記述するだけで、味気ない ページを美しく作り替えることができます。 『CSS Secrets』で Leaは、この魔法をさらに新しいレベルへと引き上げてくれました。彼女は CSSの大魔法使いであり、新しい魔法の世界を我々に示しています。本書を読みながら、何度 「クールだ !」と叫んだことでしょうか。本書に問題が 1つだけあるとしたら、他のことに手がつかなくなって一日中 CSSでいろいろ試してみたくなることぐらい です。 Elisabeth Robson
WickedlySmart.com共同創設者、
『Head First JavaScript Programming』共著者
すべての
Web開発者は、 『CSS Secrets』を本棚に備えるべきです。本書でのヒントやコツを活用すれば、 CSSは想像もしなかったようなたくさんの表現を可能にしてくれます。私を何年もの間悩ませてきた問題の多くが、筆者のシンプルでエレガントな水平思考によって解決されま した。 Robin Nixon
Web開発者、オンラインインストラク
ター、 CSS関連の書籍を数冊著す
デザイ
ナー兼プログラ マーでもある Lea Verouの本は、彼女の コードと同様に美しく思慮深いものです。 CSSにまだ慣れていなくても、 CSS3関連の細かい事柄に精通していても、誰もが本書から何かを得られるでし ょう。 Estelle Weyl
オープン
Webエバンジェリスト、 『CSS: The Definitive Guide』著者
この本の素晴らしいことのひとつは、美しい本のデザインが
CSSで作られているということです。いわば 「CSSの CSSによる CSSのための本」であり、 CSSが Webのデザインとともに本のデザインにも十分使えるものであることを示してくれています。 Webの標準技術である CSSで誌面を自由にデザインできることには、これまで人類が築いてきた 『活字文化』を引き継ぐという非常に重要な意味があります。この本の著者と出会えたこと、間接的ながら共同で英語版と日本語版の両方の本作りに関わることができたことに感謝し ます。 村上 真雄
(Shinyu Murakami) 株式会社ビブリオスタイル (Vivliostyle)会長兼
CTO
母であり親友でもあった
Maria Verou (1952-2013)
との思い出に、本書を捧げます。
あなたはあまりにも早く、この世を去ってしまいま
古き良き時代は去りました。前の千年紀には、
そう考えると、かつてはひどい時代だったのかもしれません。ハックは今や必要なくなりま
CSSについては、ここ数年の間に事態が大幅に改善しています。それぞれのブラウザは、ほとんどの領域で互換性を達成しています。非互換の機能についても、あるブラウザが対応している機能を別のブラウザは対応していないという状況であることがほとんどです。それぞれのブラウザが同じ機能を異なるやり方で実装し、ひどい状態を招くといったことはありません。かつての複雑なトリックがはるかにシンプルかつコンパクトに作りなおされたという場合も含めて、さまざまな機能が仕様に追加されています。かつてと比べて、
しかし、このような意図しない複雑さのおかげで、
さし当たっては、すでに明らかになっている多数の魅力的なテクニックに目を向けてみましょう。これらを発見し全世界と共有することについて、
本書に書いてあることがもはや
Eric A. Meyer
ここ数年の間に
2009年ごろまでは、言語自体への知識は
近年の
CSSに含まれる特定の機能について、隅々まで解説してくれる書籍ならたくさん出回っています。しかし幸か不幸か、本書はこのような書籍ではありません。本書の目的は、一般のリファレンス資料をひととおりマス
本書はレシピ集でもありません。それぞれの
素晴らしい人々の助けとサ
寛容な
本書 (英語版)は自己完結的に執筆されています。data-
属性を使って記述しました。つまり、本書で目にするものすべて (レイアウトや画像そして色も含む)は
近年では、
ただし、本書は
「Webの技術を使ってこのような本を作るには、どのくらいの
div
に本書では
英語版では、見出しに
本書は
日本語版 (本書)も原書にならい、
そこで、
また、日本語版のフォントは
本書の主な
!important
を散乱させるようなことはないでしょう。ボックスモデルの構成要素についても理解し、box-shadow
の使い方、線形グラこれらの条件をすべて満たすわけではない読者も本書を楽しめるように、一部の
box-shadow
、基本的なグラデーション、こうすることによって、未知の事柄について調べてから本書に戻ってくるというのが容易になります。
先ほど、想定される読者として 「CSS開発者」と述べ、デザインのスキルを求めていないのには理由があります。本書は
ただし、デザイ
本書は
すべての
課題の紹介に続いて、
本文中のmonospace text
のように記述されます。#f06
のように、色を表す
background: url("adamcatlace.jpg");
もう
<figure> <img src="adamcatlace.jpg" /> <figcaption>Sir Adam Catlace</figcaption> </figure>
見てのとおり、{}
を省略してい
本書での$$()
を定義し利用しています。あるセレクタにマッチしたすべての要素に対して同じ処理を繰り返すために、この関数が使われています。定義は以下のとおり
function $$(selector, context) { context = context || document; var elements = context.querySelectorAll(selector); return Array.prototype.slice.call(elements); }
すべての
紹介されているテクニックがわかりにくかった場合などには、ここで紹介されているデモにアクセスしてみることを強くおすすめし
ほぼすべての
ここには、
本書の中で最も奇妙と思われるであろう点は、
とはいえ、ほとんどの
各機能への最新の対応状況が掲載された
ある機能をyellow
からred
に変化する上下方向の線形グラ
background: linear-gradient(90deg, yellow, red);
しかしかなり古いブラウザもサ
background: -moz-linear-gradient(0deg, yellow, red); background: -o-linear-gradient(0deg, yellow, red); background: -webkit-linear-gradient(0deg, yellow, red); background: linear-gradient(90deg, yellow, red);
各ブラウザでの対応状況と同様に、ふるまいの差異も常に流動的です。以降では、これらの点について本文中で言及することはありません。
たとえ見苦しいものだとしても、代替案を用意して古いブラウザでも正しく表示されるようにするというのはよいことです。本書の読者はカスrgb(255, 128, 0)
)を指定するのがよいでし
background: rgb(255, 128, 0); background: -moz-linear-gradient(0deg, yellow, red); background: -o-linear-gradient(0deg, yellow, red); background: -webkit-linear-gradient(0deg, yellow, red); background: linear-gradient(90deg, yellow, red);
しかし、カス<html>
)にtextshadow
やno-textshadow
といったクラスが追加されます。これらのクラスを参照して、以下のように
h1 { color: gray; } .textshadow h1 { color: transparent; text-shadow: 0 0 .3em gray; }
代替案を用意しようとしている機能が最近のものなら、@supports
という@supports
を使って次のように書き換えられ
h1 { color: gray; } @supports (text-shadow: 0 0 .3em gray) { h1 { color: transparent; text-shadow: 0 0 .3em gray; } }
しかし現時点では、@supports
の利用には@supports
という@supports
に対応しているブラウザはまだ少数
どんな場合にも、数行のelement.style
オブジェクトを利用できます。
var root = document.documentElement; // <html> if ('textShadow' in root.style) { root.classList.add('textshadow'); } else { root.classList.add('no-textshadow'); }
複数のプロパティについて調べる必要があるなら、以下のような関数を用意してもよいでし
function testProperty(property) { var root = document.documentElement; if (property in root.style) { root.classList.add(property.toLowerCase()); return true; } root.classList.add('no-' + property.toLowerCase()); return false; }
特定のプロパティの値に対応しているかどうか調べるには、実際に値をセットし、その後で同じ値が保持されているかをチェックします。ここでは特定の値への対応を調べたいだけであり、実際にスタイルを設定したいわけではありません。そこで、下のようにダ
var dummy = document.createElement('p'); dummy.style.backgroundImage = 'linear-gradient(red,tan)'; if (dummy.style.backgroundImage) { root.classList.add('lineargradients'); } else { root.classList.add('no-lineargradients'); }
この
function testValue(id, value, property) { var dummy = document.createElement('p'); dummy.style[property] = value; if (dummy.style[property]) { root.classList.add(id); return true; } root.classList.add('no-' + id); return false; }
個々のセレクタや
本書 (日本語翻訳版)の内容は最大限の努力をして検証・確認していますが、誤り、不正確な点、バグ、誤解や混乱を招くような表現、単純な誤植などに気が付かれることもあるかもしれません。本書を読んでいて気付いたことは、今後の版で改善できるように私たちに知らせてください。将来の改訂に関する提案なども歓迎します。連絡先は以下に示し
本書についての正誤表や追加情報などは、次のサイトを参照してくだ
オライ
Webブラウザから読める本書のサンプル
一般的な思い込みとは異なり、
CSSの仕様は、
作業グ
企業のメン
Invited Experts
W3CのスタッフInvited Expertとは、標準化プロセスへの参加を要請された
そして
Web開発者の間に広まっている誤解のひとつに 「W3Cは見下すように標準を定義し、弱い立場のブラウザベン
標準は密室の中で作られるというのも誤解です。
このようなプロセスはすべて
仕様は複数の段階を経て、誕生から完成へと向かい
作業グ
CSS1はとても短くシンプルな仕様でした。
1998年に公開されたCSS2 (CSS Level 2)では、より厳密な定義が行われました。Chris LilleyとIan Jacobsという
この
一方、まったく新しい概念を表すモジ
CSS 3という言葉は流行していますが、
標準化プロセスには常に、大きなジレンマが伴います。実際の開発での
この矛盾した状況に対する解決策は多数考えられてきましたが、いずれも完全なものではありません。誰もが忌み嫌うベン-moz-
、-ms-
、-o-
、-webkit-
という接頭辞が使われています。開発者はこのような接頭辞つきの機能を自由に利用でき、その結果を作業グ
この説明だけを聞くととてもすばらしい仕組みのように思えますが、現実は理想からかけ離れています。接頭辞つきの実験的な機能を使い始めた開発者は、以前なら込み入った一時しのぎの
既知の接頭辞つきの機能だけを使っていると、他のブラウザが同じ機能を実装するたびに宣言を追加しなければならないということに開発者たちは気づきはじめました。しかも、どの機能にどの接頭辞が必要かを常に把握しておくというのはきわめて困難です。そこで、当初からすべての接頭辞を加えた機能を記述し、保険として最後に接頭辞なしの機能も追加するということが横行するようになりました。具体的には次のような
-moz-border-radius: 10px; -ms-border-radius: 10px; -o-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px;
この例では、-ms-border-radius
と-o-border-radius
のborder-radius
を接頭辞なしで実装しており、接頭辞つきのものはまったく存在しま
すべての機能を最大
将来にわたって機能を利用し続けられるようにするために、開発者は接頭辞なしの機能を利用しがちです。しかしそうすると、一度定義された機能は変更がほぼ不可能になります。我々は中途半端な未完成の仕様に縛られ、限られた範囲の変更しか許されない状況に陥っています。
最近では、試験的な実装のためにベン
コードを
しかも、このような手間は修正の際にだけ発生するわけではありません。柔軟な
図 1.4のボタンでは、次の
padding: 6px 16px; border: 1px solid #446d88; background: #58a linear-gradient(#77a0bb, #58a); border-radius: 4px; box-shadow: 0 1px 5px gray; color: white; text-shadow: 0 -1px 1px #335166; font-size: 20px; line-height: 30px;
この
font-size: 20px; line-height: 1.5;
さて、フォントサイズについても絶対指定する必要はないことに気づかれたでしょうか。絶対指定の値は記述が容易ですが、変更が必要になるたびに代償を払わされることになります。例えば親要素でのフォントサイズを大きくしたい場合、フォント関連のem
を使えば、この問題を回避でき
font-size: 125%; /* 親要素でのフォントサイズが16pxの場合 */ line-height: 1.5;
こうすれば、親要素のフォントサイズが変更された場合にボタンも自動的に追従します。しかし、現状のボタンはem
単位で指定すれば、フォントサイズに合わせて伸縮するようになります。つまり、ボタンのサイズ関連のすべての値を
em
を指定しています。一方、<html>
)でのフォントサイズに対する相対値として指定を行いたい場合も考えられます。このような場合、em
を使って指定しようとすると面倒な計算が必要になることがあります。ここでrem
という単位を代わりに使うと、padding: .3em .8em; border: 1px solid #446d88; background: #58a linear-gradient(#77a0bb, #58a); border-radius: .2em; box-shadow: 0 .05em .25em gray; color: white; text-shadow: 0 -.05em .05em #335166; font-size: 125%; line-height: 1.5;
こうすれば、ボタンは元のものを拡大したのと同じように表示されます (図 1.6)。なお、上の1px
のままであるべきと判断しま
ただし、変更の可能性があるのはボタンの大きさだけではありません。色も変更の対象として重要です。例えば、緑色の#58a
と、これを明るくあるいは暗くしたバリborder-color
、background
、box-shadow
、text-shadow
に修正が必要です。また、白以外の背景にボタンを配置する場合についても考慮しなければなりません。gray
で指定した影の色が意図したとおりに表示されるのは、背景が白の場合だけ
このような色の値の再計算は、簡単に回避できます。半透明の白または黒をメインの色に重ねることによって、より明るいまたはより暗い色を表現でき
padding: .3em .8em; border: 1px solid rgba(0,0,0,.1); background: #58a linear-gradient(hsla(0,0%,100%,.2), transparent); border-radius: .2em; box-shadow: 0 .05em .25em rgba(0,0,0,.5); color: white; text-shadow: 0 -.05em .05em rgba(0,0,0,.5); font-size: 125%; line-height: 1.5;
こうすれば、下のようにbackground-color
を上書きするだけで別のボタンを作成できます (図 1.7)。
button.cancel { background-color: #c00; } button.ok { background-color: #6b0; }
現状でも、ボタンの
保守性と簡潔さが相容れない関係になることがあります。先ほどの例でも、最終的な10px
の太い
border-width: 10px 10px 10px 0;
ここには宣言は
border-width: 10px; border-left-width: 0;
currentColor
ではなく、font-size
の値を表すem
だという意見もあります。この意味では、CSS Color Level 3 (w3.lightgoldenrodyellow
のように色を表すcurrentColor
という新しいcolor
プロパティの値を表します。実質的に、このcurrentColor
は
例として、横の区切り線 (<hr>
要素)がすべてテキストと同じ色になるようにしてみましょう。currentColor
を使うと、次のように表現でき
hr { height: .5em; background: currentColor; }
既存のプロパティの多くでも、同様の効果が適用されていることに気づかれたかもしれません。例えば色を指定せずにborder-color
、text-shadow
やbox-shadow
の色、outline-color
など)でデフォルト値としてcurrentColor
が設定されてい
将来的に、currentColor
にもバリ
ほとんどの開発者はinherit
というinherit
を使って記述でき
input, select, button { font: inherit; }
同様に、ハイ
a { color: inherit; }
inherit
キーワードは背景へのスタイル設定でも効果的です。例えば、
.callout { position: relative; } .callout::before { content: ""; position: absolute; top: -.4em; left: 1em; padding: .35em; background: inherit; border: inherit; border-right: 0; border-bottom: 0; transform: rotate(45deg); }
人間の眼は、入力装置としてはとても不完全です。正確に値を指定しても不正確な見た目になってしまうことがあり、この点を踏まえたデザインが求められます。例えば、我々の眼は縦方向の中央に配置したものをずれて認識してしまうことがよく知られています。中央にあると認識させるためには、計算上の中央よりも少し上に対象を配置する必要があります。
タイポグラフ
.5em
)を指定しても、上下のパディングは大きく感じられる.3em .7em
)と、均等に見える表示を得られるこのような錯覚は、視覚的デザインの分野ではしばしば見られます。我々には
レスポンシブ
一般的には、さまざまな解像度の下で
ただし、メディアクエリが悪いものだというわけではありません。
em
を使いましょう。こうすれば、テキストの表示倍率に応じてレイアウトを変更できもちろん、
「重複を
不必要なメディアクエリを回避するためのヒントをいくつか紹介し
vw
、vh
、vmin
、vmax
)を使いましょう。これらを使うと、ビwidth
の代わりにmax-width
を使いましょう。メディアクエリを使わなくても、小さな画面に対応できimg
、object
、video
、iframe
など)では、max-width
として忘れずに100%
を指定しましbackground-size: cover
と指定するとコンテナのサイズを記述する必要がなくなります。ただし、ネットdisplay: inline-block;
あるいは通常のテキストの折り返しを利用しcolumn-count
ではなくcolumn-width
を指定し大まかに言うと、
「多様なデバイスでレイアウトを機能させるには、完成したデザインに対してメディアクエリをいくつか追加するだけでよいのです。このためには、あらかじめレイアウトをリキッドなものにしておくことが重要です。そうすれば、小さな画面への対応が容易になります。例えば余白を削ったり、サイドバーを表示できるだけの幅がない場合にレイアウトを修正したりできます。」Experimenting with responsive design in Iterations (signalvnoise.
com/ posts/ 2661-experimenting-with-responsive-design-in-iterations)
小さな (あるいは、大きな)画面への適応のために大量のメディアクエリが必要になってしまった場合には、
もう知っている読者もいるかと思いますが、次の
background: rebeccapurple;
background-color: rebeccapurple;
上のrebeccapurple
の背景色が表示されます。一方下のbackground-image
の値が、引き続き有効であるためです。短縮記法を使わない場合には、この点に注意が必要です。リセットされずに残るプロパティのせいで、期待した効果が得られないことがあり
短縮記法を一切使わずに、
短縮ではない記法を短縮記法の補助として使うのも便利です。background
のようにカンマ区切りのリストを指定できるプロパティで、記述をより
background: url(tr.png) no-repeat top right / 2em 2em, url(br.png) no-repeat bottom right / 2em 2em, url(bl.png) no-repeat bottom left / 2em 2em;
background-size
とbackground-repeat
について、同じ値がそれぞれ
background: url(tr.png) top right, url(br.png) bottom right, url(bl.png) bottom left; background-size: 2em 2em; background-repeat: no-repeat;
こうすれば、background-size
やbackground-repeat
を変更したい場合に
先ほどの例で、短縮記法のbackground
の中でbackground-size
を指定する場合の記述に奇妙な点がありました。デフォルト値から変更しない場合でもbackground-position
を合わせて指定しなければならず、両者の間にはスラッシュ (/
)を記述する必要があります。なぜ、このような奇妙な構文が採用されたのでしょ
このような構文は、あいまいさを解消するために使われることがほとんどです。上のtop right
はbackground-position
を指し、2em 2em
はbackground-size
を指しています。たとえ順序が逆でも、両者は確実に識別できます。しかし、50% 50%
と指定されていた場合はどうでしょう。これはbackground-size
かもしれず、background-position
かもしれません。ここで短縮でない記法を使えば、50% 50%
という値の意図を解釈しなければなりません。そこで、スラッシュが必要になるの
ほとんどの短縮記法のプロパティでは、このようなあいまいさの問題は発生せず、任意の順序で値を記述できます。しかし、予期しない結果を招かないように、正しい構文について知っておくことは重要です。正規表現や構文解析に詳しい読者は、仕様を読んで正確な構文を調べるのがよいでしょう。順序について知るには、これが一番の方法
LESS (lesscss.
CSS単体では大規模プロジェクトで
これらの問題に加えて、開発者が特定のプリプロセッサに依存するようになってしまう問題もあります。たとえ小規模なプロジェクトでも、同じプリプロセッサの利用が恒常化するでしょう。主な機能がネイティブな
calc()
関数は、とても強力な計算の機能を提供します。しかも、幅広いブラウザですでに利用可能color()
関数が定義されていこの種の機能がネイティブに取り入れられた場合、動的であるために100% - 50px
の値がいくつになるかわかりません。calc()
は、問題なくこのような数式を計算できます。また、下のように変数を利用するのもプリプロセッサには不可能
ul { --accent-color: purple; } ol { --accent-color: rebeccapurple; } li { background: var(--accent-color); }
このpurple
にし、番号つきの箇条書きでは背景色をrebeccapurple
にすることを意図しています。プリプロセッサでは、このような動的に値が決まる形式の指定は行えません。もちろん、子孫セレクタを使えば上のような指定は必要ありませんが、ここでは動的な変数の例として紹介しま
ここまでに述べた
万が一 「メイキング」を読んでいない読者のために繰り返すと、
rgba()
やhsla()
を使って、
#ff0066
やorange
などの通常の色と同じだことを認識していませんでした。そのため、半透明色を画像と同様に扱い、もっぱら背景に利用していま1px
の半透明の画像を用意すれば、半透明の背景色を代替できます。他のプロパティでは、不透明な色で塗りつぶすくらいしか代替案がありませんで白の背景色が設定されたコンテナ要素に対して、半透明の白の
border: 10px solid hsla(0,0%,100%,.5); background: white;
背景と
表示されていないようにも見えますが、
CSS 2.1では、背景の仕組みはまさにこのとおりで、我々は仕様を受け入れ仕様に沿って開発するしかありませんでした。しかしbackground-clip
プロパティが使われます。初期値はborder-box
で、要素のpadding-box
という値を指定します。例えば下のようにすると、背景は
background-clip
による、期待どおりの表示border: 10px solid hsla(0,0%,100%,.5); background: white; background-clip: padding-box;
図 2.4のように、意図したとおりの表示が行われ
box-shadow
の使い方Backgrounds & Borders Level 3 (w3.border-image
を使って同じ効果を得るように強いられていました。開発者は
ほとんどの読者は、box-shadow
を利用 (あるいは多用)して影を表示したことがあるでしょう。 しかし、このプロパティに
box-shadow
を使ってアウトラインを再現するbackground: yellowgreen; box-shadow: 0 0 0 10px #655;
border
プロパティを使っても同等のbox-shadow
にはdeeppink
の 「ボーダー」を簡単に追加でき
box-shadow
を使ってbackground: yellowgreen; box-shadow: 0 0 0 10px #655, 0 0 0 15px deeppink;
このように複数の値を指定する場合、それぞれの影は重なって表示され、最初に指定されたものが最も手前に表示されるという点に注意が必要です。つまり、拡散半径の値は重なりを意識して指定しなければなりません。上の5px
にしたかったので、内側の10px
に5px
を加えた15px
を拡散半径として指定しました。必要なら、これらの
background: yellowgreen; box-shadow: 0 0 0 10px #655, 0 0 0 15px deeppink, 0 2px 5px 15px rgba(0,0,0,.6);
このようにbox-shadow
を使った解決策はほとんどの場合でうまく機能しますが、いくつか問題点もあり
box-sizing
プロパティの設定は無視されます。ただし、パディングやinset
キーワードを指定して影がoutline-offset
に負の値を指定して破線のアウトラインを表示すると、簡単な縫い目のような表示を得られるボーダーがoutline
プロパティによるアウトライン (こちらが外側に表示されます)を組み合わせるという方法もあります。box-shadow
を使う場合は実線のoutline
を使うと次のように記述でき
background: yellowgreen; border: 10px solid #655; outline: 15px solid deeppink;
outline
プロパティを使って表示したアウトラインには、outline-offset
を使って要素からの距離を指定できるというメリットもあります。負の距離も指定できます。これを活用すると、さまざまな表現が可能になります。例えば
outline
では複数の値は指定できません。box-shadow
以外に方法はありまborder-radius
)が考慮されません。border-radius
を参照するようになるでしbackground-position: bottom right;
による表示は美しくないことがある背景画像を配置する際に、左上以外の隅 (例えば右下など)からのオフセットを指定したいことがよくあります。
コンテナ要素の大きさが固定の場合、面倒ですが回避策はあります。望む位置に画像を配置した場合の左上からのオフセットを、自分で計算して指定するという方法があります。ただし、中にコンテンツが含まれるなどの理由で大きさを決定できないコンテナ要素では、この方法は利用できません。そこで、background-position
としてしばしば指定されています。近年の
CSS Backgrounds & Borders Level 3 (w3.background-position
プロパティが拡張され、20px
下端から10px
の位置に背景画像を表示させたい場合には、次のように指定し
background: url(code-pirate.svg) no-repeat #58a; background-position: right 20px bottom 10px;
表示はbackground
プロパティの中で従来からのbottom right
を指定するという方法です。具体的には次のように記述し
background: url(code-pirate.svg) no-repeat bottom right #58a; background-position: right 20px bottom 10px;
コンテンツのパディングに合わせて背景画像も表示したいというのが、隅からのオフセットが必要とされる主な理由です。拡張されたbackground-position
の構文を使うと、
padding: 10px; background: url(code-pirate.svg) no-repeat #58a; background-position: right 10px bottom 10px;
図 2.13がその表示結果です。確かに期待どおりの表示ですが、あまり
あなたは今までに、background-position: top left;
のようなbackground-position
の基点は、どのボックスの隅でしょ
デフォルトでは、background-position
はパディングボックスの隅を原点として指定されます。そのため、background-origin
というプロパティが導入されました。もちろん、デフォルト値はpadding-box
です。これを下のようにcontent-box
に変更すると、位置を表す
padding: 10px; background: url("code-pirate.svg") no-repeat #58a bottom right; /* または100% 100% */ background-origin: content-box;
こうすることによって、background-origin
とbackground-position
を組み合わせるというのも可能です。つまり、パディングの値を基準としてさらにオフセットを指定でき
calc()
では、+
と-
の演算子の前後に必ず空白文字を記述する必要があります。こうしないと、正しい数式として解釈されません。この一見奇妙な約束事は、将来的な互換性のために定められました。今後の仕様では、calc()
の中でハイフン (-
)を含む当初の課題は、右から20px
下から10px
の位置に背景画像を配置することでした。これを左上からのオフセットとして解釈すると、左から100% - 20px
で上からは100% - 10px
と表せます。calc()
関数にはこのような数式を指定でき、下のようにbackground-position
との組み合わせも可能です。
background: url("code-pirate.svg") no-repeat; background-position: calc(100% - 20px) calc(100% - 10px);
図 2.15のように、 これでも確かにうまく表示されますが、本質的に要素は知っておくべきポイント
box-shadow
, outline
, 「複数の課題
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
Webに限らずどんな視覚的デザインでも、さまざまなサイズや色そして傾きを持ったストライプ模様が見られます。雑誌から壁紙に至るまで、ストライプは幅広く使われています。しかし、知っておくべきポイント
線形グラデーション、background-size
課題
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
「ストライプ CSSグラ この知っておくべきポイント
CSSグラデーション、課題
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
幾何学的なパ 固有の特徴 (例えば木目の中の節など)が等間隔に何度も現れたとしたら、それは自然界のランダムさに反しており、 Alex Walker, The Cicada Principle and Why It Matters to Web Designers (sitepoint. CSSには乱数の機能が用意されていないため、ランダムさを表現するのは簡単ではありません。例えば、色 (ここでは しかし、これでは知っておくべきポイント
CSSグラデーション、課題
background-size
で指定された80px
ごとに、同じ色が何度も現れています。よりよい方法はないでしょもっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
パ 「 画像を分割して、 最も簡単な方法は、 こうすれば知っておくべきポイント
CSSグラデーション、基本的なborder-image
、課題
border-image
を使えばいいに決まっているじゃないか。問題なんて起こるはずがない」と思われるかもしれませんが、早まってはいけません。border-image
の仕組みを思い出してみましょう。border-image
では画像はborder-image
では可変サイズの要素に対応できないことがわかるでしょう。そうだとしたら、我々はどうするべきでしょ
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
どんな四角形の要素も、十分に大きな値を ここで 隣接する CSS Backgrounds & Borders Level 3 (w3. しかし、コンテンツの大きさが事前にわからないことも多く、ここで具体的な値を指定できないことがよくあります。すべてのコンテンツがあらかじめ用意されている静的な知っておくべきポイント
基本的なborder-radius
プロパティ
課題
border-radius
に指定されているborder-radius
に指定すれば円形になることに気づいた読者も多いでしょう。例えば次のような
100px
以上の値をborder-radius
に指定しても、表示は変わらず円形のままです。その理由は、仕様の中で説明されてい
border-radius
による円を表すborder-width
では無理なのでしょもっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
平行四辺形とは、向かい合う CSSを使って、平行四辺形のボタンを作ってみましょう。まずは、 しかし、こうするとコンテンツにもトランスフ知っておくべきポイント
基本的なCSSの変形処理
課題
skew()
トランスフ
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
視覚的デザインの世界ではひし形に切り抜かれた画像をよく目にしますが、 しかし今日では、よりよい方法がなんと知っておくべきポイント
CSS transformプロパティ、課題
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
角を切り落とされた四角形は、印刷物でも しかし、これを簡単な理解しやすい これらの代替案は明らかに柔軟性を欠いており、保守が困難です。知っておくべきポイント
CSSグラデーション、background-size
、課題
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
平行四辺形をさらに一般化したのが台形で、向かい合う辺のうち この 台形を生成するための既存のテクニックはいずれも、かなり煩雑で保守が困難です。そのため、実世界でのタブの多くは両側の辺が斜めになっているにもかかわらず、知っておくべきポイント
基本的な3次元トランスフォームプロパティ、課題
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
集計結果の表示からプログレスインジ 円グラフを表示するには、値を表す扇形を グラフの作成は以前ほど困難ではなくなりましたが、知っておくべきポイント
CSSグラデーション、基本的なSVG、CSSアニメーション、課題
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
Q&Aサイトで課題
box-shadow
について見かける質問の多くは、box-shadow-bottom
のようなプロパティの追加を求めています。しかし、慣れ親しんだbox-shadow
プロパティだけでもうまく使えば単方向の影を表現できもっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
長方形や これらに対して知っておくべきポイント
box-shadow
課題
border-radius
を使って作成された形状については、box-shadow
を指定すると正しくドロップシャドウが表示されます (「さまざまな楕円形」でいくつか例を紹介しています)。一方、擬似要素などを使った半透明の装飾が加えられているとbox-shadow
は期待どおりには機能しません。透明度が考慮されないためです。例えば次のような
border-image
(写真を飾る額のような画像など)background-clip
がborder-box
ではない)場合の、点線や破線または半透明のclip-path
を使って定義された形状 「「ひし形のbox-shadow
を適用し、失敗した例。左から吹き出し、点線のbox-shadow
の値は2px 2px 10px rgba(0,
box-shadow
を適用すると、もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
グ 従来は、画像編集アプリ 別のアプ 画像を より簡単に、知っておくべきポイント
HSLカラーモデル、background-size
課題
canvas
要素に変換した上で、この画像にティントを適用するようなスクリプトもあります。正しいティントの表示を得られますが、制限が多く動作は低速
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
半透明色の最初の利用例の そして 見てのとおり、テキストがとても読みにくくなってしまっています。背後の画像が込み入っているのと、背景色の不透明度が 印刷物向けの伝統的なデザインでは、テキストの背後にある画像の一部をぼかす手法がしばしばとられます。ぼかされた画像はより落ち着いた表示になるため、テキストは読みやすくなります。ぼかしの処理には大量の計算が必要になるため、かつては CSSには、ぼかしを行うための知っておくべきポイント
RGBAとHSLAを使った色指定
課題
main
要素に対して半透明の白色の背景が指定されています。
左:
右:blur()
フィルblur()
フィルblur()
フィル
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
1つの角 (一般的には右上または右下)が折り返されたような表示のスタイルは、装飾としてとても広く使われています。折り返しの角度はさまざま CSSだけを使ってこのような表示を行う方法がいくつか考案されています。初めて発表されたのは 当時はとても印象的に思えましたが、制約も多く、以下のような場合には対応できま これらの場合にも対応した、柔軟な表示効果を実現できないかどうか考えてみまし知っておくべきポイント
CSSトランスフォーム、CSSグラデーション、課題
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
デザイ その答えは 近年までは、課題
text-align: justify;
を指定すること可能だったのに、利用されていないのはなぜでしょ­
。ハイフもっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
CSSを通じて改行が挿入される この 残念ながら 頭をかきむしって課題
dl
タグ)を使っていると特に、改行を意識せずにはいられません。単に名前と値の組をいくつか表示したいだけの場合でも定義リストを使い、タグの意味に即して
display: inline
を指定した場合。表示は悪化した<dt>
と<dd>
はブロック要素なので、<dt>
か<dd>
(あるいは両方)のdisplay
プロパティの値を変えてみることも考えられます。少しやけになって、適当な値を指定してしまうかもしれません。いずれにせよ、結果はもっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
数年前に擬似クラスの しかし、表ではなく通常のテキストに対してはこのような効果は適用できません。例えばプログラムの知っておくべきポイント
CSSグラデーション、background-size
、課題
:nth-child()
や:nth-of-type()
が導入された時、これらは主にゼブラストライプ (図 5.7のように、
:nth-line()
という擬似要素の追加リクエストが<div>
要素で囲んで:nth-child()
のテクニックを適用しようとしがちです。構文のハイライト表示と組み合わせると、もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
ドキュメントやチ しかし、このようなスタイルがすべての課題
while (true) {
var d = new Date();
if (d.getDate()==1 &&
d.getMonth()==3) {
alert("TROLOLOL");
}
}
<pre>
要素や<code>
要素には、下のようなデフォルトのスタイルが適用され
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
人間関係と同じように、グリフ (フォントを構成する文字)にもうまくいかない組み合わせがあります。例えばセリフ (いわゆる 「ひげ」)つきのフォントで、 そこで、フォントのデザイ また、任意リガチ ただし、デフォルトではブラウザ上で任意リガチ 近代的なよりよい解決策が、きっとあるはず課題
fi
」と記述しなければなりませんでした。以下のように、このやり方は問題だらけ
define
」が何を指しているかすぐに把握できるでしょもっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
タイポグラフ Webデザイ そして 図 5.16に示すように、この方法は確かに正しく機能します。しかし、知っておくべきポイント
基本的な@font-face
ルールを使ったフォントの埋め込み
課題
<span>
要素で囲むといった作業が行われてい
.amp
の要素に対して、次のようなフォントのスタイルが指定され
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
デザイ テキストへの下線は、我々デザイ 必要な こうすると、下線はテキストに近づきます。しかし 最近では、内向きの こうするとわずかにテキストに近づいて描画されますが、その他の問題点は解決されないままです。下線をカスタマイズするための、適切で柔軟な方法はないでしょ知っておくべきポイント
CSSグラデーション、background-size
、 text-shadow
、課題
border-bottom
を使って擬似的に表現された下線border-bottom
を使って下線を擬似的に表現すれば、色や太さなどのスタイルをコントdisplay
にinline-block
を指定し、line-height
の値をより小さくしてみ
box-shadow
を使って下線を再現する試みも見られ
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
テキストへの効果の中には、 このような表示効果について、いくつか紹介することにします。知っておくべきポイント
基本的なtext-shadow
課題
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
特によく使われるわけではありませんが、円に沿って短いテキストを配置したいことがあります。このような場合、知っておくべきポイント
基本的なSVG
課題
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
マウスポイン この問題について不満を持っていたのは筆者だけではありません。課題
cursor
プロパティで利用されるのは、対象がクリック可能なことを示すpointer
や、help
が主でした。何かを読み込んでいることを示すために、wait
やprogress
が使われることもありましたが、これらの他にはほとんど使われませんでした。もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
ユーザーエクスペリエンスに関心を持つ読者は、 発表当時にはグラフィカル この法則から、 一方、ウィンドウの端にマウスを動かした時に何らかの要素を表示させたいことがあります。例えば、ウィンドウの上端付近にマウス課題
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
Webページ上のすべての要素に対して、デザイ CSSが生まれたころには、フ しかし、チェックボックスはこの恩恵をあまり受けていません。今日でも、ほとんどのブラウザではこれらへのスタイル設定をほとんど行えません。その結果、開発者はデフォルトのスタイルを受け入れるか、 このような制約を受けずに、チェックボックスのスタイルをカスタマイズする方法はないのでしょうか。もちろん、課題
div
ともっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
ある特定の知っておくべきポイント
RGBAを使った色指定
課題
.overlay
の要素は、.lightbox
よりも背後にあるすべての要素を暗くするために使われます。.lightbox
のz-index
には他より大きい値が指定されており、手前側に表示されます。この仕組みは問題なく機能はするのですが、
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
「背景を しかし、これを実現するのは暗い表示よりもはるかに困難です。知っておくべきポイント
CSSトランジション、課題
blur()
フィル.lightbox
要素に適用すると、強調したい要素も含めてもっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
ある要素について、表示されている範囲の外にもコンテンツがあることを示すためにスク 多くの かつて公開されていた しかし、この効果を表現するために知っておくべきポイント
CSSグラデーション、background-size
課題
左:フ
中:中央部
右:下端もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
2つの画像の違いを示したいことがあります。何らかの出来事の前後を比較するという利用例が一般的です。例えばフォトギャラ 最もよく使われているのは、単に ユーザーエクスペリエンスの観点からこの問題にアプ これよりもさらに このようなウィジェットをシンプルに実装する方法を考えてみましょう。実は課題
写真出典:
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
ご存知のとおり、高さが指定されていない要素はコンテンツに合わせて上下方向に伸縮します。 Let’s assume we have some text here. Bacon ipsum dolor sit amet turkey veniam shankle, culpa short ribs kevin t-bone occaecat. We also have some more text here. Et laborum venison nostrud, ut veniam sint kielbasa ullamco pancetta. これに対して、画像周囲の Let’s assume we have some text here. Bacon ipsum dolor sit amet turkey veniam shankle, culpa short ribs kevin t-bone occaecat. We also have some more text here. Et laborum venison nostrud, ut veniam sint kielbasa ullamco pancetta. Let’s assume we have some text here. Bacon ipsum dolor sit amet turkey veniam shankle, culpa short ribs kevin t-bone occaecat. We also have some more text here. Et laborum venison nostrud, ut veniam sint kielbasa ullamco pancetta.課題
width
についてもこのようなふるまいをさせることは可能かどうか、考えてみましょう。例として、下のような<figure>
要素を取り上げ
</figure>
要素の幅を画像 (サイズはさまざまです)と揃え、横方向の中央に配置しようとしています。しかし、</figcaption>
要素のテキストの幅が画像よりも大きく、現状の表示は期待からかけ離れています。親要素ではなく画像の幅にもとづいて、</figure>
要素の幅が決まるようにしたいと思います
float
指定を使って幅の問題を解決しようとしても、別の問題が発生する
display: inline-block
を指定しても、期待どおりの表示を得られない
<figure>
をフ<figure>
にdisplay: inline-block
を指定すれば、コンテンツにもとづいてサイズが設定されます。しかし、これも我々の期待とは異なります (図 7.3)。また、たとえ幅がたまたま期待どおりになったとしても、この要素を中央に配置するのは大変です。親要素にtext-align: center;
を指定し、この親要素の子になるすべて要素 (p
、ul
、ol
、dl
など)にtext-align: center
を指定しなければなりま<figure>
に固定値の幅やmax-width
を指定し、figure > img
にmax-width: 100%
を指定しようとするかもしれません。しかしこうしても、空いているス<figure>
の幅を動的に指定するようなスクリプトを書かなければならないのでしょうか。それとも、もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
我々は遠い昔に その結果、たとえ表形式の課題
table
以外の要素も、display
要素に
もし…
セルの幅を指定しないと、多くのコンテンツを含む列が広く
もし…
セルの幅を指定しないと、多くのコンテンツを含む列が広く
複数の行を持つテーブルでは、すべての行のコンテンツを元に幅が算出さ
上の例と幅が異なる場合が
幅を指定してもそのとおりの表示になるとは限らない。列の幅として
1000px
と2000px
を指定した場合。コンテナ要素の幅は3000px
より小さいので、この幅を
行の折り返しを
禁止した場合、
長いコンテンツ
はコンテナ要素
からはみ出てし
まう。
大きな画像や各
行が長いコード
でも同じ問題が
生
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
兄弟要素の個数に応じて、異なるスタイルを指定したい しかし 一般兄弟セレクタ (generalized sibling combinator)の課題
<textarea>
を持つアプリ<textarea>
の列数を少しずつ小さくします。
Adobe Color (color.
li:nth-child(4),
を指定した場合に選択される要素
li:nth-child(4) ~ lili:nth-child(4)
を使えばリストの中で~
と:nth-child()
を組み合わせるアイデアも考えられます。例えば、li:nth-child(4), li:nth-child(4) ~ li
のように指定できます。しかしこうするともっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
ここ数年の間に、 ???や (若干わかりにくいですが) このような表示を得るために最もよく使われているのは、 この 見覚えがある読者も多いでしょう。課題
margin: auto
が指定され、横方向の中央に表示されます。例えばフッ
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
CCSSを使って要素を横方向に中央揃えするのはとても簡単です。インライン要素であればその親要素で 数年にわたって、縦方向の中央揃えは手の届かない目標のひとつでした。フロントエンド開発者の間では、これを行おうとしてもただのジ ここ数年の間、フロントエンド開発者たちは知恵を絞ってこの難問に取り組んできました。しかし、編み出された解決策のほとんどは、ハックとしか言いようのないものばかりでした。この これら 特に明記された場合を除いて、ここでは また、表示をわかりやすくするために背景やパディングなどを設定しています (図 7.13)。課題
text-align: center;
を指定し、ブロック要素ならその要素自身にmargin: auto
を指定するだけです。一方、要素を縦方向に中央揃えしようとしたら、考えるだけで気分が悪くなってくるかもしれま
display: table;
など)では、inline-block
を使った手法は、ハックの度合いが強すぎると筆者は考えbody
要素の中に次のような
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
弾むようなトランジションやアニ 技術的には、弾むような効果は以下のように説明できます。初回のトランジションが終点に達すると、逆方向へのトランジションが発生します。その後は移動量を少しずつ小さくしながらトランジションが繰り返され、最終的にはまったく移動しなくなります。例え
ば 位置の移動以外にも、同様の弾むようなふるまいは見られます。以下の例をはじめとして、ほぼすべての種類のトランジションに適用でき とても多くの知っておくべきポイント
基本的なCSSトランジション、基本的なCSSアニメーション
課題
margin-top
などのプロパティは使っていません。これらはピクセル間の境界を飛び飛びに進むように表示されることがあります。トランスフ350px
へとtranslateY()
トランスフ
transform: scale(0)
の状態からポップアップ表示を行ったり、棒グラフでそれぞれの棒をアニもっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
CSSのプロパティに対してトランジションを適用し、値を徐々に変化させるだけでは不可能なアニ 「アニ 1つ目と このようなコマ送りのアニ知っておくべきポイント
基本的なCSSアニメーション、課題
background-position
を切り替える方式がとられます。このための小さなライブラリも公開されています。一方、同じ機能を読みやすいもっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
よくある さて、どのようにすればこのような点滅を表現できるでしょうか。知っておくべきポイント
基本的なCSSアニメーション、課題
<blink>
というタグがよく使われていたのを覚えているでしょうか。このタグを使った点滅の表示は、<blink>
は、私がイン<blink>
がもたらした悪夢は消え去りましたが、点滅するアニ#
以降の<blink>
でのような不快感を与えることもありません。また、点滅のメリット (ユーザーの注目)を活かしてデメリット (気が散る、いらいらや発作の誘発)を防ぐために、スtext-decoration: blink
と指定すれば<blink>
タグと同等の表示にできますが、機能が乏しすぎます。しかも、対応しているブラウザは多くありません。もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
キー入力を表現するために、テキストを 通常、このような表示効果は長くハックだらけで複雑な知っておくべきポイント
基本的なCSSアニメーション、課題
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
アニ 「アニ知っておくべきポイント
基本的なCSSアニメーション、animation-direction
(「点滅」参照)
課題
:active
)などの、
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
数年前に もう これらは数ある例のうちのごく一部ですが、一体どのような Google+の例を簡略化したような、アバ アニ 続いて、アニ 方向性は間違っていないのですが、表示は 当時の知っておくべきポイント
CSSアニメーション、CSSトランスフォーム、課題
300px
で、半径は150px
だと覚えておいてくだ
もっと読みたい!
本書は 『CSSシークレット』の
(oreilly.
W3Cの
ソフトウェアエンジニア。日本アイ・ビー・エム ソフトウェア開発研究所勤務。主な訳書に 『Go言語による
ビブリオスタイル社は
――47のテクニックで
著者 | Lea Verou (リア・ヴェルー) |
訳者 | 牧野 聡 (まきの さとし) |
発行人 | ティム・オライリー |
制作 | 株式会社ビブリオスタイル |
印刷 | 日経印刷株式会社 |
発行所 | 株式会社オライリー・ジャパン 〒160-0002 東京都新宿区四谷坂町 Tel (03) Fax (03) 電子メール japan@oreilly.co.jp |
発売元 | 株式会社オーム社 株式会社オーム社 〒101-8460東京都千代田区神田錦町 Tel (03) Fax (03) |
Printed in Japan(ISBN 978-4-87311-766-9)
乱丁、落丁の際はお取り替え致し
本書は著作権上の保護を受けています。本書の一部あるいは全部について、株式会社オライ