『30 Seconds of CSS』
ご存知の方も多いと思いますが、CSSの役立つ小技集のようなサイトです。
誰でも知っているようなものもありますが、標準仕様とは言えないながらも覚えておくとお得なテクニックやデザイン的なテクニックなども多数載っていて、解説も分かりやすい。
その上文章も短く簡潔なので、私の貧弱な英語力でもそれなりに読めるのがありがたいという素晴らしいサイトです。
今回は英語の勉強も兼ねてこちらを翻訳していきたいと思います。
なお、コードサンプルやデモは転載しませんので元サイトの方でご確認ください。
この記事はブログで4個づつ翻訳したものをまとめたものになります。
この先はQiitaの前にブログで公開しているのでよろしくお願いします。
TAMAのWEBデザイン勉強ノート+雑感
目次 |
---|
1.はずむ読み込み – Bouncing loader |
2.Box-sizingの初期化 – Box-sizing reset |
3.真円 – Circle |
4.クリアーフィクス – Clearfix |
5.高さの比率に対して一定の横幅 - Constant width to height ratio |
6.自動連番 - Counter |
7.スクロールバーのカスタマイズ - Custom scrollbar |
8.テキスト選択範囲のカスタマイズ - Custom text selection |
9.CSS変数 - Custom variables |
10.選択の禁止 - Disable selection |
11.テーブル要素内の中央配置 - Display table centering |
12.ドーナッツ型の回転アニメ―ション - Donut spinne |
1.はずむ読み込み – Bouncing loader
https://30-seconds.github.io/30-seconds-of-css/#bouncing-loader
はずむ読み込み動画を作ろう。
<<説明>>
注:1remは通例16pxとする。
-
@keyframes
で、要素の不透明度opacityの変化、またtransform: translateY()
を使った要素の二次元平面上の移動という2つ状態を持ったアニメーションを定義します。 -
.bouncing-loader
セレクタは跳ねる円形の親コンテナ要素なので、その子要素を中央に位置させるためにdisplay: flex
とjustify-content: center
を指定します。 -
.bouncing-loader > div
セレクタは、親要素の中の3つのdiv
を対象にスタイルを指定します。div
要素はそれぞれ1remの高さと幅を与えられ、border-radius: 50%
の指定によって角が球状に丸められています。 -
margin: 3rem 0.2rem
が各円形に指定している上下3rem、左右0.2remのマージンは、円形同士が接触しないように余白を作るためです。 -
animation
は各種アニメーションプロパティを表すためのショートハンドプロパティです。animation-name
,animation-duration
,animation-iteration-count
,animation-direction
プロパティが使用されています。 -
nth-child(n)
はその親要素の中のn番目の子要素を対象にする疑似クラスです。 -
animation-delay
は二番目と三番目の要素にそれぞれの値で使用されています。それによって、各々の要素が違うタイミングでアニメーションを開始するのです。
2.Box-sizingの初期化 – Box-sizing reset
https://30-seconds.github.io/30-seconds-of-css/#box-sizing-reset
要素の幅と高さがそれらに指定されたborderやpaddingの影響を受けないよう、ボックスモデルの初期化をしよう。
<<説明>>
1. box-sizing: border-box
は追加したpadding
やborder
が要素の幅や高さに影響を与えないようにします。
-
box-sizing: inherit
で、ある要素がその親要素のbox-sizing
規則に従うようにします。
3.真円 – Circle
https://30-seconds.github.io/30-seconds-of-css/#circle
真円形の要素をCSSだけを使って作ろう。
<<説明>>
border-radius: 50%
で要素のフチを湾曲させて真円を作ります。
真円というものは中心から辺のどの点までの距離も同じでなければならないので、要素の幅と高さは必ず同じにします。違う値にした場合は楕円が作られるでしょう。
4.クリアーフィクス – Clearfix
子要素のフロート解除を親要素で確実に行おう。
注:このテクニックは貴方がまだレイアウトにフロートを使っている場合のみ有効です。フレックスボックスやグリッドレイアウトを用いた近代的な手法の使用を検討してください。
<<説明>>
-
.clearfix::after
で疑似要素にスタイルを指定します。 -
content: ‘ ’
を指定して、その疑似要素がレイアウトに影響を与えることを許可します。 -
clear: both
はその要素の左右、あるいは両側の要素がclear
を指定しているそのブロックの中で前出しているフロート要素に隣接できなくなることを示します。(この訳自信無し)
5.高さの比率に対して一定の横幅 - Constant width to height ratio
https://30-seconds.github.io/30-seconds-of-css/#constant-width-to-height-ratio
要素に可変の横幅を与えることで、レスポンシブデザインでも高さが釣り合う状態を保持できるようになる。(言い換えれば、その要素の高さに対する横幅の比率が一定になる)
<<説明>>
::before
疑似要素に指定されたpadding-top
によって、要素の高さは横幅に指定されている%と同じ値になります。従って100%
という値を指定することでその要素の高さが常にその横幅の100%になり、レスポンシブな正方形を作り出せるのです。
(訳者補足:縦横関係なく、%を値に持つpaddingは横幅を基準にした%の長さを取るようです。)
この方法は、この要素の中に中身を正常に配置することにも使えるでしょう。
6.自動連番 - Counter
https://30-seconds.github.io/30-seconds-of-css/#counter
カウンターとは要するにCSSによって運用される変数であり、使用された回数に適用されるCSSのルールに従って、その変数の値は追加されていく。
<<説明>>
連番の入ったリストがどんなHTMLタグでも作れます。
- `counter-reset`はカウンターの変数を初期化するプロパティで、値には対象となる任意のカウンター名を取ります。デフォルト値では、カウンターは0からのスタートです。またこのプロパティは初期値を特定の値に変えることも出来ます。
- `counter-increment`はカウントされる要素に指定します。一度`counter-reset`によって初期値になったカウンターの値が増加あるいは減少を開始します。
- `counter(name, style)`で、その項目ごとのカウンターの値を表示します。一般的に疑似要素の`content`プロパティ内で使用します。この機能は2つのパラメータを持ち、1つ目はカウンターの名前、2つ目は`decimal`と`upper-roman`のどちらかです。(初期値は`decimal`) (※訳者注:この機能はサンプルでは使用されていません。)
- `counters(counter, string, style)`もまた、その項目ごとのカウンターの値を表示し、一般的に疑似要素の`content`プロパティ内で使用します。この機能は3つのパラメーターを持っています。1つ目はそのカウンターの任意の名前、2つ目はカウンターの数値の後に来る任意の文字列、3つ目は`decimal`と`upper-roman`のどちらかです。(初期値は`decimal`)
- CSSカウンターは特に概要のリストを作る際に便利でしょう、なぜなら子要素の中には自動的に新しい階層のカウンターが作成されるからです。`counters()`の機能を使うことで、階層が違う入れ子状のカウンターたちの間に区切り用の文字列を挿入することも出来ます。
7.スクロールバーのカスタマイズ - Custom scrollbar
https://30-seconds.github.io/30-seconds-of-css/#custom-scrollbar
スクロールバーのスタイルをドキュメントやバー付きの要素によってカスタマイズしよう。(WebKit 系プラットフォーム限定)
<<説明>>
- `::-webkit-scrollbar`はスクロールバー要素全体にスタイルを指定します。
- `::-webkit-scrollbar-track`はスクロールバートラックの要素(上下するパーツとそのレール部分)にスタイルを指定します。
- `::-webkit-scrollbar-thumb`はスクロールバーサムの要素(上下するパーツ)にスタイルを指定します。
⚠スクロールバーのスタイルはどの標準化過程にも載っていないと思われます。
(訳者注:前述のとおりWebKit 系のSafariやChromeでのみ使用可)
(訳者補足:コメント欄より情報提供いただきました。
『CSS Scrollbars Module Level 1』にて同一の内容ではないもののスクロールバーのCSSプロパティが標準化過程に記載されているようです。)
8.テキスト選択範囲のカスタマイズ - Custom text selection
https://30-seconds.github.io/30-seconds-of-css/#custom-text-selection
テキスト選択範囲(クリックやドラッグした時)のスタイルを変えよう。
::selection
はある要素の中のテキストが選択されたときに指定するスタイルを定義します。ただし他のセレクタをその前に結合して使わない場合は、指定したスタイルはドキュメントのルートレベルに適用され、選択可能な全ての要素が対象になるという点に留意してください。
9.CSS変数 - Custom variables
https://30-seconds.github.io/30-seconds-of-css/#custom-variables
CSS変数は一つのドキュメントを通して使う特定の値を格納する。
<<説明>>
:root
疑似クラス内に定義された変数は、ドキュメントを構成する樹状に連なる要素の根っこ(root)の要素に適用されるため、グロバーバル変数として機能します。
--variable-name:
の形で変数を宣言しましょう。
変数はドキュメント内であればvar(--variable-name)
の値を使って呼び出すことができます。
10.選択の禁止 - Disable selection
https://30-seconds.github.io/30-seconds-of-css/#disable-selection
コンテンツを選択できない様にしよう。
<<説明>>
user-select: noneを指定することで、そのテキストは選択できない様になります。
⚠ブラウザへのフルサポートには各プレフィクスが必要です。
⚠閲覧者がコンテンツをコピーすることを防ぐ確実な方法ではありません。
(訳者注:Devツールでこの指定を外せば通常通りの選択が可能になるため)
11.テーブル要素内の中央配置 - Display table centering
https://30-seconds.github.io/30-seconds-of-css/#display-table-centering
縦横の両方向に子要素を中央配置するためにその親要素にdisplay: tableを使おう。(flexboxの代用手段として)
<<説明>>
- `'.center'`セレクタに指定した`display: table`によって、その要素はHTMLの`
`タグと同じようにふるまいます。
- 縦横の幅に`100%`を指定することで、 `'.center'`セレクタは親要素内いっぱいの大きさを取ります。
- `'.center > span'`セレクタに指定した`display: table-cell`によって、その要素はHTML要素と同じ働きをします。
- `text-align: center`で子要素は横方向に中央配置されます。
- `vertical-align: middle`で子要素は縦方向に中央配置されます。
なおこの外側の親要素(この例では`'.container'`)は高さと横幅が固定されている必要があります。12.ドーナッツ型の回転アニメ―ション - Donut spinner
https://30-seconds.github.io/30-seconds-of-css/#donut-spinner
コンテンツが読み込み中であることを示す、ドーナッツ型の回転アイコンを作ろう。
<<説明>>
半透明のborderを要素の全辺に適用し、その上で一辺だけに読み込み進行中の指針を表すように色を付けます。animationプロパティを使って、そのドーナツ型の要素を回転させます。
⚠ブラウザへのフルサポートには各プレフィクスが必要です。