范围滑块 Vue 组件

范围滑块 Vue 组件表示范围滑块组件。

范围滑块组件

包含以下组件:

范围滑块属性

属性类型默认描述
<f7-range> 属性
init布尔值true初始化范围滑块
数字
数组
字符串
范围滑块值,在双范围滑块情况下必须是数组
min数字
字符串
最小值
max数字
字符串
最大值
step数字
字符串
1值之间的最小步长
label布尔值false启用范围滑块旋钮周围的附加标签
布尔值false启用双范围滑块
垂直布尔值false启用垂直范围滑块
vertical-reversed布尔值false使垂直范围滑块反向。 (仅当vertical:true)
draggable-bar布尔值true启用后,也可以通过点击和滑动范围条来交互范围滑块(更改值)
format-label函数()方法必须返回格式化的范围旋钮标签文本。作为参数接收标签值
scale布尔值false启用范围滑块刻度
scale-steps数字5刻度步数
scale-sub-steps数字0刻度子步数(每个步长将被此值除)
format-scale-label函数 ()方法必须返回格式化的刻度值。作为参数接收当前刻度步长值。此方法将对每个刻度步长调用。
limit-knob-position布尔值将旋钮位置限制在范围条的大小内。默认情况下从 iOS 主题启用
禁用布尔值false定义范围滑块是否禁用
id字符串范围滑块元素 ID 属性
input布尔值false启用后,它将渲染input type="range"元素内部
输入 ID字符串输入元素 ID 属性
name字符串输入元素 "name" 属性

范围滑块事件

事件描述
<f7-range> 事件
range:change当范围滑块值更改时,将触发此事件
range:changed在滑块旋钮释放并更改值后,将触发此事件

Stepper v-model

f7-range组件支持v-modelonvalueprop:

<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>

示例

range.vue
<template>
  <f7-page>
    <f7-navbar title="Range Slider"></f7-navbar>

    <f7-block-title>Volume</f7-block-title>
    <f7-list simple-list outline-ios strong-ios>
      <f7-list-item>
        <div>
          <f7-icon ios="f7:speaker_fill" md="material:volume_mute" />
        </div>
        <div style="width: 100%; margin: 0 16px">
          <f7-range :min="0" :max="100" :step="1" :value="10" />
        </div>
        <div>
          <f7-icon ios="f7:speaker_3_fill" md="material:volume_up" />
        </div>
      </f7-list-item>
    </f7-list>

    <f7-block-title>Brightness</f7-block-title>
    <f7-list simple-list outline-ios strong-ios>
      <f7-list-item>
        <div>
          <f7-icon ios="f7:sun_min" md="material:brightness_low" />
        </div>
        <div style="width: 100%; margin: 0 16px">
          <f7-range :min="0" :max="100" :step="1" :value="50" :label="true" color="orange" />
        </div>
        <div>
          <f7-icon ios="f7:sun_max_fill" md="material:brightness_high" />
        </div>
      </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 outline-ios strong-ios>
      <f7-list-item>
        <div>
          <f7-icon ios="f7:money_dollar_circle" md="material:attach_money" />
        </div>
        <div style="width: 100%; margin: 0 16px">
          <f7-range
            :min="0"
            :max="500"
            :step="1"
            :value="[priceMin, priceMax]"
            :label="true"
            :dual="true"
            color="green"
            @range:change="onPriceChange"
          />
        </div>
        <div>
          <f7-icon ios="f7:money_dollar_circle_fill" md="material:monetization_on" />
        </div>
      </f7-list-item>
    </f7-list>

    <f7-block-title>With Scale</f7-block-title>
    <f7-block strong-ios outline-ios>
      <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-ios outline-ios 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-ios outline-ios 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 {
  f7Navbar,
  f7Page,
  f7BlockTitle,
  f7Range,
  f7List,
  f7ListItem,
  f7Icon,
  f7Block,
} from 'framework7-vue';

export default {
  components: {
    f7Navbar,
    f7Page,
    f7BlockTitle,
    f7Range,
    f7List,
    f7ListItem,
    f7Icon,
    f7Block,
  },
  data() {
    return {
      priceMin: 200,
      priceMax: 400,
    };
  },
  methods: {
    onPriceChange(values) {
      this.priceMin = values[0];
      this.priceMax = values[1];
    },
  },
};
</script>
无噪 Logo
无噪文档
中文文档 · 复刻官网
查看所有 ↗