English

スライダー

i32 のシグナルを設定するスライダーです。単位を表す値のテキストも付けられます。

実行結果

slider.rs
use hypersig::html::div;
use hypersig::style::Style;
use hypersig::style::value::rem;
use hypersig::{Page, Signals};
use hypersig_ui::Slider;
use serde::{Deserialize, Serialize};

#[derive(Signals, Serialize, Deserialize)]
pub struct Player {
    volume: i32,
}

pub fn page() -> Page<Player> {
    let volume = Player::volume();
    Page::new(
        "プレーヤー",
        Player { volume: 40 },
    )
    .child(
        div().css(Style::new().max_width(rem(20))).child(
            Slider::new(
                "音量",
                volume,
            )
            .step(5)
            .value_text(volume.to_text().concat(" %")),
        ),
    )
}

アクセシビリティ

スライダーはネイティブの <input type="range"> なので、role="slider"、キー操作、ポインタや指でのドラッグはブラウザが用意します。入力欄は透明で、値から描いたトラックとつまみの上に重なっているので、スライダーはどのブラウザでも同じ見た目になります。

value_text は「40 %」のような値をラベルの横に表示し、支援技術には aria-valuetext として渡します。両端の近くでは、描いたつまみがブラウザ自身の透明なつまみから数ピクセルずれることがあります。

キー動作
矢印キー値を 1 ステップ動かします。
Page Up、Page Down値を大きめのステップで動かします。
Home、End最小値か最大値に移ります。

API

項目概要
Slider::newvalue に束縛し、label をラベルに持つ、0 から 100 まで 1 刻みのスライダー
range最小値と最大値を設定します。
step矢印キーを 1 回押したときに値が動く幅を設定します。
value_textラベルの横に text を表示し、支援技術には aria-valuetext として渡します。
disabledwhen が true の間、スライダーを無効にして薄く表示します。