目次
よく使うコンポーネント
ボタン
| クラス名 | 用途 | 使用例 |
|---|---|---|
wf-btn |
ベースボタン | <button class="wf-btn">ボタン</button> |
wf-btn-primary |
プライマリーボタン |
<button class="wf-btn wf-btn-primary">実行</button>
|
wf-btn-outline |
アウトラインボタン |
<button class="wf-btn wf-btn-outline">詳細</button>
|
wf-btn-danger |
危険な操作 | <button class="wf-btn wf-btn-danger">削除</button> |
wf-btn-sm |
小サイズ | <button class="wf-btn wf-btn-sm">小</button> |
wf-btn-lg |
大サイズ | <button class="wf-btn wf-btn-lg">大</button> |
is-loading |
読み込み中状態 |
<button class="wf-btn is-loading">処理中...</button>
|
カード
| クラス名 | 用途 | 使用例 |
|---|---|---|
wf-card |
ベースカード | <div class="wf-card">コンテンツ</div> |
wf-card-washi |
和紙風カード | <div class="wf-card wf-card-washi">和風</div> |
フォーム
| クラス名 | 用途 | 使用例 |
|---|---|---|
wf-input |
テキスト入力 | <input type="text" class="wf-input"> |
wf-textarea |
テキストエリア | <textarea class="wf-textarea"></textarea> |
wf-select |
セレクトボックス |
<select class="wf-select"><option>選択</option></select>
|
wf-checkbox |
チェックボックス | <input type="checkbox" class="wf-checkbox"> |
wf-radio |
ラジオボタン | <input type="radio" class="wf-radio"> |
wf-label |
ラベル | <label class="wf-label">名前</label> |
is-invalid |
エラー状態 | <input class="wf-input is-invalid"> |
アラート・トースト
| クラス名 | 用途 | 使用例 |
|---|---|---|
wf-alert |
アラートボックス | <div class="wf-alert">お知らせ</div> |
wf-alert-success |
成功メッセージ | <div class="wf-alert wf-alert-success">成功</div> |
wf-alert-warning |
警告メッセージ | <div class="wf-alert wf-alert-warning">警告</div> |
wf-alert-danger |
エラーメッセージ | <div class="wf-alert wf-alert-danger">エラー</div> |
wf-toast |
トースト通知 | <div class="wf-toast">通知</div> |
wf-toast--success |
成功トースト |
<div class="wf-toast wf-toast--success">保存しました</div>
|
wf-toast--warning |
警告トースト | <div class="wf-toast wf-toast--warning">注意</div> |
wf-toast--danger |
エラートースト | <div class="wf-toast wf-toast--danger">失敗</div> |
アラート詳細サンプル
重要な情報や状態を表示するメッセージコンポーネントです。
これは標準のアラートメッセージです。
操作が正常に完了しました。
注意が必要な操作です。
エラーが発生しました。もう一度お試しください。
<div class="wf-alert wf-alert-success">
<strong>成功</strong><br>
操作が正常に完了しました。
</div>
トースト詳細サンプル
一時的な通知を表示するコンポーネントです。画面隅に表示され、自動的に消滅させることができます。
<div class="wf-toast wf-toast--success">
<div class="wf-toast__content">
<div class="wf-toast__title">保存完了</div>
データが正常に保存されました
</div>
<button class="wf-toast__close">×</button>
</div>
ヘッダー
| クラス名 | 用途 | 使用例 |
|---|---|---|
wf-header |
デフォルトヘッダー(暖簾風) | <header class="wf-header"><h1>タイトル</h1></header> |
wf-header--no-stripe |
ストライプなしヘッダー | <header class="wf-header wf-header--no-stripe">...</header> |
wf-header-noren |
暖簾風ヘッダー(エイリアス) | <header class="wf-header-noren">...</header> |
ヘッダー詳細
.wf-headerは墨色グラデーション背景とテーマカラーストライプ装飾を持つ暖簾(のれん)風デザインがデフォルトです。
日本の伝統的な店舗の暖簾をモチーフにしており、和風の雰囲気を演出します。
- 墨色(
--wf-sumi)のグラデーション背景 - 下部にテーマカラーのストライプ装飾(
::after疑似要素) - テーマ変更に自動対応(
var(--wf-color-accent)使用) - 中央揃えテキスト、2remの上下パディング
<!-- デフォルト(暖簾風) -->
<header class="wf-header">
<h1>wafoo-css</h1>
<p>和風CSSフレームワーク</p>
</header>
<!-- ストライプなし -->
<header class="wf-header wf-header--no-stripe">
<h1>シンプルヘッダー</h1>
</header>
<!-- エイリアス(後方互換) -->
<header class="wf-header-noren">
<h1>暖簾ヘッダー</h1>
</header>
注: .wf-header-norenは.wf-headerのエイリアスで、後方互換性のために維持されています。
新規プロジェクトでは.wf-headerの使用を推奨します。
ナビゲーション
| クラス名 | 用途 | 使用例 |
|---|---|---|
wf-navbar |
ナビゲーションバー | <nav class="wf-navbar">...</nav> |
wf-navbar-brand |
ブランドロゴ/タイトル | <a class="wf-navbar-brand">wafoo</a> |
wf-navbar-nav |
ナビゲーションリスト | <ul class="wf-navbar-nav">...</ul> |
wf-nav-item |
ナビゲーション項目 | <li class="wf-nav-item">...</li> |
wf-nav-link |
ナビゲーションリンク | <a class="wf-nav-link">リンク</a> |
wf-hamburger |
ハンバーガーメニュー | <button class="wf-hamburger">...</button> |
wf-hamburger__line |
ハンバーガーの線 | <span class="wf-hamburger__line"></span> |
wf-navbar-primary |
プライマリバリアント(テーマカラー) | <nav class="wf-navbar wf-navbar-primary">...</nav> |
is-active |
アクティブ状態 | <a class="wf-nav-link is-active">現在地</a> |
ナビバーバリアント
.wf-navbar-primaryバリアントを追加すると、テーマのプライマリカラー(--wf-primary-bg)を背景色として使用します。
テーマクラス(theme-sakura、theme-koubaiなど)と組み合わせることで、自動的にテーマカラーに対応したナビバーを作成できます。
<!-- デフォルト(白背景) -->
<nav class="wf-navbar">
<a class="wf-navbar-brand" href="#">ブランド</a>
<ul class="wf-navbar-nav">
<li class="wf-nav-item"><a class="wf-nav-link is-active">ホーム</a></li>
</ul>
</nav>
<!-- プライマリバリアント(テーマカラー背景) -->
<nav class="wf-navbar wf-navbar-primary">
<a class="wf-navbar-brand" href="#">ブランド</a>
<ul class="wf-navbar-nav">
<li class="wf-nav-item"><a class="wf-nav-link is-active">ホーム</a></li>
</ul>
</nav>
モバイル対応
ナビバーはモバイルファースト設計により、デフォルトでモバイル端末に対応しています(768px以下で自動調整):
- ハンバーガーなし: ナビゲーション項目が自動的に縦並びになります
- ハンバーガーあり: サイドドロワー形式のメニューになります(JavaScriptでトグル制御が必要)
ハンバーガーメニュー詳細サンプル
モバイル対応のナビゲーションメニューです。ハンバーガーアイコンはモバイル(768px以下)で自動表示されます。
<nav class="wf-navbar">
<a class="wf-navbar-brand" href="#">ブランド</a>
<button class="wf-hamburger" aria-label="メニュー" aria-expanded="false" aria-controls="main-nav">
<span class="wf-hamburger__line"></span>
<span class="wf-hamburger__line"></span>
<span class="wf-hamburger__line"></span>
</button>
<ul id="main-nav" class="wf-navbar-nav">
<li class="wf-nav-item"><a class="wf-nav-link is-active">ホーム</a></li>
<li class="wf-nav-item"><a class="wf-nav-link">ドキュメント</a></li>
<li class="wf-nav-item"><a class="wf-nav-link">お問い合わせ</a></li>
</ul>
</nav>
<script>
// JavaScript で開閉を制御
const hamburger = document.querySelector('.wf-hamburger');
const navMenu = document.querySelector('.wf-navbar-nav');
hamburger.addEventListener('click', () => {
hamburger.classList.toggle('is-active');
navMenu.classList.toggle('is-open');
const isOpen = navMenu.classList.contains('is-open');
hamburger.setAttribute('aria-expanded', isOpen);
});
</script>
モーダル
| クラス名 | 用途 | 使用例 |
|---|---|---|
wf-modal-overlay |
モーダルオーバーレイ | <div class="wf-modal-overlay">...</div> |
wf-modal |
モーダル本体 | <div class="wf-modal">...</div> |
wf-modal-sm |
小サイズモーダル | <div class="wf-modal wf-modal-sm">...</div> |
wf-modal-lg |
大サイズモーダル | <div class="wf-modal wf-modal-lg">...</div> |
wf-modal__header |
モーダルヘッダー | <div class="wf-modal__header">...</div> |
wf-modal__title |
モーダルタイトル | <h2 class="wf-modal__title">タイトル</h2> |
wf-modal__body |
モーダル本文 | <div class="wf-modal__body">...</div> |
wf-modal__footer |
モーダルフッター | <div class="wf-modal__footer">...</div> |
wf-modal__close |
閉じるボタン | <button class="wf-modal__close">×</button> |
is-open |
開いた状態 | <div class="wf-modal-overlay is-open">...</div> |
動作デモ
以下のボタンをクリックすると、デモ用のモーダルが開きます(テスト用)。
テーブル
| クラス名 | 用途 | 使用例 |
|---|---|---|
wf-table |
ベーステーブル | <table class="wf-table">...</table> |
wf-table-striped |
ストライプテーブル |
<table class="wf-table wf-table-striped">...</table>
|
wf-table-bordered |
ボーダー付き |
<table class="wf-table wf-table-bordered">...</table>
|
wf-table-hover |
ホバー効果 | <table class="wf-table wf-table-hover">...</table> |
CSS変数リファレンス
全87個のCSS変数の詳細なリファレンスは、専用ページをご覧ください。
CSS変数リファレンスを見る視覚的なプレビュー付きで、カラー、スペーシング、タイポグラフィ、アニメーション、ブレークポイントなどを確認できます。
ユーティリティクラス
スペーシング
| クラス名 | 用途 | 値 |
|---|---|---|
wf-m-{0,2,4,6,8,10,12} |
全方向マージン | 0, 8px, 16px, 24px, 32px, 40px, 48px |
wf-mt-{0,2,4,6,8,10,12} |
マージントップ | 0, 8px, 16px, 24px, 32px, 40px, 48px |
wf-mr-{0,2,4,6,8,10,12} |
マージンライト | 0, 8px, 16px, 24px, 32px, 40px, 48px |
wf-mb-{0,2,4,6,8,10,12} |
マージンボトム | 0, 8px, 16px, 24px, 32px, 40px, 48px |
wf-ml-{0,2,4,6,8,10,12} |
マージンレフト | 0, 8px, 16px, 24px, 32px, 40px, 48px |
wf-mx-{0,2,4,6,8,10,12} |
左右マージン | 0, 8px, 16px, 24px, 32px, 40px, 48px |
wf-my-{0,2,4,6,8,10,12} |
上下マージン | 0, 8px, 16px, 24px, 32px, 40px, 48px |
wf-p-{0,2,4,6,8,10,12} |
全方向パディング | 0, 8px, 16px, 24px, 32px, 40px, 48px |
wf-pt-{0,2,4,6,8,10,12} |
パディングトップ | 0, 8px, 16px, 24px, 32px, 40px, 48px |
wf-pr-{0,2,4,6,8,10,12} |
パディングライト | 0, 8px, 16px, 24px, 32px, 40px, 48px |
wf-pb-{0,2,4,6,8,10,12} |
パディングボトム | 0, 8px, 16px, 24px, 32px, 40px, 48px |
wf-pl-{0,2,4,6,8,10,12} |
パディングレフト | 0, 8px, 16px, 24px, 32px, 40px, 48px |
wf-px-{0,2,4,6,8,10,12} |
左右パディング | 0, 8px, 16px, 24px, 32px, 40px, 48px |
wf-py-{0,2,4,6,8,10,12} |
上下パディング | 0, 8px, 16px, 24px, 32px, 40px, 48px |
wf-gap-{0,2,4,6,8,10,12} |
Flexbox/Grid gap | 0, 8px, 16px, 24px, 32px, 40px, 48px |
テキスト
| クラス名 | 用途 |
|---|---|
wf-text-xs |
極小テキスト |
wf-text-sm |
小さいテキスト |
wf-text-md |
中サイズテキスト |
wf-text-lg |
大きいテキスト |
wf-text-xl |
特大テキスト |
wf-text-muted |
薄いテキスト色 |
wf-text-left |
左揃え |
wf-text-center |
中央揃え |
wf-text-right |
右揃え |
wf-text-justify |
両端揃え |
wf-font-bold |
太字(font-weight: 700) |
表示
| クラス名 | 用途 |
|---|---|
wf-hidden |
非表示 |
wf-block |
ブロック表示 |
wf-inline-block |
インラインブロック |
wf-flex |
フレックス表示 |
wf-grid |
グリッド表示 |
アクセシビリティ
| クラス名 | 用途 |
|---|---|
wf-sr-only |
スクリーンリーダー専用(視覚的に非表示) |
Gridレイアウト
| クラス名 | 用途 |
|---|---|
wf-grid-cols-1 |
1列グリッド |
wf-grid-cols-2 |
2列グリッド |
wf-grid-cols-3 |
3列グリッド |
wf-grid-cols-4 |
4列グリッド |
wf-grid-cols-6 |
6列グリッド |
wf-grid-cols-12 |
12列グリッド |
全コンポーネント一覧
レイアウト
-
コンテナ
(
.wf-container) - コンテンツ幅制限 -
グリッド
(
.wf-grid) - CSS Grid レイアウト
ナビゲーション
-
ナビバー
(
.wf-navbar) - ナビゲーションバー -
ハンバーガーメニュー
(
.wf-hamburger) - モバイルメニュー -
ヘッダー
(
.wf-header) - 暖簾風デザインのヘッダー -
ブレッドクラム
(
.wf-breadcrumb) - パンくずリスト -
ステップ
(
.wf-steps) - 進捗ステップ -
タブ
(
.wf-tablist,.wf-tab) - タブナビゲーション
コンテンツ
-
カード
(
.wf-card) - コンテンツカード -
和紙カード
(
.wf-card-washi) - 和紙風カード -
アコーディオン
(
.wf-accordion) - 折りたたみコンテンツ -
判子(スタンプ)
(
.wf-stamp) - 和風スタンプ
フォーム
-
入力フィールド
(
.wf-input) - テキスト入力 -
テキストエリア
(
.wf-textarea) - 複数行入力 -
セレクト
(
.wf-select) - ドロップダウン選択 -
チェックボックス
(
.wf-checkbox) - チェックボックス -
ラジオボタン
(
.wf-radio) - ラジオボタン -
スイッチ
(
.wf-switch) - トグルスイッチ -
ラベル
(
.wf-label) - フォームラベル
ボタン・インタラクション
-
ボタン
(
.wf-btn) - ボタン各種 -
バッジ
(
.wf-badge) - バッジ・ラベル
フィードバック
-
アラート
(
.wf-alert) - アラートメッセージ -
トースト
(
.wf-toast) - トースト通知 -
モーダル
(
.wf-modal) - モーダルダイアログ -
オフキャンバス
(
.wf-offcanvas) - サイドパネル -
ツールチップ
(
.wf-tooltip) - ツールチップ -
ポップオーバー
(
.wf-popover) - ポップオーバー
データ表示
-
テーブル
(
.wf-table) - データテーブル -
リストグループ
(
.wf-list-group,.wf-list-item) - リスト表示 -
スケジュール
(
.wf-schedule) - スケジュール表示 -
カレンダー
(
.wf-calendar) - カレンダー表示
その他
-
ドロップダウン
(
.wf-dropdown) - ドロップダウンメニュー -
ディバイダー
(
.wf-divider) - 区切り線 -
スピナー
(
.wf-spinner) - ローディングスピナー
追加コンポーネント詳細
コードブロック
| クラス名 | 用途 |
|---|---|
wf-code |
インラインコード |
wf-code-block |
コードブロック(複数行) |
wf-kbd |
キーボードキー表示 |
アバター
| クラス名 | 用途 |
|---|---|
wf-avatar |
アバター(32px) |
wf-avatar-sm |
小サイズ(24px) |
wf-avatar-lg |
大サイズ(48px) |
wf-avatar-square |
四角形 |
wf-avatar-status |
ステータスドット付き |
プログレスバー
| クラス名 | 用途 |
|---|---|
wf-progress |
プログレスバー(12px) |
wf-progress-sm |
小サイズ(8px) |
wf-progress-lg |
大サイズ(16px) |
wf-progress-success |
成功色(緑) |
wf-progress-warning |
警告色(黄) |
wf-progress-danger |
エラー色(赤) |
ページネーション
| クラス名 | 用途 |
|---|---|
wf-pagination |
ページネーションコンテナ |
wf-page-link |
ページリンク |
.is-active |
アクティブページ |
.is-disabled |
無効状態 |
ドロップダウン
| クラス名 | 用途 |
|---|---|
wf-dropdown |
ドロップダウンコンテナ |
wf-dropdown__toggle |
トグルボタン |
wf-dropdown__menu |
ドロップダウンメニュー |
wf-dropdown__item |
メニューアイテム |
.is-open |
開いた状態 |
オフキャンバス
| クラス名 | 用途 |
|---|---|
wf-offcanvas-overlay |
背景オーバーレイ |
wf-offcanvas |
オフキャンバスパネル |
wf-offcanvas-start |
左から表示 |
wf-offcanvas-end |
右から表示 |
wf-offcanvas-top |
上から表示 |
wf-offcanvas-bottom |
下から表示 |
.is-open |
開いた状態 |
バッジ
| クラス名 | 用途 |
|---|---|
wf-badge |
バッジ(標準) |
wf-badge-success |
成功バッジ(緑) |
wf-badge-warning |
警告バッジ(黄) |
wf-badge-danger |
エラーバッジ(赤) |
評価
星評価コンポーネント。整数評価と0.5刻みの半星評価に対応。
| クラス名 | 説明 |
|---|---|
wf-rating |
評価コンテナ(ベース) |
wf-rating__star |
個別の星 |
wf-rating__star.is-filled |
塗りつぶし星 |
wf-rating__star.is-half |
半星表示 |
wf-rating__value |
評価値テキスト |
wf-rating-sm |
小サイズ(14px) |
wf-rating-lg |
大サイズ(20px) |
wf-rating.is-interactive |
インタラクティブ版(クリック可能) |
wf-rating.is-disabled |
無効状態 |
基本的な使用例
<!-- 4つ星評価 -->
<div class="wf-rating">
<span class="wf-rating__star is-filled" aria-hidden="true">◆</span>
<span class="wf-rating__star is-filled" aria-hidden="true">◆</span>
<span class="wf-rating__star is-filled" aria-hidden="true">◆</span>
<span class="wf-rating__star is-filled" aria-hidden="true">◆</span>
<span class="wf-rating__star" aria-hidden="true">◆</span>
<span class="wf-rating__value" aria-label="評価: 5つ星中4">4.0</span>
</div>
<!-- 半星評価 -->
<div class="wf-rating">
<span class="wf-rating__star is-filled" aria-hidden="true">◆</span>
<span class="wf-rating__star is-filled" aria-hidden="true">◆</span>
<span class="wf-rating__star is-filled" aria-hidden="true">◆</span>
<span class="wf-rating__star is-half" aria-hidden="true">◆</span>
<span class="wf-rating__star" aria-hidden="true">◆</span>
<span class="wf-rating__value">3.5</span>
</div>
<!-- サイズバリエーション -->
<div class="wf-rating wf-rating-sm">...</div> <!-- 小 -->
<div class="wf-rating">...</div> <!-- 標準 -->
<div class="wf-rating wf-rating-lg">...</div> <!-- 大 -->
インタラクティブ評価(JavaScript必要)
整数評価(1-5)の実装例:
<div class="wf-rating is-interactive" role="radiogroup" aria-label="評価を選択">
<input type="radio" name="rating" value="1" class="wf-rating__input">
<span class="wf-rating__star" role="radio" aria-checked="false"
aria-label="1つ星" tabindex="0" data-value="1">◆</span>
<input type="radio" name="rating" value="2" class="wf-rating__input">
<span class="wf-rating__star" role="radio" aria-checked="false"
aria-label="2つ星" tabindex="-1" data-value="2">◆</span>
<!-- ...5つ星まで繰り返し... -->
<span class="wf-rating__value">未評価</span>
</div>
半星評価(0.5-5.0)の実装例:
<div class="wf-rating is-interactive" id="half-rating" role="radiogroup">
<input type="radio" name="rating-half" value="0.5" class="wf-rating__input">
<input type="radio" name="rating-half" value="1" class="wf-rating__input">
<span class="wf-rating__star" role="radio" aria-label="1つ星"
tabindex="0" data-index="1">◆</span>
<input type="radio" name="rating-half" value="1.5" class="wf-rating__input">
<input type="radio" name="rating-half" value="2" class="wf-rating__input">
<span class="wf-rating__star" role="radio" aria-label="2つ星"
tabindex="-1" data-index="2">◆</span>
<!-- ...5つ星まで繰り返し... -->
<span class="wf-rating__value">未評価</span>
</div>
<script>
// 星の左半分クリック = 0.5、右半分クリック = 1.0
document.querySelectorAll('#half-rating .wf-rating__star').forEach(star => {
star.addEventListener('click', function(e) {
const rect = this.getBoundingClientRect();
const clickX = e.clientX - rect.left;
const starIndex = parseInt(this.dataset.index);
const isLeftHalf = clickX < rect.width / 2;
const value = isLeftHalf ? starIndex - 0.5 : starIndex;
// 評価値を更新する処理...
});
});
</script>
詳細な実装例は
examples/rating.html
を参照してください。
テーマ
wafoo-cssには10種類の和風カラーテーマが用意されています。
| クラス名 | テーマ名 | 由来 |
|---|---|---|
theme-sakura |
桜 | 春の桜色 |
theme-koubai |
紅梅 | 紅梅の花色 |
theme-moe |
萌黄 | 春の新芽色 |
theme-kiku |
菊 | 菊の花色 |
theme-koori |
氷 | 氷の透明感 |
theme-yanagi |
柳 | 柳の葉色 |
theme-momiji |
紅葉 | 秋の紅葉色 |
theme-fuji |
藤 | 藤の花色 |
theme-uguisu |
鶯 | 鶯の羽色 |
theme-yuki |
雪 | 雪の白さ |
使用方法:
<body class="theme-sakura">
<!-- コンテンツ -->
</body>
アクセシビリティ&JavaScript初期化
自動初期化(推奨)
wafoo.jsを読み込むと、
data-wf-*
属性を持つ要素が自動的に初期化されます:
| コンポーネント | データ属性 | 必要なARIA属性 |
|---|---|---|
| ツールチップ | data-wf-tooltip="tip-id" |
自動設定 |
| ポップオーバー | data-wf-popover="popover-id" |
role="dialog"
、
aria-labelledby
|
| モーダル | data-wf-modal="modal-id" |
role="dialog"
、
aria-modal="true"
|
| オフキャンバス | data-wf-offcanvas="oc-id" |
role="dialog" |
| タブ | data-wf-tabs |
role="tablist"
、
role="tab"
、
role="tabpanel"
|
| カレンダー | data-wf-calendar |
role="grid"
、
aria-label
|
| スケジュール | data-wf-schedule |
role="application"
、
aria-label
|
使用例
ツールチップ
<button data-wf-tooltip="tip-1">ホバーしてください</button>
<div id="tip-1" class="wf-tooltip" hidden>ツールチップの内容</div>
モーダル
<button data-wf-modal="modal-1">開く</button>
<div id="modal-1" class="wf-modal-overlay" hidden>
<div class="wf-modal" role="dialog" aria-modal="true" aria-labelledby="modal-title">
<h2 id="modal-title">タイトル</h2>
<p>内容</p>
<button class="wf-modal__close">閉じる</button>
</div>
</div>
タブ(ARIAパターン)
<div class="wf-tablist" role="tablist" data-wf-tabs>
<button class="wf-tab" role="tab" aria-selected="true" aria-controls="panel-1">タブ1</button>
<button class="wf-tab" role="tab" aria-selected="false" aria-controls="panel-2">タブ2</button>
</div>
<div id="panel-1" class="wf-tabpanel" role="tabpanel">内容1</div>
<div id="panel-2" class="wf-tabpanel" role="tabpanel" hidden>内容2</div>
動作デモ
以下のタブをクリックして切り替えてください(テスト用)。
タブ1の内容です。これはテスト用のタブパネルです。
タブ2の内容です。正常に切り替わっています。
手動初期化(高度な使用)
動的に生成された要素には、WFUIオブジェクトを直接使用できます:
// ツールチップ
WFUI.tooltip(triggerElement, tooltipElement);
// モーダル
WFUI.modal(triggerButton, overlayElement);
// タブ
WFUI.tabs(containerElement);
// カレンダー
WFUI.calendar(containerElement, { selectedDate: '2025-11-10' });
// スケジュール
WFUI.schedule(containerElement, { mode: 'daily', timeInterval: 60 });
使用上の注意
スケジュールコンポーネント
日付選択後に表示される要素(時間レンジ選択、時間刻み選択など)は、初期状態で
display: none
または
hidden
属性を設定してください。日付が選択されるまでこれらの要素を非表示にすることで、より良いユーザー体験を提供できます。
<!-- 日付選択後に表示される要素 -->
<div id="schedule-time-interval-wrapper" style="display: none;">
<!-- 時間レンジや時間刻みの選択UI -->
</div>
<script>
// 日付選択時に表示制御
function updateScheduleVisibility() {
const hasDate = dateInput && dateInput.value;
const wrapper = document.getElementById('schedule-time-interval-wrapper');
if (wrapper) {
wrapper.style.display = hasDate ? 'block' : 'none';
}
}
</script>
デモページでのフォーム使用
デモページやサンプルでフォームコンポーネントを使用する際は、ページ遷移を防ぐため
onsubmit
イベントで
preventDefault()
を呼び出してください。実際のアプリケーションでは、適切なフォーム送信処理を実装してください。
<form onsubmit="event.preventDefault(); return false;">
<!-- フォーム要素 -->
<button type="submit" class="wf-btn wf-btn-primary">送信</button>
</form>
キーボード対応
- Esc : モーダル/ポップオーバー/ツールチップを閉じる
- Tab : フォーカストラップ(モーダル/オフキャンバス内)
- 矢印キー : タブ、ドロップダウン、カレンダーのナビゲーション
- Enter/Space : ボタンの実行、選択の確定
- Home/End : タブの最初/最後へ移動
スクリーンリーダー対応
-
ソート可能テーブル:
aria-liveリージョンで並び替えを通知 -
タブ:
aria-selectedで現在のタブを示す -
モーダル:背景に
aria-hidden="true"を自動設定 - フォーカス管理:開閉時に前のフォーカス位置を保存・復元