How to customize the HTML5 input range type looks using CSS?

后端 未结 10 2260
粉色の甜心
粉色の甜心 2020-11-27 15:24

I want to customize the looks of the range input type in HTML5 to look something like a progress bar. I\'ve tried applying some common CSS attributes using CSS class but it

10条回答
  •  离开以前
    2020-11-27 15:41

    I did a cross-browser solution (+IE9, FF, Chrome, Safari), only CSS.

    [Updated 24.11.2016]

    http://codepen.io/nlfonseca/pen/MwbovQ

    @import 'bourbon';
    
    $slider-width-number: 240;
    $slider-width: #{$slider-width-number}px;
    $slider-height: 2px;
    $background-slider: #c7c7c7;
    $background-filled-slider: #e33d44;
    $thumb-width: 28px;
    $thumb-height: 18px;
    $thumb-radius: 8px;
    $thumb-background: #fff;
    $thumb-border: 1px solid #777;
    $shadow-size: -8px;
    $fit-thumb-in-slider: -8px;
    
    @function makelongshadow($color, $size) {
      $val: 5px 0 0 $size $color;
    
      @for $i from 6 through $slider-width-number {
        $val: #{$val}, #{$i}px 0 0 $size #{$color};
      }
    
      @return $val;
    }
    
    div {
      height: 100px;
      display: flex;
      justify-content: center;
    }
    
    input {
      align-items: center;
      appearance: none;
      background: none;
      cursor: pointer;
      display: flex;
      height: 100%;
      min-height: 50px;
      overflow: hidden;
      width: $slider-width;
    
      &:focus {
        box-shadow: none;
        outline: none;
      }
    
      &::-webkit-slider-runnable-track {
        background: $background-filled-slider;
        content: '';
        height: $slider-height;
        pointer-events: none;
      }
    
      &::-webkit-slider-thumb {
        @include size($thumb-width $thumb-height);
    
        appearance: none;
        background: $thumb-background;
        border-radius: $thumb-radius;
        box-shadow: makelongshadow($background-slider, $shadow-size);
        margin-top: $fit-thumb-in-slider;
        border: $thumb-border;
      }
    
    
      &::-moz-range-track {
        width: $slider-width;
        height: $slider-height;
      }
    
      &::-moz-range-thumb {
        @include size($thumb-width $thumb-height);
    
        background: $thumb-background;
        border-radius: $thumb-radius;
        border: $thumb-border;
        position: relative;
      }
    
      &::-moz-range-progress {
        height: $slider-height;
        background: $background-filled-slider;
        border: 0;
        margin-top: 0;
      }
    
      &::-ms-track {
        background: transparent;
        border: 0;
        border-color: transparent;
        border-radius: 0;
        border-width: 0;
        color: transparent;
        height: $slider-height;
        margin-top: 10px;
        width: $slider-width;
      }
    
      &::-ms-thumb {
        @include size($thumb-width $thumb-height);
    
        background: $thumb-background;
        border-radius: $thumb-radius;
        border: $thumb-border;
      }
    
      &::-ms-fill-lower {
        background: $background-filled-slider;
        border-radius: 0;
      }
    
      &::-ms-fill-upper {
        background: $background-slider;
        border-radius: 0;
      }
    
      &::-ms-tooltip {
        display: none;
      }
    }
    

提交回复
热议问题