Range Slider Vue Component (レンジスライダー)

    Range Slider Vueコンポーネントは、Range Sliderコンポーネントを表します。

    Range Slider コンポーネント

    以下のコンポーネントが含まれています。

    • f7-range

    レンジスライダーのプロパティ

    PropTypeDefaultDescription
    <f7-range> properties
    initbooleantrueレンジスライダの初期化
    valuenumber
    array
    string
    レンジスライダの値。デュアルレンジスライダの場合は、配列でなければなりません。
    minnumber
    string
    最小値
    maxnumber
    string
    最大値
    stepnumber
    string
    1値の間の最小ステップ
    labelbooleanfalseレンジスライダのノブの周りにラベルを表示
    dualbooleanfalseデュアルレンジスライダを有効にする
    verticalbooleanfalse垂直方向のレンジスライダを有効にする
    vertical-reversedbooleanfalse垂直方向のレンジスライダを反転させます。(vertical:true の場合のみ)
    draggable-barbooleantrue有効にすると、レンジバーのクリックやスワイプでレンジスライダーを操作することができます(値の変更)。
    format-labelfunction(value)メソッドはフォーマットされたレンジノブのラベルテキストを返さなければなりません。引数として、ラベルの値を受け取ります。
    scalebooleanfalseレンジスライダーのスケールを有効にする
    scale-stepsnumber5スケールのステップ数
    scale-sub-stepsnumber0スケールのサブステップの数(各ステップはこの値で分割されます
    format-scale-labelfunction (value)メソッドはフォーマットされたスケール値を返さなければならない。引数として、現在のスケールステップ値を受け取ります。このメソッドは、各スケールステップごとに呼び出されます。
    limit-knob-positionbooleanノブの位置をレンジバーの大きさに制限します。デフォルトでは、iOSテーマから有効になっています。
    disabledbooleanfalse範囲スライダを無効にするかどうかを定義します。
    idstringレンジスライダーの要素ID属性
    inputbooleanfalse有効にすると、input type="range" 要素を内部にもレンダリングします。
    input-idstring入力要素のID属性
    namestring入力要素の "name "属性

    レンジスライダーのイベント

    EventDescription
    <f7-range> events
    range:changeレンジスライダーの値が変更されるとイベントが発生します。
    range:changedスライダーの値が変更された後、スライダーのノブが離されるとイベントが発生します。

    ステッパーのvモデル

    f7-rangeコンポーネントは、valueプロップでv-modelをサポートしています。

    <template>
      <p>Value is {{ count }}</p>
      ...
      <f7-range
        :min="0"
        :max="100"
        :step="1"
        v-model:value="count"
      />
      ...
    </template>
    <script>
      export default {
        data() {
          count: 50,
        },
        ...
      };
    </script>
    

    Examples

    <template>
    <f7-page>
      <f7-navbar title="Range Slider"></f7-navbar>
      <f7-block-title>Volume</f7-block-title>
      <f7-list simple-list>
        <f7-list-item>
          <f7-list-item-cell
            class="flex-shrink-0"
            :style="{ width: theme.ios ? '28px' : theme.md ? '24px' : '18px' }"
          >
            <f7-icon
              ios="f7:speaker_fill"
              aurora="f7:speaker_fill"
              md="material:volume_mute"
            ></f7-icon>
          </f7-list-item-cell>
          <f7-list-item-cell class="flex-shrink-3">
            <f7-range :min="0" :max="100" :step="1" :value="10" />
          </f7-list-item-cell>
          <f7-list-item-cell
            class="flex-shrink-0"
            :style="{ width: theme.ios ? '28px' : theme.md ? '24px' : '18px' }"
          >
            <f7-icon
              ios="f7:speaker_3_fill"
              aurora="f7:speaker_3_fill"
              md="material:volume_up"
            ></f7-icon>
          </f7-list-item-cell>
        </f7-list-item>
      </f7-list>
    
      <f7-block-title>Brightness</f7-block-title>
      <f7-list simple-list>
        <f7-list-item>
          <f7-list-item-cell
            class="flex-shrink-0"
            :style="{ width: theme.ios ? '28px' : theme.md ? '24px' : '18px' }"
          >
            <f7-icon ios="f7:sun_min" aurora="f7:sun_min" md="material:brightness_low"></f7-icon>
          </f7-list-item-cell>
          <f7-list-item-cell class="flex-shrink-3">
            <f7-range :min="0" :max="100" :step="1" :value="50" :label="true" color="orange" />
          </f7-list-item-cell>
          <f7-list-item-cell
            class="flex-shrink-0"
            :style="{ width: theme.ios ? '28px' : theme.md ? '24px' : '18px' }"
          >
            <f7-icon
              ios="f7:sun_max_fill"
              aurora="f7:sun_max_fill"
              md="material:brightness_high"
            ></f7-icon>
          </f7-list-item-cell>
        </f7-list-item>
      </f7-list>
    
      <f7-block-title class="display-flex justify-content-space-between"
        >Price Filter <span>${{ priceMin }} - ${{ priceMax }}</span></f7-block-title
      >
      <f7-list simple-list>
        <f7-list-item>
          <f7-list-item-cell
            class="flex-shrink-0"
            :style="{ width: theme.ios ? '28px' : theme.md ? '24px' : '18px' }"
          >
            <f7-icon
              ios="f7:money_dollar_circle"
              aurora="f7:money_dollar_circle"
              md="material:attach_money"
            ></f7-icon>
          </f7-list-item-cell>
          <f7-list-item-cell class="flex-shrink-3">
            <f7-range
              :min="0"
              :max="500"
              :step="1"
              :value="[priceMin, priceMax]"
              :label="true"
              :dual="true"
              color="green"
              @range:change="onPriceChange"
            />
          </f7-list-item-cell>
          <f7-list-item-cell
            class="flex-shrink-0"
            :style="{ width: theme.ios ? '28px' : theme.md ? '24px' : '18px' }"
          >
            <f7-icon
              ios="f7:money_dollar_circle_fill"
              aurora="f7:money_dollar_circle_fill"
              md="material:monetization_on"
            ></f7-icon>
          </f7-list-item-cell>
        </f7-list-item>
      </f7-list>
    
      <f7-block-title>With Scale</f7-block-title>
      <f7-block strong>
        <f7-range
          :min="0"
          :max="100"
          :label="true"
          :step="5"
          :value="25"
          :scale="true"
          :scale-steps="5"
          :scale-sub-steps="4"
        />
      </f7-block>
    
      <f7-block-title>Vertical</f7-block-title>
      <f7-block strong class="display-flex justify-content-center">
        <f7-range
          class="margin-right"
          style="height: 160px"
          :vertical="true"
          :min="0"
          :max="100"
          :label="true"
          :step="1"
          :value="25"
        />
        <f7-range
          class="margin-horizontal"
          style="height: 160px"
          :vertical="true"
          :min="0"
          :max="100"
          :label="true"
          :step="1"
          :value="50"
        />
        <f7-range
          class="margin-horizontal"
          style="height: 160px"
          :vertical="true"
          :min="0"
          :max="100"
          :label="true"
          :step="1"
          :value="75"
        />
        <f7-range
          class="margin-left"
          style="height: 160px"
          :dual="true"
          :vertical="true"
          :min="0"
          :max="100"
          :label="true"
          :step="1"
          :value="[25, 75]"
        />
      </f7-block>
    
      <f7-block-title>Vertical Reversed</f7-block-title>
      <f7-block strong class="display-flex justify-content-center">
        <f7-range
          class="margin-right"
          color="red"
          style="height: 160px"
          :vertical="true"
          :vertical-reversed="true"
          :min="0"
          :max="100"
          :label="true"
          :step="1"
          :value="25"
        />
        <f7-range
          class="margin-horizontal"
          color="red"
          style="height: 160px"
          :vertical="true"
          :vertical-reversed="true"
          :min="0"
          :max="100"
          :label="true"
          :step="1"
          :value="50"
        />
        <f7-range
          class="margin-horizontal"
          color="red"
          style="height: 160px"
          :vertical="true"
          :vertical-reversed="true"
          :min="0"
          :max="100"
          :label="true"
          :step="1"
          :value="75"
        />
        <f7-range
          class="margin-left"
          color="red"
          style="height: 160px"
          :dual="true"
          :vertical="true"
          :vertical-reversed="true"
          :min="0"
          :max="100"
          :label="true"
          :step="1"
          :value="[25, 75]"
        />
      </f7-block>
    </f7-page>
    </template>
    <script>
    import { theme } from 'framework7-vue';
    
    export default {
      data() {
        return {
          theme,
          priceMin: 200,
          priceMax: 400,
        };
      },
      methods: {
        onPriceChange(values) {
          this.priceMin = values[0];
          this.priceMax = values[1];
        },
      },
    };
    </script>