2019-08-16に更新

俺的CSS便利Property・Value・Selector 50連発!

最近すごくHTMLやCSSを書いている気がするので、ここらでCSSのよく使うプロパティや知っていると便利なプロパティをまとめてみることにしました。早速行ってみましょう!

よく使うもの

1. ::before, ::after

これを指定した要素の子要素として挿入される疑似要素。子要素を持てない要素(img, inputなど)には指定不可能。contentプロパティを指定しない限り挿入されない。なにも入れるcontentがない場合はcontent: ""を指定する。

2. min-height, min-width

高さや幅の最小値を指定する。mainコンテナのように、必ずある大きさ以上の大きさが必要な要素に指定すると、コンテンツの大きさにかかわらず設定した大きさより小さくならない。

3. max-height, max-width

上のmin-系とは逆に、高さや幅の最大値を設定する。指定すると、コンテンツの大きさにかかわらず、設定した大きさより大きくならない。

4. order

HTMLの要素の兄弟順をオーバーライドする。これを指定すると、強制的に兄弟要素の中でその順番になるように表示される。nth-系には影響しない。

5. visibility

display: noneと違って、表示したくないけれど領域は確保したいという場合に使える。

6. z-index

要素の描画順を設定するプロパティ。position: fixed;と使うことが多い。

7. clip-path

要素の見かけの外形を設定するプロパティ。うまく使えばCSSだけでいろんな表現が可能に。

8. will-change

要素のCSSプロパティがアニメーションで変化することをあらかじめブラウザに知らせる。パフォーマンス爆上がり。

9. transform

要素を移動、回転、拡縮、変形させるプロパティ。ちょっと場所がずれるときとか、アニメーションで動かしたいときに便利。

10. :root

root疑似クラス。document.documentElementを指し示すセレクタ。カスタムプロパティと組み合わせると応用範囲は無限大。メディアクエリと組み合わせるとモバイルビュー判定にも使える。

@media screen and (max-width: 960px) {
    :root {
        --is-mobile: yes;
    }
}
@media screen and (min-width: 961px) {
    :root {
        --is-mobile: no;
    }
}

11. transform-origin

transformプロパティの基準になる点を指定するプロパティ。ローディング画面のスピナなどを作るときなど、意外と使える場面が多い。

12. position: relative

position: absoluteが親要素を基準とした位置取りにならない!?って思ったときは大概こいつの設定忘れが原因。これが設定された要素の子要素にposition: absoluteが指定された場合、これが設定された要素を基準とした位置取りになる。

13. appearance: none

デフォルトの見た目をなくすプロパティ。input要素に独自のスタイルを当てたいときなど、これを設定するとうまくいくことが多い。

14. box-shadow

要素が落とす影を設定するプロパティ。背景が設定されていない要素につけると違和感マシマシ。そういうインラインなテキスト要素に影をつけたい場合は、text-shadowプロパティを使うこと。

15. background-clip

きれいなタイトル文字の修飾をしたいときに。ヘッディング要素のbackground-imageプロパティに適当な画像を設定して、このプロパティの値をtextにすると、背景が文字の形で切り抜かれる。

16. background-attachment: fixed

要素内のコンテンツが動いても、背景を動かしたくない場合に使う。サイトの背景に設定するといい感じになるかも。

17. border-radius

要素を角丸にできる。もはや説明不要。

18. :not

セレクタにマッチしない要素にマッチする。例えば、:not(.not-select)というセレクタは、not-selectクラスを持たない要素にマッチする。

19. :first-child, :last-child, :nth-child, :nth-last-child

指定された順番にある兄弟要素にマッチする疑似クラス。

20. :first-of-type, :last-of-type, :nth-of-type, nth-last-of-type

指定された順番にある同じタグ(spanどうし、divどうしなど)の兄弟要素にマッチする疑似クラス。

21. :required

required属性のあるformパーツにマッチする。

22. :invalid

入力された値が要求された形式に従っていないformパーツにマッチする。

23. outline

borderの外側に描画されるborderみたいなやつ。borderと違って、それ専用に場所が確保されない。

24. attr()

print画面でだけ::after疑似要素にurlを表示したいときなど、CSSのプロパティに特定のHTML属性を設定したいときに使用する。

25. user-select

ユーザーが要素を選択可能かどうかを設定する。spanにclickイベントを設定したときなど、選択されるのが鬱陶しかったり、要素を選択してほしくないときに使う。

26. pointer-events

要素のどこがマウスイベントをキャプチャするか指定するプロパティ。オーバーレイなど、ほかの要素より前に出るがマウスイベントをキャプチャしたくない要素にはnoneを設定すると吉。

