html - 样式输入范围前后

标签 html css

我正在关注 this method从 CSS-Tricks 到输入范围的样式,并试图使用前后伪类。下面是我试过的代码:

input[type=range]::-webkit-slider-thumb:before {
    background: #fff;
}

这似乎并不能解决问题。谁能帮我设置 slider 轨道的样式。我需要一个纯 CSS 解决方案。本质上我想要它 look like this .

我还将粘贴 CSS-Tricks 中的代码:

input[type=range] {
  -webkit-appearance: none;
  margin: 18px 0;
  width: 100%;
}
input[type=range]:focus {
  outline: none;
}
input[type=range]::-webkit-slider-runnable-track {
  width: 100%;
  height: 8.4px;
  cursor: pointer;
  animate: 0.2s;
  box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
  background: #3071a9;
  border-radius: 1.3px;
  border: 0.2px solid #010101;
}
input[type=range]::-webkit-slider-thumb {
  box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
  border: 1px solid #000000;
  height: 36px;
  width: 16px;
  border-radius: 3px;
  background: #ffffff;
  cursor: pointer;
  -webkit-appearance: none;
  margin-top: -14px;
}
input[type=range]:focus::-webkit-slider-runnable-track {
  background: #367ebd;
}
input[type=range]::-moz-range-track {
  width: 100%;
  height: 8.4px;
  cursor: pointer;
  animate: 0.2s;
  box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
  background: #3071a9;
  border-radius: 1.3px;
  border: 0.2px solid #010101;
}
input[type=range]::-moz-range-thumb {
  box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
  border: 1px solid #000000;
  height: 36px;
  width: 16px;
  border-radius: 3px;
  background: #ffffff;
  cursor: pointer;
}
input[type=range]::-ms-track {
  width: 100%;
  height: 8.4px;
  cursor: pointer;
  animate: 0.2s;
  background: transparent;
  border-color: transparent;
  border-width: 16px 0;
  color: transparent;
}
input[type=range]::-ms-fill-lower {
  background: #2a6495;
  border: 0.2px solid #010101;
  border-radius: 2.6px;
  box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
}
input[type=range]::-ms-fill-upper {
  background: #3071a9;
  border: 0.2px solid #010101;
  border-radius: 2.6px;
  box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
}
input[type=range]::-ms-thumb {
  box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
  border: 1px solid #000000;
  height: 36px;
  width: 16px;
  border-radius: 3px;
  background: #ffffff;
  cursor: pointer;
}
input[type=range]:focus::-ms-fill-lower {
  background: #3071a9;
}
input[type=range]:focus::-ms-fill-upper {
  background: #367ebd;
}

最佳答案

在 Firefox 和 IE 中是可能的 -

// Mozilla    
input[type="range"]::-moz-range-progress {
    background: #cc1a1a;
    height: 12px;
    border-radius: 12px;
}
// IE
input[type="range"]::-ms-fill-lower {
    background: #CC1A1A;
    border: 0 solid #000101;
    border-radius: 50px;
    box-shadow: 0 0 0 #000000, 0 0 0 #0d0d0d;
}
input[type="range"]::-ms-fill-upper {
    background: #c0c0c0;
    border: 0 solid #000101;
    border-radius: 50px;
    box-shadow: 0 0 0 #000000, 0 0 0 #0d0d0d;
}

只有一种方法适用于 Chrome :before:after,不再支持(自 2016 年 3 月起)。我找到的最好的 - 是 http://rangeslider.js.org/ .它也适用于 Angular JS - https://github.com/danielcrisp/angular-rangeslider

关于html - 样式输入范围前后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28159866/

相关文章:

html - 使 block 级元素可点击链接

javascript - console.log 不是 nodejs fs.readfile 中的函数

html - li 内的 CSS 垂直对齐文本

html - 为什么我的背景图像不会使用 CSS 显示?

html - LessCss/Sass - 访问内部变量?

javascript - 保持图像和文本彼此相邻

javascript - 使整个网页链接不可点击的最佳方法是什么

html - 将鼠标悬停在一个 HTML 元素上会影响另一个

html - 显示行内 block

html - css 背景图像定位在 firefox 中的工作方式不同