Как изменить маркер ползунка диапазона? - PullRequest
0 голосов
/ 24 октября 2018

Мне нужно добиться этого: Ползунок диапазона

Я выполнил часть ползунка диапазона, но у меня возникают проблемы при смене маркера на ползунке диапазона.Даже я предоставляю изображение src: "https://png.icons8.com/metro/52/000000/sort-down.png".

Я добавляю свою работу туда, где я закончил.

var slider = document.getElementById("myRange");
var output = document.getElementById("demo");
.slidecontainer {
  width: 100%;
}

.slider {
  width: 30%;
  height: 10px;
  border-radius: 5px;
  background-image: linear-gradient(to right, rgba(255, 0, 0, 1), rgba(0, 128, 0, 1));
  outline: none;
  opacity: 0.7;
  transition: opacity .2s;
  -webkit-appearance: none;
}

.slider:hover {
   background-image: linear-gradient(to right, rgba(255, 0, 0, 1), rgba(0, 128, 0, 1));
}

.slider::-webkit-slider-thumb {
  width: 23px;
  height: 24px;
  border: 0;
  background: url('contrasticon.png');
  cursor: pointer;
}

.slider::-moz-range-thumb {
  width: 23px;
  height: 24px;
  border: 0;
  background: url('contrasticon.png');
  cursor: pointer;
}
<div class="slidecontainer">
  <input type="range" min="1" max="100" value="50" class="slider" id="myRange">
  
</div>

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Вы можете попробовать чистое решение CSS, где вы можете легко управлять стрелкой (размер, цвет, положение) без необходимости изображения:

.slider {
  margin:50px;
  width: 30%;
  height: 10px;
  border-radius: 5px;
  background-image: linear-gradient(to right, rgba(255, 0, 0, 1), rgba(0, 128, 0, 1));
  outline: none;
  opacity: 0.7;
  transition: opacity .2s;
  -webkit-appearance: none;
}

.slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 20px;
  height: 40px;
  background:
    linear-gradient(to bottom left,#000 49%,transparent 50%) top left/50% 15px,
    linear-gradient(to bottom right,#000 49%,transparent 50%) top right/50% 15px;
  background-repeat:no-repeat;
  display:inline-block;
}

.slider::-moz-range-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 20px;
  height: 40px;
  background:
    linear-gradient(to bottom left,#000 49%,transparent 50%) top left/50% 15px,
    linear-gradient(to bottom right,#000 49%,transparent 50%) top right/50% 15px;
  background-repeat:no-repeat;
  display:inline-block;
}
<div class="slidecontainer">
  <input type="range" min="1" max="100" value="50" class="slider" id="myRange">
  
</div>
0 голосов
/ 24 октября 2018

Вам нужно использовать appearance: none; для большого пальца слайдера, чтобы использовать пользовательское изображение.Посмотрите:

.slidecontainer {
  width: 100%;
}

.slider {
  width: 30%;
  height: 10px;
  border-radius: 5px;
  background-image: linear-gradient(to right, rgba(255, 0, 0, 1), rgba(0, 128, 0, 1));
  outline: none;
  opacity: 0.7;
  transition: opacity .2s;
  -webkit-appearance: none;
}

.slider:hover {
   background-image: linear-gradient(to right, rgba(255, 0, 0, 1), rgba(0, 128, 0, 1));
}

.slider::-webkit-slider-thumb {
  width: 23px;
  height: 24px;
  border: 0;
  background: url('https://png.icons8.com/metro/52/000000/sort-down.png');
  background-size: 16px;
  background-repeat: no-repeat;
  background-position: 0 -4px;
  cursor: pointer;
  -webkit-appearance: none;
}

.slider::-moz-range-thumb {
  width: 23px;
  height: 24px;
  border: 0;
  background: url('https://png.icons8.com/metro/52/000000/sort-down.png');
    background-size: 16px;
  background-repeat: no-repeat;
  background-position: 0 -4px;

  cursor: pointer;
  -moz-appearance: none;
}
<div class="slidecontainer">
  <input type="range" min="1" max="100" value="50" class="slider" id="myRange">
  
</div>

Теперь вы можете свободно изменять свойства изображения, такие как размер, поворот, z-индекс, все, что вам нужно

...