Skip to content
fandhe-frontendcore v0.4.3
GitHub

Carousel

fandhe-frontend-pre-styled-ui の carousel mod が提供するスタイル済み Carousel 部品です。

複数のコンテンツを 1 件ずつ切り替えて表示するナビゲーション部品です。orientation(Horizontal/Vertical)に応じて item-group の移動方向を切り替えます。選択・チェック状態を示す部品ではないため colorPalette 軸は提供しません。ページ送りには Pagination も参照してください。

--fandhe-carousel-item-basis(既定 100%)を root へ設定すると、複数スライドを同時表示できます(shadcn/ui との突合、イシュー #2028)。Demo では垂直方向の実演と、この CSS カスタムプロパティで 3 件同時表示にした実演もあわせて確認できます。

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

Demo

headless-ui の Carousel(role="region" aria-roledescription="carousel")に pre-styled-ui の recipe CSS を適用した静的掲示です。3 スライド中 2 番目(index=1)を現在位置として固定表示しています。--fandhe-carousel-index CSS カスタムプロパティによる transform ベースのスライド位置表現で、JS 計測に依存しません。2 つ目は垂直方向(data-orientation="vertical")の同型実演、3 つ目は --fandhe-carousel-item-basis(イシュー #2028、shadcn/ui の Sizes 例に相当)による複数スライド同時表示の実演です。shadcn/ui の Thumbnails 例に相当する構成は参照ページに存在しないため対象外です。autoplay・ドラッグ操作は本イシューのスコープ外です。

Features

  • orientation(Horizontal/Vertical)に応じて item-group の transform 軸を translateX/translateY に切り替える(crates/pre-styled-ui/src/carousel.rs:390-398)
  • label 引数を root の aria-label へそのまま出力する(carousel.rs:277-318, 321-322)
  • 選択・チェック状態を示す部品ではないため colorPalette 軸を提供しない(carousel.rs テスト carousel_stylesheet_never_consumes_color_palette_axis)
  • --fandhe-carousel-item-basis(既定 100%)を root へ設定すると item の flex-basis と item-group の横方向 transform 係数の両方に反映され、複数スライドの同時表示に対応する(イシュー #2028、shadcn/ui の Sizes 例に相当。carousel.rs の recipe() item/item-group base)

Anatomy

root
  control
    prev-trigger
    item-group
      item
    next-trigger
  indicator-group
    indicator

API Reference

Arguments

NameTypeDefaultDescription
orientationOrientationHorizontalスクロール方向(carousel.rs:277-318)。
label&str(必須)root の aria-label に渡すラベル(carousel.rs:277-318, 321-322)。

Data Attributes

PartAttributeObserved Values
controldata-orientationhorizontal, vertical
indicatordata-current(値なし)
indicatordata-index0, 1, 2, 3, 4
indicatordata-orientationhorizontal, vertical
indicator-groupdata-orientationhorizontal, vertical
itemdata-current(値なし)
itemdata-index0, 1, 2, 3, 4
itemdata-inview(値なし)
itemdata-orientationhorizontal, vertical
item-groupdata-orientationhorizontal, vertical
next-triggerdata-orientationhorizontal, vertical
prev-triggerdata-disabled(値なし)
prev-triggerdata-orientationhorizontal, vertical
rootdata-orientationhorizontal, vertical

CSS Variables

VariableDefault
--fandhe-carousel-height20rem
--fandhe-carousel-index0
--fandhe-carousel-indicator-size0.5rem
--fandhe-carousel-item-basis100%
--fandhe-carousel-transition-durationvar(--fandhe-motion-duration-normal, 200ms)
--fandhe-carousel-trigger-size2.5rem

Examples

Root only

aria-label="Products" を持つ Carousel root の最小構成例です。

Accessibility

WAI-ARIA

AttributeDescription
aria-label(root、呼び出し側必須引数)root へそのまま出力される(carousel.rs:277-318, 321-322)。