您的位置:

input range详解

一、InputRANGE中文

Input range是HTML5中的表单元素,用于通过滑块或者拖拽的方式来选择数值。它有两个可操作的附加参数:Max和Min。使用input type=”range”来创建一个input control,并使用value属性来定义default value。

<input type="range" min="0" max="100" value="50">

上面代码表示创建了一个范围为0-100的滑动条,默认值为50。

二、input range setting

1、设置步进

使用step属性来设置每次拖动时的步进。

<input type="range" min="0" max="10" step="2">

这样,当你拖动这个滑动条的时候,每次数值跳跃的大小为2。

2、设置初始值

可以使用value属性来设置初始值

<input type="range" min="0" max="100" value="50">

这意味着当页面加载时,滑动条将滑到50的位置。

3、设置展示数值

可以使用oninput event、onchange event、value property或者form property来获取滑动条的值,然后把这个值展示出来。

<input type="range" min="0" max="100" oninput="showValue(this.value)" onchange="showValue(this.value)"><span id="rangevalue"></span>

<script>
    function showValue(newValue){
        document.getElementById("rangevalue").innerHTML=newValue;
    }
</script>

这里定义了一个oninput事件和一个onchange事件,每次当滑动条的值发生变化时都会触发。然后我们通过把获取到的newValue值展示在了id为rangevalue的span标签中。

三、input range属性

1、max

max属性指定了滑动条的最大值,即滑到最右侧时所代表的值。默认情况下,max被设置为100。可以设置为任意数字。

<input type="range" min="0" max="10">

这个滑动条的最大值是10。

2、min

min属性定义了滑动条的最小值,即滑到最左侧时所代表的值。默认情况下,min被设置为0。可以设置为任意数字。

<input type="range" min="5" max="15" value="10">

这个滑动条可以在5到15之间滑动,默认值为10。

3、step

step属性定义了每一次拖动时变化的值。默认情况下,变化的大小是1。可以设置为任意数字。

<input type="range" min="1" max="10" step="2">

每次拖动都是步进2的。

4、value

value属性定义了滑动条默认时所在的位置,即默认值。可以被设置为max或min之间的任意数字。

<input type="range" min="1" max="100" value="50">

这个滑动条默认为50。

四、input range类型

Input range元素可以分为两种:单值和双值。

1、单值

单值范围滑块的值在起点和终点之间选取一个整数。单值滑块仅需在<input type=”range” />元组上设置最小、最大、步骤和默认值即可。

<input type="range" min="0" max="10" step="2" value="6">

2、双值

双值范围滑块的值是指区间上的两个端点,常用于选择区间范围。需要在<input type=”range” />元组上设置一个“range”属性来表示是一个双值滑块,并设置默认的区间端点。

<input type="range" min="0" max="100" step="10" value="30;70" range>

这个滑动条的两个区间的默认值分别为30和70。

五、input range 和vue

在Vue中,可以使用v-model将Input range元素绑定在一个组件的属性上。因为input range元素的值始终是字符串,所以需要将其转换为数值。

<input type="range" v-model="amount">

<script>
    var app = new Vue({
        el: '#app',
        data: {
            amount: 50
        }
    })
</script>

Vue的data对象中的amount属性绑定在了这个滑动条上。默认值为50。

六、input range翻译

在许多国家和地区,input range元素被翻译成本地语言。以下是几个国家中input range元素的示例:

1、中文

<input type=”range” min=”0” max=”100” step=”1” value=”50”/>

2、日语

<input type=”range” min=”0” max=”100” step=”1” value=”50”/>

3、德语

<input type=”range” min=”0” max=”100” step=”1” value=”50”/>

七、input range美化

可以使用CSS美化input range元素外观。

input[type="range"]{
    -webkit-appearance: none!important;
    appearance: none!important;
    height: 5px;
    width: 200px;
    background: #bfbfbf;
    border-radius: 2px;
    outline: none;
}

input[type="range"]::-webkit-slider-thumb{
    -webkit-appearance: none!important;
    appearance: none!important;
    height: 16px;
    width: 16px;
    background: #ffffff;
    border-radius: 50%;
    border: 1px solid #bfbfbf;
    margin-top: -6px;
}

input[type="range"]::-moz-range-thumb{
    -webkit-appearance: none!important;
    appearance: none!important;
    height: 16px;
    width: 16px;
    background: #ffffff;
    border-radius: 50%;
    border: 1px solid #bfbfbf;
}

这里定义了input type="range"的外观,包括高度、宽度、颜色等样式。-webkit-appearance和appearance被设为了none,让元素的原生样式不会出现在页面中。然后又定义了::-webkit-slider-thumb和::-moz-range-thumb,修改了滑块的样式。

八、input range contains non

默认情况下,input range类型表示的是线性范围内的一段数值。但是,可以使用datalist元素将数值限制在一个特定的集合中。

使用datalist和input实现类似于下拉框的功能:

<input id="rangeMonth" type='range' min='1' max='12' step='1' value='1'>
<datalist id='tickmarks'>
    <option value="1">Jan</option>
    <option value="2">Feb</option>
    <option value="3">Mar</option>
    <option value="4">Apr</option>
    <option value="5">May</option>
    <option value="6">Jun</option>
    <option value="7">Jul</option>
    <option value="8">Aug</option>
    <option value="9">Sep</option>
    <option value="10">Oct</option>
    <option value="11">Nov</option>
    <option value="12">Dec</option>
</datalist>

<script>
    var rangeInput = document.querySelector('#rangeMonth');
    var tickmarks = document.querySelector('#tickmarks');
    rangeInput.setAttribute('list',tickmarks.getAttribute('id'));
    rangeInput.oninput = function(){
        document.querySelector('output').textContent = tickmarks.querySelector('option[value="' + this.value + '"]').textContent;
    };
</script>

可以看到,这里使用了input和datalist来实现一个滑动条/下拉框组合。通过oninput事件实时显示所选择的选项,然后把这个值放在了id为output的标签中。