Reactコンポーネントの構造
各Reactコンポーネントがどのような外観であるべきか、私の考え
422
13 分。
SSL規格は、リンクの意味論、アクセシビリティ、および動作ロジックに関する要件を定めています。
<a href="/destination">を使用する。画面遷移を伴わない操作には<button>を使用する。<div>や<span>でリンクを代用しない。リンク本来のセマンティクス、標準のキーボード操作、新しいタブで開く・リンクをコピーするといったブラウザー機能が失われる。title属性は補足情報として使用できるが、意味の分かるリンクテキストの代わりにはならない。利用可能性や表示方法は、端末や操作方法によって異なる。aria-labelでアクセシブルな名前を設定する。画像にはaltも指定する。aria-labelは可視ラベルがない場合に使用し、既存のリンクテキストを不必要に置き換えない。装飾アイコンはスクリーンリーダーから隠す。内部遷移には/aboutのような相対URLを使用できる。外部リソースには完全なURLを指定し、HTTPSが利用可能な場合はhttps://を優先する。
URLは遷移先で採用されている正規形式に合わせる。末尾の/を一律に追加・削除しない。適切な形式はルーティングやサーバー、フレームワークの設定によって異なる。内部URLの形式を統一すると、不要なリダイレクトを避けられる。
<!-- 内部リンク -->
<a href="/about">会社概要</a>
<!-- 外部リンク -->
<a href="https://example.com/pricing">料金</a>href="#contact"のようなフラグメント識別子を使用する。値は遷移先要素の一意なidと一致させる。href、仮の値としてのhref="#"、javascript:スキームは使用しない。画面遷移を伴わない操作にはボタンを使用する。リンクテキストまたは周辺の文脈にファイル形式を示す。ダウンロードの判断に影響する場合はファイルサイズも記載する。
ダウンロードさせるファイルにはdownload属性を使用できる。同一オリジンのリソース、およびblob:・data:スキームで機能する。レスポンスヘッダーやブラウザー設定によって動作が変わる場合があり、外部リソースのダウンロードをこの属性だけで保証することはできない。
<a href="/files/guide.pdf" download>ガイド(PDF、2 MB)</a>:focus-visibleでスタイルを設定できる。ネイティブのoutlineを削除する場合は、同等に視認できる表示で置き換える。idと一致させる。初期状態でリンクを隠す場合は、フォーカス時に十分目立つように表示する。:visited疑似クラスを使うと、現在のブラウザーで開いたことのあるリンクを視覚的に区別できる。内部リンクと外部リンクの両方に適用される。ブラウザーの制限はリンク先の種類ではなく、閲覧履歴の保護を目的としている。:visitedに適用できるスタイルと、スクリプトから状態を読み取る方法を制限している。この状態の表示は任意であり、重要な情報を伝える唯一の方法にしてはならない。リンクと周囲のテキストの違いを色だけで示さない。外部リンクは通常、現在のタブで開く。target="_blank"はユーザー体験上の明確な理由がある場合に限って使用し、新しいタブまたはウィンドウが開くことを事前に示す。
target="_blank"を使用する場合は、rel="noopener"を明示する方法が推奨される。現在のブラウザーでは_blankによって新しいページからwindow.openerへアクセスできないが、明示的な属性により要件が分かりやすくなり、古い実装にも対応できる。
rel="noreferrer"はRefererヘッダーの送信も抑止し、noopenerの動作を含む。参照元情報を送らないことが独立したプライバシー要件である場合に追加し、すべての外部リンクに自動で付けない。
外部リンクを示すアイコンは任意である。リンクテキストの横に配置する装飾アイコンは、アクセシブルネームから除外する。新しいタブを開く場合は、スクリーンリーダー利用者にも伝える。
<a href="https://partner.example" target="_blank" rel="noopener">
パートナーサイト
<span aria-hidden="true">↗</span>
<span class="sr-only">(新しいタブで開きます)</span>
</a>sr-onlyはテキストを視覚的に隠すユーティリティクラスの例である。プロジェクトではデザインシステムに定義された同等のクラスを使用する。
rel値sponsoredは有料・スポンサーリンク、ugcはユーザー生成コンテンツ内のリンクを示す。nofollowはリンク先との関連付けを避けたい場合や検索エンジン向けの追加情報が必要な場合に使用する。rel値はnoopenerの代わりにはならず、window.openerへの対策でもない。通常の外部リンクにnofollowを一律に付ける必要はない。mailto:リンクmailto:スキームを使用する。subjectやbodyなどのURIパラメーターで追加情報を設定できる。%0D%0Aで表す。JavaScriptでURIを生成する場合は、リンク全体ではなく各パラメーターの値をエンコードする。&を&と記述する。リンクは端末に設定されたメールアプリを呼び出すため、アプリの有無や動作をWebサイト側で保証することはできない。tel:リンク発信にはtel:スキームを使用する。hrefには、先頭の+に続けて数字のみを並べた国際形式の正規化番号を指定する方法が推奨される。空白、括弧、ハイフンは含めない。
RFC 3966では電話番号の視覚的な区切り文字が認められているが、SSLでは表記を統一するため、区切り文字を含まない正規化形式を採用する。
例の電話番号はxxx-xxx-xxxのマスクに置き換えている。hrefのtel:[normalized-number]はプレースホルダーであり、実際に使用する前に正規化済みの実番号へ置き換える。表示用のマスクから発信することはできない。
<!-- テンプレート:[normalized-number]を使用前に実番号へ置き換える -->
<a href="tel:[normalized-number]">xxx-xxx-xxx</a>:visitedの状態はスクリプトに依存せず、閲覧履歴を外部に公開しない。リンクの識別に色だけを使用しない。target="_blank"にはnoopenerを指定する。mailto:とtel:の値が正しく記述されている。内部リンク:
<a href="/about">会社概要</a>ページ内セクションへのリンク:
<a href="#contact">お問い合わせ</a>
<section id="contact">...</section>繰り返しナビゲーションをスキップするリンク:
<a class="skip-link" href="#main-content">メインコンテンツへ移動</a>
<main id="main-content">...</main>ダウンロード可能なファイルへのリンク:
<a href="/files/guide.pdf" download>ガイド(PDF、2 MB)</a>同じタブで開く外部リンク:
<a href="https://example.com">組織のWebサイト</a>新しいタブで開くことを伝える外部リンク:
<a href="https://partner.example" target="_blank" rel="noopener">
パートナーサイト
<span aria-hidden="true">↗</span>
<span class="sr-only">(新しいタブで開きます)</span>
</a>件名と本文を設定して2人に送るメール:
<a href="mailto:manager@example.com,ceo@example.com?subject=%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6&body=%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%82%0D%0A%0D%0A%E8%B3%AA%E5%95%8F%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82">
経営チームにメールする
</a>電話リンク(テンプレート):
<!-- テンプレート:[normalized-number]を使用前に実番号へ置き換える -->
<a href="tel:[normalized-number]">xxx-xxx-xxx</a>各Reactコンポーネントがどのような外観であるべきか、私の考え
422
13 分。
SST規格は、タブのセマンティクス、アクセシビリティ、および動作ロジックに関する要件を規定しています
62
11 分。
SSF-U規格は、フルスクリーン表示のセマンティクス、アクセシビリティ、および動作ロジックに関する要件を規定しています
248
3 分。
SSA規格は、アコーディオンのセマンティクス、アクセシビリティ、および動作ロジックに関する要件を定めています
258
4 分。
ウェブデザインにおける致命的なミスの分析。スライダー、自動再生、重いページがコンバージョン率やGoogleでの検索順位を低下させる理由
232
2 分。
SSP規格は、ページネーションのセマンティクス、アクセシビリティ、および動作ロジックに関する要件を規定しています
240
3 分。