Skip to content
fandhe-frontend
GitHub

Link

fandhe-frontend-pre-styled-uilink mod が提供するスタイル済み Link 部品です。素の <a> 要素 1 パーツ(anatomy root)のみで構成する最小部品で、Plain(下線なし)/Underline(常時下線)の 2 variant、現在ページ表示(aria-current="page")、外部リンク(target="_blank" + rel="noopener noreferrer" を不可分に付与)を提供します。ページ遷移を伴う水平ナビが必要な場合は Tab Nav を、文書ナビ(サイドバー用途)が必要な場合は Nav List を使ってください。

関連 API: fandhe-frontend-pre-styled-ui API / fandhe-frontend-headless-ui API

Demo

pre-styled-ui 単独定義の anatomy(data-scope="link")による静的掲示です。Plain(既定・下線なし)/Underline(常時下線)の 2 variant、Current page(aria-current="page")、External link(target="_blank" + rel="noopener noreferrer" を不可分に付与)を並べています。

Features

  • 素の <a> 要素 1 パーツ(anatomy root)のみで構成する最小部品(crates/headless-ui/src/link.rs:16-19)
  • external=true のとき target="_blank" と rel="noopener noreferrer" を不可分に付与する(片方のみを付与できる API は持たない、reverse tabnabbing 対策。crates/headless-ui/src/link.rs:14-19, 84-88)
  • current=true のとき aria-current="page" + data-current を付与する(crates/headless-ui/src/link.rs:21-24, 89-92)
  • Plain(既定・下線なし)/ Underline(常時下線)の 2 variant。current 状態の装飾(フォント太字化)は aria-current="page" を条件にした CSS 状態セレクタで表現し、追加の bool 引数は持たない(crates/pre-styled-ui/src/link.rs:14-19, 98-101)
  • href の URL スキーム検証(javascript: 等の拒否)は core の render() が担う deny-by-default(crates/headless-ui/src/link.rs:41-45)

Anatomy

root

API Reference

Arguments

NameTypeDefaultDescription
href&stra 要素の href(crates/pre-styled-ui/src/link.rs:127)。
externalboolfalsetrue のとき target="_blank" + rel="noopener noreferrer" を付与する(crates/headless-ui/src/link.rs:70-73)。
currentboolfalsetrue のとき aria-current="page" + data-current を付与する(crates/headless-ui/src/link.rs:74-77)。
variantLinkVariantLinkVariant::Plainroot の見た目(Plain/Underline、crates/pre-styled-ui/src/link.rs:44-50)。

Data Attributes

PartAttributeObserved Values
rootdata-current

CSS Variables

VariableDefault
--fandhe-link-text-decorationnone

Examples

Current page と通常リンク

Guides を現在ページ(aria-current="page")とした Underline variant の 2 リンクです。

Accessibility

Keyboard Interactions

KeyDescription
Tab / Shift+Tab素の <a> のブラウザ標準操作でフォーカス移動する。JS ハイドレーション前提の操作は持たない。

WAI-ARIA

AttributeDescription
aria-current="page"(root、current=true のとき)現在ページを示す(crates/headless-ui/src/link.rs:74-77)。
rel="noopener noreferrer"(root、external=true のとき)target="_blank" と不可分に付与し reverse tabnabbing を防ぐ(crates/headless-ui/src/link.rs:14-19)。