范围滑块 Vue 组件
范围滑块 Vue 组件表示 范围滑块 组件。
范围滑块组件
包括以下组件
f7-range
范围滑块属性
属性 | 类型 | 默认值 | 描述 |
---|---|---|---|
<f7-range> 属性 | |||
init | 布尔型 | true | 初始化范围滑块 |
value | 数字 数组 字符串 | 范围滑块值,双范围滑块的情况下必须为数组 | |
min | 数字 字符串 | 最小值 | |
max | 数字 字符串 | 最大值 | |
step | 数字 字符串 | 1 | 两个值之间的最小步长 |
标签 | 布尔型 | 否 | 启用范围选择滑块滑块周围的附加标签 |
双重 | 布尔型 | 否 | 启用双重范围选择滑块 |
垂直 | 布尔型 | 否 | 启用垂直范围选择滑块 |
垂直反向 | 布尔型 | 否 | 对垂直范围选择滑块进行反向排序。(仅当 vertical:true 时) |
可拖动条 | 布尔型 | true | 启用后,还可以通过单击和滑动范围条来与范围选择滑块交互(更改值)。 |
格式化标签 | 函数(值) | 方法必须返回已格式化的范围滑块标签文本。作为参数接收标签值 | |
比例 | 布尔型 | 否 | 启用范围选择滑块比例 |
比例步长 | 数字 | 5 | 比例步长数 |
比例子步长 | 数字 | 0 | 比例子步长数(每个步长将按此值划分) |
格式化比例标签 | 函数 (值) | 方法必须返回格式化的比例值。作为参数接收当前比例步长值。此方法将根据每个比例步长进行调用。 | |
限制滑块位置 | 布尔型 | 将滑块位置限制在范围条大小内。默认情况下通过 iOS 主题启用 | |
禁用 | 布尔型 | 否 | 定义范围选择滑块禁用与否 |
ID | 字符串 | 范围选择滑块元素 ID 属性 | |
输入 | 布尔型 | 否 | 如果启用,那么它还会在内部渲染 input type="range" 元素 |
输入 ID | 字符串 | 输入元素 ID 属性 | |
名称 | 字符串 | 输入元素“名称”属性 |
范围选择滑块事件
事件 | 描述 |
---|---|
<f7-range> 事件 | |
range:change | 当范围选择滑块值改变后触发事件 |
range:changed | 值改变后,松开滑块滑块时触发事件 |
步进器 v-model
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>
示例
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>