自定义(滑动条)input[type="range"]样式

今天 做了个 换肤的小玩意!如图

自定义(滑动条)input[type=

用到了   input[type="range"] 功能:详细做个总结:

基本用法:

基本属性:

max    设置或返回滑块控件的最大值
min    设置或返回滑块控件的最小值
step    设置或返回每次拖动滑块控件时的递增量
value    设置或返回滑块控件的 value 属性值
defaultValue    设置或返回滑块控件的默认值
autofocus    设置或返回滑块控件在页面加载后是否应自动获取焦点

 

在各个浏览器的样式 不一样:所以要重新 设置样式。接下来的问题:

如何美化滑动条?

采用方案:

  • 直接通过css完成样式改造

具体方案:

1. 去除系统默认的样式

input[type=range] {
    -webkit-appearance: none;
    width: 300px;
background: -webkit-linear-gradient(#059CFA, #059CFA) no-repeat; background-size: 0% 100%; border
-radius: 10px; /*这个属性设置使填充进度条时的图形为圆角*/ } input[type=range]::-webkit-slider-thumb { -webkit-appearance: none;/*隐藏滑块*/ }

 

2 .给滑动轨道(track)添加样式

input[type=range]::-webkit-slider-runnable-track {
    height: 15px;
    border-radius: 10px; /*将轨道设为圆角的*/
    box-shadow: 0 1px 1px #def3f8, inset 0 .125em .125em #0d1112; /*轨道内置阴影效果*/
}
input[type=range]:focus {
    outline: none;/*原始的控件获取到焦点时,会显示包裹整个控件的边框,所以还需要把边框取消。*/
}

3 .给滑块(thumb)添加样式

input[type=range]::-webkit-slider-thumb {
    -webkit-appearance: none;
    height: 25px;
    width: 25px;
    margin-top: -5px; /*使滑块超出轨道部分的偏移量相等*/
    background: #ffffff; 
    border-radius: 50%; /*外观设置为圆形*/
    border: solid 0.125em rgba(205, 224, 230, 0.5); /*设置边框*/
    box-shadow: 0 .125em .125em #3b4547; /*添加底部阴影*/
}

项目中:补充个小的知识:

计算百分比

(Math.round(this.value / 255 * 10000) / 100.00)
//Math.round保留2个小数
//this.value分子  255分母

参考 http://blog.csdn.net/u013347241/article/details/51560290

 需求延伸:

JS实现随机颜色的3种方法与颜色格式的转化

十六进制格式(#000000-#FFFFFF)

function randomHexColor() { //随机生成十六进制颜色
 var hex = Math.floor(Math.random() * 16777216).toString(16); //生成ffffff以内16进制数
 while (hex.length < 6) { //while循环判断hex位数,少于6位前面加0凑够6位
  hex = '0' + hex;
 }
 return '#' + hex; //返回‘#'开头16进制颜色
}

RGB格式

function randomRgbColor() { //随机生成RGB颜色
 var r = Math.floor(Math.random() * 256); //随机生成256以内r值
 var g = Math.floor(Math.random() * 256); //随机生成256以内g值
 var b = Math.floor(Math.random() * 256); //随机生成256以内b值
 return `rgb(${r},${g},${b})`; //返回rgb(r,g,b)格式颜色
}

RGBA格式

function randomRgbaColor() { //随机生成RGBA颜色
 var r = Math.floor(Math.random() * 256); //随机生成256以内r值
 var g = Math.floor(Math.random() * 256); //随机生成256以内g值
 var b = Math.floor(Math.random() * 256); //随机生成256以内b值
 var alpha = Math.random(); //随机生成1以内a值
 return `rgb(${r},${g},${b},${alpha})`; //返回rgba(r,g,b,a)格式颜色
}

十六进制转为RGB

function hex2Rgb(hex) { //十六进制转为RGB
 var rgb = []; // 定义rgb数组
 if (/^\#[0-9A-F]{3}$/i.test(hex)) { //判断传入是否为#三位十六进制数
  let sixHex = '#';
  hex.replace(/[0-9A-F]/ig, function(kw) {
   sixHex += kw + kw; //把三位16进制数转化为六位
  });
  hex = sixHex; //保存回hex
 }
 if (/^#[0-9A-F]{6}$/i.test(hex)) { //判断传入是否为#六位十六进制数
  hex.replace(/[0-9A-F]{2}/ig, function(kw) {
   rgb.push(eval('0x' + kw)); //十六进制转化为十进制并存如数组
  });
  return `rgb(${rgb.join(',')})`; //输出RGB格式颜色
 } else {
  console.log(`Input ${hex} is wrong!`);
  return 'rgb(0,0,0)';
 }
}

RGB转为十六进制

function rgb2Hex(rgb) {
 if (/^rgb\((\d{1,3}\,){2}\d{1,3}\)$/i.test(rgb)) { //test RGB
  var hex = '#'; //定义十六进制颜色变量
  rgb.replace(/\d{1,3}/g, function(kw) { //提取rgb数字
   kw = parseInt(kw).toString(16); //转为十六进制
   kw = kw.length < 2 ? 0 + kw : kw; //判断位数,保证两位
   hex += kw; //拼接
  });
  return hex; //返回十六进制
 } else {
  console.log(`Input ${rgb} is wrong!`);
  return '#000'; //输入格式错误,返回#000
 }
}

 

 

 

 

 

 

 

 

333

转载于:https://www.cnblogs.com/lovelgx/articles/7419480.html

你可能感兴趣的:(自定义(滑动条)input[type="range"]样式)