最近すごくHTMLやCSSを書いている気がするので、ここらでCSSのよく使うプロパティや知っていると便利なプロパティをまとめてみることにしました。早速行ってみましょう!
これを指定した要素の子要素として挿入される疑似要素。子要素を持てない要素(img, inputなど)には指定不可能。content
プロパティを指定しない限り挿入されない。なにも入れるcontentがない場合はcontent: ""
を指定する。
高さや幅の最小値を指定する。mainコンテナのように、必ずある大きさ以上の大きさが必要な要素に指定すると、コンテンツの大きさにかかわらず設定した大きさより小さくならない。
上のmin-
系とは逆に、高さや幅の最大値を設定する。指定すると、コンテンツの大きさにかかわらず、設定した大きさより大きくならない。
HTMLの要素の兄弟順をオーバーライドする。これを指定すると、強制的に兄弟要素の中でその順番になるように表示される。nth-
系には影響しない。
display: none
と違って、表示したくないけれど領域は確保したいという場合に使える。
要素の描画順を設定するプロパティ。position: fixed;
と使うことが多い。
要素の見かけの外形を設定するプロパティ。うまく使えばCSSだけでいろんな表現が可能に。
要素のCSSプロパティがアニメーションで変化することをあらかじめブラウザに知らせる。パフォーマンス爆上がり。
要素を移動、回転、拡縮、変形させるプロパティ。ちょっと場所がずれるときとか、アニメーションで動かしたいときに便利。
root疑似クラス。document.documentElementを指し示すセレクタ。カスタムプロパティと組み合わせると応用範囲は無限大。メディアクエリと組み合わせるとモバイルビュー判定にも使える。
@media screen and (max-width: 960px) {
:root {
--is-mobile: yes;
}
}
@media screen and (min-width: 961px) {
:root {
--is-mobile: no;
}
}
transformプロパティの基準になる点を指定するプロパティ。ローディング画面のスピナなどを作るときなど、意外と使える場面が多い。
position: absolute
が親要素を基準とした位置取りにならない!?って思ったときは大概こいつの設定忘れが原因。これが設定された要素の子要素にposition: absolute
が指定された場合、これが設定された要素を基準とした位置取りになる。
デフォルトの見た目をなくすプロパティ。input要素に独自のスタイルを当てたいときなど、これを設定するとうまくいくことが多い。
要素が落とす影を設定するプロパティ。背景が設定されていない要素につけると違和感マシマシ。そういうインラインなテキスト要素に影をつけたい場合は、text-shadow
プロパティを使うこと。
きれいなタイトル文字の修飾をしたいときに。ヘッディング要素のbackground-image
プロパティに適当な画像を設定して、このプロパティの値をtext
にすると、背景が文字の形で切り抜かれる。
要素内のコンテンツが動いても、背景を動かしたくない場合に使う。サイトの背景に設定するといい感じになるかも。
要素を角丸にできる。もはや説明不要。
セレクタにマッチしない要素にマッチする。例えば、:not(.not-select)
というセレクタは、not-selectクラスを持たない要素にマッチする。
指定された順番にある兄弟要素にマッチする疑似クラス。
指定された順番にある同じタグ(spanどうし、divどうしなど)の兄弟要素にマッチする疑似クラス。
required属性のあるformパーツにマッチする。
入力された値が要求された形式に従っていないformパーツにマッチする。
borderの外側に描画されるborderみたいなやつ。borderと違って、それ専用に場所が確保されない。
print画面でだけ::after
疑似要素にurlを表示したいときなど、CSSのプロパティに特定のHTML属性を設定したいときに使用する。
ユーザーが要素を選択可能かどうかを設定する。spanにclickイベントを設定したときなど、選択されるのが鬱陶しかったり、要素を選択してほしくないときに使う。
要素のどこがマウスイベントをキャプチャするか指定するプロパティ。オーバーレイなど、ほかの要素より前に出るがマウスイベントをキャプチャしたくない要素にはnone
を設定すると吉。
要素の上に乗ったカーソルの表示の種類を設定する。ユーザビリティが上がるらしい。
チェックが入っているチェックボックスにマッチする。うまく活用するとHTML/CSSだけで開閉するメニューなどの2つの状態を持つUIが記述できる。
要素をflexboxにする。子要素の数によって、自動でいい感じに配置を決めてくれる。すごく便利。ついつい多用しがち。
要素の配置を決めるプロパティ。上のdisplay: flex
と組み合わせて使うことが多い。
flexboxで、要素を配置する向きを決める。
flexboxの子要素に指定するプロパティ。flex-grow、flex-shrink、flex-basisの3つを一気に指定できる。flex-growは要素がコンテナより小さいときにどれくらい大きくするか、flex-shrinkは逆に要素がコンテナより大きいときにどれくらい小さくするか、flex-basisは要素がコンテナの中でどれくらいの初期サイズを持っているのかを指定する。
これを設定された要素が親要素の中でrelative + fixedのような振る舞いをするようになる。Qiitaのいいねボタンやストックボタンのスマホ版みたいな振る舞いがこれ(とtop, bottom, right, leftプロパティのどれか1つ以上)だけで記述可能。
行頭字下げをするプロパティ。パラグラフの先頭で字下げしたいときに有効。
ある要素の中で、最初の文字にマッチする疑似要素。パラグラフの最初の文字だけ大きくするような表現に使える。
ある要素の中で、現在選択されているものにマッチする疑似要素。選択部分の強調などに使える。
urlのターゲットになっている要素にマッチする。ページ内リンクで飛んだ先の要素を強調するのに使える。
transformと組み合わせて使う。遠近法をどの程度かけるか指定するプロパティ。
これを三次元の移動回転変形を指定したtransformプロパティを持つ要素の親に指定することで、3次元的な描写を可能にすることができる。
要素に指定したSVGフィルタをかける。::before
に指定して背景をぼかしたり、グレイスケール化したり、いろいろな視覚効果を追加することができる。
::marker
リストのマーカーにマッチする疑似要素。
formパーツ要素のplaceholderにマッチする。placeholderの色やフォントなどを変えたいときに便利。
任意のCustomElementにマッチする。
<q>~</q>
のタグを使ったときに表示される引用符を制御できる。それ以外のタグの場合も、以下のようにして利用できる。
blockquote {
quotes: "「" "」";
}
blockquote::before {
content: open-quote;
}
blockquote::after {
content: close-quote;
}
より正確な動作の説明としては「open-quote
とclose-quote
の値を制御する」ということになる。
文字がコンテナのサイズを超過したときの処理を設定する。...
のような記号で省略したり、それ以外の文字で省略したり、あるいはそれ以上を表示しなかったりするような表現が可能。
文字を縦書きにするか横書きにするか設定できる。サイトの種類によっては多用することもあるかも。
writing-mode
をvertical-rl
またはvertical-lr
にしたときに、文字をどの向きで配置するか設定する。
浮動要素のまわりの固定要素の配置(回り込み)を指定する。浮動要素しか含まないような要素の高さを維持するために使うこともできる。
.float-only::after {
content: "";
display: block;
clear: both;
}
すべてのプロパティを一気に設定できる。親要素からすべてのスタイルを継承したいときや、逆に継承したくないとき、デフォルトの見た目にしたいときに使える。
要素に対して可能なタッチアクションの種類を制限できる。たとえば、ズームしてほしくないとか、縦方向のスクロールを制限したいとかそういう場合に便利。Cookie Clickerのタッチ領域にこれを指定してほしいと何度思ったことか。
CSS難しい……。MDNの解説ってプロパティごとに内容の質にけっこうばらつきが大きいんですね。
Happy Hacking!
Pythonをこよなく愛するプログラマ。広く浅くアンテナを張っている(つもり)。 出来ることと言えばフロントエンド全般やJava、Kotlinを使ったアプリ開発、PHP/Pythonでバックエンドが少々にC#、Python、Java、Kotlin、Scalaなどを使ったデスクトップ開発くらいのもの。PyPIで自作ライブラリ公開したりもしている。https://pypi.org/project/rattlepy/ https://pypi.org/project/groom/ 好きなフロントエンドフレームワークはReact、バックエンドフレームワークはCodeIgniterとMasonite。自分のサイトもReactを使って構築した。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント