最近便利なCSSおれおれAdvent Calendar 2023 – 21 日目 16 進数の色コードは赤緑青が #RRGGBB の 6 桁と #RGB の 3 桁とあるんだけど、これに不透明度 Alpha を足して 8 桁 #RRGGBBAA と 4 桁 #RGBA というのもあります。 ダイアログの後ろに半透明のバックドロップを置くときに便利です。 例 デモ:https://codepen.io/ginpei/pen/bGZGgOQ
最近便利なCSSおれおれAdvent Calendar 2023 – 23 日目 ほとんどの場面では width と height を指定すれば良いんですが、それが面倒な場合や難しい場面もあります。aspect-ratio で縦横の比率を指定できるので便利です。 例 デモ:https://codepen.io/ginpei/pen/JjzjBmK 縦横の片方だけ指定するともう片方は自動で決まります。 取る値 <width> / <height> のような組か、0.5 のような数値 1 つです。 スラッシュは区切りであって割り算の意味ではないんだけど、1 / 2 と 0.5 は結果的に同じです。 大きさに幅がある場合 サイズが max-width 等で指定されていると、それに収まる範囲で縦横比が算出されます。 こんな風にすると必ず画面内に収まる大きさで、かつ縦横比が黄金比になります。
仕様に駄目と書いてあります。 逆にクラスセレクターとかには不要なだけで、付けたければ付けても大丈夫です。 理由はパフォーマンス 仕様では “Why are there restrictions on nested rule selectors?” (なぜ入れ子ルールのセレクターには制約があるのか)というコラムみたいなのを用意して説明しています。 例えば padding-left:hover と書かれていたらどうでしょう。まあ混乱しますね。 人でなくてもブラウザーのエンジンが CSS の文法解析を行う際も大変です。そこまで読んだら判断をいったん保留して先読み lookahead を行う必要があるためです。 読んでから、次が ; ならプロパティ(値 hover は無効)、あるいは { なら入れ子になったスタイル定義(要素型 padding-left はおそらくカスタム要素)と判断を確定すること
最近便利なCSSおれおれAdvent Calendar 2023 – 21 日目 長さの単位で、1lh で 1 行分の高さになります。 lh = Line Height です。L の H です。数字の 1 じゃないです。 例 デモ:https://codepen.io/ginpei/pen/eYXOoRv line-height を変えると箱の高さもそれに合わせて変化します。デモの数字いじってみてね。 行数が必要になる line-clamp と一緒に使うの便利そう。 line-clampで複数行の文の省略がちょっと便利 ルート要素の参照 em に対する rem と同様に、lh にも rlh というのがあります。 おしまい 読みづらいね。3lh が “31 H” にしか見えないね……。 仕様はまだ draft 段階みたいです。ブラウザーの実装は一通り済んでます。 参考 デモ:https://
最近便利なCSSおれおれAdvent Calendar 2023 – 20 日目 CSS アニメーションで便利な transform ですが、複数の変形を組み合わせた状態からさらに変形したいとき、transform 全体を総上書きしなくちゃいけなくて管理が面倒でした。 あるいは逆に簡単な変形でも transform プロパティと translate() 関数等を組み合わせて書くのがまあちょっとだけ手間でした。 今は関数じゃなくてプロパティで書けます。 例 デモ:https://codepen.io/ginpei/pen/GRzVbNx .Button { &:is(:hover, :focus) { translate: 0 -1px; } &:active { scale: 0.95; } } たぶん普通は 2 個の値を取り、X と Y の移動量を指定するのが多いかなと思います。 他に
最近便利なCSSおれおれAdvent Calendar 2023 – 19 日目 ブロック要素を中央に寄せるときって margin を auto しますよね。margin: 0 auto だと上下に 0 を指定するのがなんか嫌だなという感じが自分はあるので、margin-left と margin-right を併用して使っていました。欠点は書く量がちょっと多いことです。まあエディターでコピペすれば済むんだけど。 margin-inline を使うとまとめて指定できます。 例 デモ:https://codepen.io/ginpei/pen/ZEwgXjZ 関連プロパティ 想像つくかもですが、左右の “inline” に対応して上下の margin-block というのもあります。動作も想像通り。 また margin を margin-top 等で上下左右へ分解できるのと同様、inline
引数と詳細度 :not(a, b c, d > e + f) のように、カンマ区切りで複数のセレクターを指定できます。 詳細度はその引数で与えられるセレクター群の中で最も高いものになります。:is() と同じです。 なお絶対に該当しないセレクターを指定してむやみやたらと詳細度を上げることもできます。:not(#important #important #super-important) で (3,0,0) とか。やめよう、悪用! おしまい スタイル宣言の順序とかで頑張ることもできるけど、こっちの方が意味が通じて良いんじゃないかな。 参考 :not() – CSS: カスケーディングスタイルシート | MDN
最近便利なCSSおれおれAdvent Calendar 2023 – 15 日目 メディアクエリーを使って切り替える場合ってだいたい画面の幅を見て、広ければパソコン、狭ければスマホ、という判断にしていることが多いかと思います。中間にタブレットを置いたり。 大きさとか配置とかはそれでもまあまあ大丈夫かなとは思うんですが、ユーザー操作(インタラクション)を考えると画面幅に依存するのは本質ではないなあという感じがしますよね。デバイスの特性を見てやりましょう。 例 ホバーで色を変えて強調表示するカード UI です。スマホ等で入力欄に触れるとホバー状態にしても反応してしまうのを制御できます。 デモ:https://codepen.io/ginpei/pen/qBgzRJK
最近便利なCSSおれおれAdvent Calendar 2023 – 17 日目 大きな表ってスクロールするとヘッダーが見えなくて「この値は何だっけ」ってなりますよね。position:sticky が出たときは便利じゃんと思ったのに表には使えませんでした。今は行けます。行こう。 例 デモ:https://codepen.io/ginpei/pen/Exrqxom ヘッダーだけじゃなくて、一番左側の列を固定するのも良いかも。 付与先 <th> に付けるのが普通かなと思うんだけど、<thead> とかに付けてもいいです。 注意 overflow: hidden ではなく overflow: clip を position: sticky を書いても位置が粘着しない場合、だいたい上位に overflow: hidden があるのが原因です。 レイアウトの都合上はみ出すとよろしくないので付けてる
最近便利なCSSおれおれAdvent Calendar 2023 – 14 日目 text-overflow ってあるじゃないですか、文章が長いときに省略するやつ。でもあれ 1 行(横がはみ出したとき)しか使えないんですよね。line-clamp なら複数行の文章でも省略できます。 ただし問題もあります。 例 デモ:https://codepen.io/ginpei/pen/RwvmERN .box { -webkit-box-orient: vertical; -webkit-line-clamp: 3; display: -webkit-box; overflow: hidden; } 名前 使うのは line-clamp じゃなくて -webkit-line-clamp です。仕様書にもそう載っていて現在 Webkit 以外でも使えます。 line-clamp も仕様には載ってはいて
最近便利なCSSおれおれAdvent Calendar 2023 – 13 日目 例えば td と th とか。似たような位置にある似たようなセレクターをまとめて書けるので楽ちんです。 例 デモ:https://codepen.io/ginpei/pen/yLZWJrz .TheTable > :is(thead, tbody) > tr > :is(th, td) { border: 1px solid lightgray; } :is() の詳細度に注意 :is() はその引数で与えられるセレクター群の中で最も詳細度が高いものになります。 例えば :is(a, .b, #c) と書いた場合、詳細度はそれぞれ a が 0,0,1 、 .b は 0,1,0 、 #c は 1,0,0 で、:is() 全体の詳細度は 1,0,0 になります。 これはちょっと注意が必要です。合致する対象ごとじゃ
最近便利なCSSおれおれAdvent Calendar 2023 – 10 日目 ダークモード対応って近年人気じゃないですか。自分はまああんまり興味ないんですが、なんか好きですよねみんな。 prefers-color-scheme を使うとその端末全体の設定を判定できるので、ダークモード、ライトモードの選択肢に「端末の設定に合わせる」を追加することもできます。 例 デモ:https://codepen.io/ginpei/pen/vYbPQBP :root { /* デフォルトでライトモード(あるいはフォールバック) */ --theme--background-color: #f0f0f0; --theme--color: #333; /* 端末がダークモードのとき */ @media (prefers-color-scheme: dark) { --theme--background-
最近便利なCSSおれおれAdvent Calendar 2023 – 08 日目 2 つの要素を左右に並べる場面は結構ありますよね。最上部のナビゲーションバーとか。ほら左端がロゴで右端にメニューみたいな。Flexbox だと簡単です。 例 デモ:https://codepen.io/ginpei/pen/eYxxwKP <nav class="TopNavBar"> <div> <a href="/">Ginpen.com</a> </div> <div> <a href="/about">About</a> <a href="/contact">Contact</a> </div> </nav>
最近便利なCSSおれおれAdvent Calendar 2023 – 06 日目 scroll-behavior でハッシュ付き URL とかでジャンプするときのスクロールをなめらかアニメーションさせることができます。 使い方 デモ:https://codepen.io/ginpei/pen/OJdrqPR JS でのジャンプにも利く scrollTo() 等でスクリプトからスクロールする際にも利きます。楽ちんですね。 ちなみに実行時オプションで CSS の設定を上書きできます。 アニメーション制御はなし ON/OFF だけです。速度とかはブラウザー次第。 あとブラウザーの気分次第で無視しても良いと仕様に書かれています。そうなんだ。 おしまい 昔はみんな頑張って JavaScript で計算してアニメーションさせてましたね。 参考 scroll-behavior – CSS: カスケーディ
最近便利なCSSおれおれAdvent Calendar 2023 – 03 日目 a:focus とか便利なんですよねシリーズもうひとつです。 :focus-visible – キーボードを使ってナビゲーションしているとき(昨日) :focus-within – 自身か子孫要素にフォーカスがあるとき :hover と :focus-within を併用する 例えばカードとか。クリックできる UI 単位でなくても :hover でちょっと外観を変えたいことはまあまあありますよね。 そういう UI がボタンや入力欄といったコントロールを持つときは :focus-within も併用しておくと素敵です。マウスカーソルを外へ持って行ってもフォーカスが残ってる間は :hover と同じ見た目にしておくことができます。 デモ: https://codepen.io/ginpei/pen/eYxQvbR
最近便利なCSSおれおれAdvent Calendar 2023 – 01 日目 CSS 変数こと仕様名カスタムプロパティ custom properties です。 導入当初は割と言及されまくってたように思いますが広く普及した今日こんにちにおいてはなんかもう当たり前に利用されてて言及されない感じすらありますね。 自分も便利に使ってますが、そのひとつの例が UI コンポーネントのサイズ指定です。 デモ:https://codepen.io/ginpei/pen/LYqJajy ここでいうコンテキストは、同じ UI コンポーネントだけど利用場面に応じてちょっと変わるみたいなやつ、のその利用場面のことです。 利用場面に依るプロパティの指定 大小バリエーションを持つボタンを考えます。 HTML 構造はこんなんです。 <button class="Button size--medium">ボタン<
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く