27. cursor

要素の上に乗ったカーソルの表示の種類を設定する。ユーザビリティが上がるらしい。

28. :checked

チェックが入っているチェックボックスにマッチする。うまく活用するとHTML/CSSだけで開閉するメニューなどの2つの状態を持つUIが記述できる。

29. display: flex

要素をflexboxにする。子要素の数によって、自動でいい感じに配置を決めてくれる。すごく便利。ついつい多用しがち。

30. justify-content

要素の配置を決めるプロパティ。上のdisplay: flexと組み合わせて使うことが多い。

31. flex-flow

flexboxで、要素を配置する向きを決める。

32. flex

flexboxの子要素に指定するプロパティ。flex-grow、flex-shrink、flex-basisの3つを一気に指定できる。flex-growは要素がコンテナより小さいときにどれくらい大きくするか、flex-shrinkは逆に要素がコンテナより大きいときにどれくらい小さくするか、flex-basisは要素がコンテナの中でどれくらいの初期サイズを持っているのかを指定する。

そこまで使うわけでもないけど知っていたら便利なもの

33. position: sticky

これを設定された要素が親要素の中でrelative + fixedのような振る舞いをするようになる。Qiitaのいいねボタンやストックボタンのスマホ版みたいな振る舞いがこれ(とtop, bottom, right, leftプロパティのどれか1つ以上)だけで記述可能。

34. text-indent

行頭字下げをするプロパティ。パラグラフの先頭で字下げしたいときに有効。

35. ::first-letter

ある要素の中で、最初の文字にマッチする疑似要素。パラグラフの最初の文字だけ大きくするような表現に使える。

36. ::select

ある要素の中で、現在選択されているものにマッチする疑似要素。選択部分の強調などに使える。

37. ::target

urlのターゲットになっている要素にマッチする。ページ内リンクで飛んだ先の要素を強調するのに使える。

38. perspective

transformと組み合わせて使う。遠近法をどの程度かけるか指定するプロパティ。

39. transform-style: preserve-3d

これを三次元の移動回転変形を指定したtransformプロパティを持つ要素の親に指定することで、3次元的な描写を可能にすることができる。

40. filter

要素に指定したSVGフィルタをかける。::beforeに指定して背景をぼかしたり、グレイスケール化したり、いろいろな視覚効果を追加することができる。

41. ::marker

::marker
リストのマーカーにマッチする疑似要素。

  • ←これがリストのマーカー。

42. ::placeholder

formパーツ要素のplaceholderにマッチする。placeholderの色やフォントなどを変えたいときに便利。

43. :defined

任意のCustomElementにマッチする。

44. quotes

<q>~</q>のタグを使ったときに表示される引用符を制御できる。それ以外のタグの場合も、以下のようにして利用できる。

blockquote {
    quotes: "「" "」";
}
blockquote::before {
    content: open-quote;
}
blockquote::after {
    content: close-quote;
}

より正確な動作の説明としては「open-quoteclose-quoteの値を制御する」ということになる。

45. text-overflow

文字がコンテナのサイズを超過したときの処理を設定する。...のような記号で省略したり、それ以外の文字で省略したり、あるいはそれ以上を表示しなかったりするような表現が可能。

46. writing-mode

文字を縦書きにするか横書きにするか設定できる。サイトの種類によっては多用することもあるかも。

47. text-orientation

writing-modevertical-rlまたはvertical-lrにしたときに、文字をどの向きで配置するか設定する。

48. clear

浮動要素のまわりの固定要素の配置(回り込み)を指定する。浮動要素しか含まないような要素の高さを維持するために使うこともできる。

.float-only::after {
    content: "";
    display: block;
    clear: both;
}

49. all

すべてのプロパティを一気に設定できる。親要素からすべてのスタイルを継承したいときや、逆に継承したくないとき、デフォルトの見た目にしたいときに使える。

50. touch-action

要素に対して可能なタッチアクションの種類を制限できる。たとえば、ズームしてほしくないとか、縦方向のスクロールを制限したいとかそういう場合に便利。Cookie Clickerのタッチ領域にこれを指定してほしいと何度思ったことか。

まとめ

CSS難しい……。MDNの解説ってプロパティごとに内容の質にけっこうばらつきが大きいんですね。

参考

  • https://developer.mozilla.org/en-US/docs/Web/CSS
  • https://www.w3schools.com/cssref/

Happy Hacking!

この記事はブログにも投稿しています。

Originally published at www.tech-frodo.xyz
ツイッターでシェア
みんなに共有、忘れないようにメモ

frodo821

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は個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

関連記事

コメント