ブックマーク / www.tak-dcxi.com (16)

  • line-heightのハーフ・レディングを打ち消す`calc((1em - 1lh) / 2)`をCSS変数に定義しておくとよい – TAKLOG

    lhという単位に見慣れない方もいるかと思われますが、これは現在のline-heightと同じ長さを表す新しく登場した単位です。この例ではline-heightはフォントサイズの1.5倍なので、もし1remが16pxであれば1lhは24pxとなります。 この場合、行の高さと文字の高さの負の差は1em - 1lh、つまり16px - 24pxで-8pxです。それを片方の値を算出するために2で割ると-4pxになります。したがって、margin-block: calc((1em - 1lh) / 2)は、書式のブロック方向(横書き時:上下)にそれぞれハーフ・レディングの大きさ(今回では4px)分のネガティブマージンを設定するということになります。 従来の上下の余白を打ち消す方法との比較lhが登場するまではSassの@mixinなどを使用して以下のような関数を定義し、ハーフ・レディングを打ち消す方法

    line-heightのハーフ・レディングを打ち消す`calc((1em - 1lh) / 2)`をCSS変数に定義しておくとよい – TAKLOG
    emmeleia
    emmeleia 2024/05/29
  • 少しの記述でユーザビリティやアクセシビリティを向上させるHTML/CSSテクニック集 – TAKLOG

    少しの記述・工夫でユーザビリティやアクセシビリティを向上させるHTML/CSSテクニックを独断と偏見で集めてみました。最近クローズドな場所で登壇を行ったのですが、そちらで話した内容を纏めたものにいくつか内容を追加したものとなります。 原則的にこのブログで取り入れられている手法だったり過去の記事で触れた手法を紹介したものです。 button要素には touch-action:manipulation を指定するiOS限定の話ではありますが、button要素をつい連続でタップすると画面が拡大表示されてしまい非常に煩わしいです。 ポストを別枠で表示する そのため、パンおよびズームのジェスチャーは有効にしつつダブルタップ時のズームなどの標準外の追加的なジェスチャーを無効にするtouch-action:manipulationを指定して誤作動を防止しておくと良いでしょう。

    少しの記述でユーザビリティやアクセシビリティを向上させるHTML/CSSテクニック集 – TAKLOG
    emmeleia
    emmeleia 2024/05/18
  • 主題と副題のマークアップにはhgroupを使用する – TAKLOG

    主題と副題のマークアップの方法に関しては度々Xでも話題になっていて、例えば次のポストの返信やリポストを見ると、人によって以下のような様々なアプローチがあることがわかります。 参考:過去に話題になったポスト ポストを別枠で表示する 見出し要素(h1〜h6)の中に主題と副題の両方を含めるこの場合の副題はspanではなくstrongやsmallを使うと言った意見も見られる主題をh1要素でマークアップし、副題は隣接するh2要素を使う疑似要素とcontent:attr()を使って副題を表示するこのブログのトップページでも主題+副題が用いられていて、いくつかのマークアップ方法を検討した結果「hgroupの中に主題のh1要素と副題のp要素を含める」方法を選択しました。

    主題と副題のマークアップにはhgroupを使用する – TAKLOG
    emmeleia
    emmeleia 2024/05/11
  • えっ!?まだ色の指定でrgba()関数を使っているの!? – TAKLOG

    最近次のようなポストをしましたが、主に不透明度を伴う色の指定に現在でもrgba()関数を使用している方が多い印象です。 ポストを別枠で表示する 今年に投稿されているCSS技術記事でもrgba()関数を使用したサンプルコードが散見されますが、現在rgba()関数はレガシーな指定とされています。 rgba()関数使っている人、全員時代に取り残されています過去のCSSでは色を指定する方法の一つとしてrgba()関数が使用されてきました。この関数はRGB値とアルファ値(不透明度)を組み合わせて色を表現するために用いられます。

    えっ!?まだ色の指定でrgba()関数を使っているの!? – TAKLOG
    emmeleia
    emmeleia 2024/05/08
  • テキストを1文字ずつアニメーションさせる時の注意点と実装例 | TAKLOG

    次の実装例のように、テキストを1文字ずつspan要素で区切ってアニメーションする際の注意点と実装例について纏めたメモ書きです。 実装例テキストアニメーションの実装例(英文)

    テキストを1文字ずつアニメーションさせる時の注意点と実装例 | TAKLOG
    emmeleia
    emmeleia 2024/04/25
  • 実装後のチェック項目には「グレースケール表示での確認」を追加したほうがいい | TAKLOG

    グレースケール表示での確認を追加したほうがいい理由アクセシビリティの確保のため色に依存したデザインは、色覚に特性を持つ方や高齢者など、色の見え方に差がある利用者にとって識別が難しくなる場合があります。特に、要素のフォーカス状態やホバー状態の判別を色の変化のみで実装されることが多いですが、利用者によっては要素の状態変化が認識できなくなります。 そういった場合に備えてグレースケール表示でも情報が正しく伝わり、ユーザビリティが損なわれていないことを確認することはアクセシビリティ確保のために重要です。ウェブアクセシビリティの国際的なガイドラインであるWCAGでも適合レベルAの達成基準として定められています。 ただし、一部の色(濃い赤など)はグレースケール表示では確認しにくい場合があります。検証にかかるコストとのバランスを考慮しつつ、色覚特性のタイプごとに見え方をシミュレーションすることも有効かもし

    実装後のチェック項目には「グレースケール表示での確認」を追加したほうがいい | TAKLOG
    emmeleia
    emmeleia 2024/04/24
  • スムーススクロールの実装例 | TAKLOG

    html要素にscroll-behavior:smoothを指定するだけのコストの低さ、それでいて従来のアンカーリンクの機能を損ねないことから「スムーススクロールはCSSのみで十分」といった技術記事やポストが多く広まっています。 ただ、そういった技術記事やポストは「CSSのみで対応できる」「ワンライナーで実装できる」と言ったコストの低さばかりが先行していて、肝心のデメリットには触れていません。 実際、CSSのスムーススクロールには多くの問題点が孕んでいます。 全てのページ内リンクがスムーススクロールされるCSSのscroll-behavior:smoothを使用すると、ページ内の全てのアンカーリンクがスムーススクロールの対象となります。そのため、限定的にスムーススクロールを無効化したいと言った場合は別途JSでの対応が必要となります。 僕のブログではJS無効環境のフォールバックとしてhidd

    スムーススクロールの実装例 | TAKLOG
    emmeleia
    emmeleia 2024/04/16
  • タブやアコーディオンの非表示コンテンツにはhidden="until-found"を使うべし | TAKLOG

    タブやアコーディオンの非表示コンテンツにはdisplay:noneがよく用いられますが、hidden="until-found"を利用するほうがメリットがあります。 hidden=“until-found”で非表示にしたコンテンツはページ内検索でアクセスできるuntil-foundはhidden属性に新たに追加された属性値です。 hidden - HTML: ハイパーテキストマークアップ言語 | MDN 従来のhidden属性とは違い、until-found"属性値を指定した場合はブラウザのページ内検索やページ内リンクでそのコンテンツが検出された場合、自動でhidden属性が取り除かれて表示することができます。 従来のdisplay:noneを使用した非表示ではコンテンツ内にページ内検索でマッチすべきワードがあったとしても検出できませんでしたが、hidden="until-found"を使

    タブやアコーディオンの非表示コンテンツにはhidden="until-found"を使うべし | TAKLOG
    emmeleia
    emmeleia 2024/04/02
  • スクロールバーにまつわるエトセトラ | TAKLOG

    何かで役立つかもしれないスクロールバーのTips。 スクロールバーのCSSの仕様スクロールバーの見た目を変更するCSSには現在2つの方法があります。 W3Cが定めた標準のプロパティを使用する-webkit-ベンダープレフィックスがついたプロパティを使用する2024年3月現在、W3C仕様のプロパティを使用する方法はSafariが、-webkit-ベンダープレフィックスを使用する方法はFirefoxが非対応となっています。 ただし、異なるブラウザ間での動作を統一するための「Interop 2024」というプロジェクトの項目にScrollbar Stylingが追加されたことで、将来的にはSafariもW3Cの標準プロパティをサポートし始め、スクロールバーの見た目を変更する方法はW3Cの標準に統一される可能性が高いです。また、-webkit-ベンダープレフィックスを使用する方法は将来的には廃止さ

    スクロールバーにまつわるエトセトラ | TAKLOG
    emmeleia
    emmeleia 2024/03/24
  • 当ブログのレスポンシブコーディングについて | TAKLOG

    当ブログのレスポンシブコーディング施策のまとめです。 メディアクエリよりもコンテナクエリを優先する前回の記事でも触れたようにメディアクエリを一切使わずレスポンシブコーディングしました。 僕がメディアクエリを使用しなかった理由は以下の点が気になっていたからです。 各コンポーネントの状態変化をウィンドウのサイズに依存させるのは都合が悪い。実装者はウィンドウのサイズとにらめっこしながらデザインを調整する必要があり、非常に面倒。ある程度の的確な位置・間隔でブレイクポイントを用意するコーディングは効率的だが、全ての画面サイズで完璧な表示を実現するのが難しい。必ずどこかしらのサイズで見た目を妥協しないといけなくなってくる。ウィンドウのサイズではなく各コンポーネントのサイズを基準にデザイン調整するなら、どのように配置されるかを細かく考える必要がなくなる。代わりに、それぞれのコンポーネントが含まれるコンテ

    当ブログのレスポンシブコーディングについて | TAKLOG
    emmeleia
    emmeleia 2024/03/23
  • カードの高さを揃えたければsubgridを使えばいい | TAKLOG

    従来の方法では一箇所しかコンテンツの高さを揃えることができないカードの高さを揃える際のアプローチとしてはdisplay:flex; flex-direction:column;もしくはdisplay:grid;を使用した方法が主流かと思われます。 /* カードを横並びする要素 */ .card-wrapper { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; } /* flexを使用した方法 */ .card { display: flex; flex-direction: column; } .card-title { flex: 1; } /* gridを使用した方法 */ .card { display: grid; grid-template-rows: auto auto 1fr auto; /*

    カードの高さを揃えたければsubgridを使えばいい | TAKLOG
    emmeleia
    emmeleia 2024/03/21
  • calc(infinity)の使い道 | TAKLOG

    CSSにおけるinfinityとはCSSのcalc()関数で利用できる無限大(infinity)を扱う値です。 とは言っても至極当たり前ですがinfinityで文字通り無限大の大きさを描いたら大変なことになってしまうので各プロパティで上限はあります。 例えばwidthにcalc(infinity * 1px)を指定した要素の横幅をgetBoundingClientRect().widthで取得すると「33554428」となります。calc(infinity * 1em)でも同様の数値となるのでwidth height margin paddingなどの大きさの上限が33554428pxを超えることはありませんし、後述するz-indexも上限値である2147483647を超えることはありません。 実質的に各プロパティの上限値を取得する値だと考えても差し支えないと思います。 z-indexでの

    calc(infinity)の使い道 | TAKLOG
    emmeleia
    emmeleia 2024/03/20
  • hoverを指定するならany-hoverメディア特性を使いなさい!俺流hover実装例も紹介します | TAKLOG

    タップデバイスでもhoverが動いているWebサイトが多すぎる! hoverを指定するならany-hoverメディア特性を使いなさい前提として、タップデバイスでのhoverアクションは次のようなデメリットから無効化すべきです。 タップデバイスでhoverアクションを用いると、タップ後にhover状態が継続し、UIの予期しない振る舞いやユーザー体験の混乱を招く可能性があるデバイスによってはhoverが指定されている要素はダブルタップしないと反応しない可能性があるタップ操作orポインター操作の区別を行うための方法はいくつかありますが、現在ではhoverメディア特性が全モダンブラウザでサポートされているためこちらを利用しましょう。 /* 🙆‍♂ Recommended */ @media (any-hover: hover) { .button:hover { background-color

    hoverを指定するならany-hoverメディア特性を使いなさい!俺流hover実装例も紹介します | TAKLOG
    emmeleia
    emmeleia 2024/03/19
  • 横スクロールバーの発生源を素早く特定する方法と最新の防止策 | TAKLOG

    横スクロールバーの発生源はデベロッパーツールのConsoleですぐに特定できる横スクロールバーの発生源の特定方法として有名なのは全称セレクタですべての要素にoutlineを付与して確認する方法だと思われますが、次のスクリプトをデベロッパーツールのConsoleに貼り付けて確認したほうが手っ取り早いです。

    横スクロールバーの発生源を素早く特定する方法と最新の防止策 | TAKLOG
    emmeleia
    emmeleia 2024/03/18
  • あなたが教わってるそのCSSテクニックはもう古い | TAKLOG

    Xの初学者のポストにて古の手法を教わっている方をよく見かけるので、2024年現在そのCSSテクニックはもう古いってものをいくつか列挙しました。 ブロックのセンタリングに margin を使うなら margin-inline:auto を使いなさいmarginを使ってブロックのセンタリングを行う際によく教わるのはmargin:0 autoあるいはmargin:autoでしょう。

    あなたが教わってるそのCSSテクニックはもう古い | TAKLOG
    emmeleia
    emmeleia 2024/03/16
  • 【令和最新版】Google Fontsの読み込み最適化の結論 | TAKLOG

    当ブログで行ったGoogle Fontsの読み込み最適化を紹介します。CLSを大幅に改善できたので個人的にはこれが最適解だと思っています。 結論いきなり結論ですが、次のHTMLのhrefの値を使用しているGoogle Fontsのそれに変更し、head内で読み込んでください。 <link rel="preconnect" href="https://fonts.googleapis.com" /> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> <link rel="preload" as="style" fetchpriority="high" href="{href}" /> <link rel="stylesheet" href="{href}" media="print" onload='

    【令和最新版】Google Fontsの読み込み最適化の結論 | TAKLOG
    emmeleia
    emmeleia 2024/03/12
  • 1