Ползунок дальности исчезает непоследовательно? - PullRequest
0 голосов
/ 10 января 2019

У меня есть ползунок диапазона, при уменьшении размера браузера ползунок диапазона исчезнет с экрана.

.slidecontainer {
  width: 100%;
}

.slider {
  -webkit-appearance: none;
  width: 100%;
  height: 1px;
  background: #d3d3d3;
  outline: none;
  opacity: 0.7;
  -webkit-transition: .2s;
  transition: opacity .2s;
}

.slider:hover {
  opacity: 1;
}

.slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 25px;
  height: 25px;
  background: #4CAF50;
  cursor: pointer;
}
<div class="slidecontainer">
  <p>Custom range slider:</p>
  <input type="range" min="1" max="100" value="50" class="slider" id="myRange">
</div>

Пожалуйста, предложите, почему это происходит? Спасибо!

1 Ответ

0 голосов
/ 11 января 2019

Причина, по которой это происходит, связана с субпиксельным рендерингом, хорошее объяснение которого можно посмотреть здесь: https://stackoverflow.com/a/14242055/1650337

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

.slidecontainer {
  width: 100%;
}

.slider {
  -webkit-appearance: none;
  width: 100%;
  height: 1px;
  
  /* Remove the background colour */
  /* background: #d3d3d3; */ 
  
  /* Add a border at the bottom to act as your line */
  border-bottom: #d3d3d3 1px solid;
  
  outline: none;
  opacity: 0.7;
  -webkit-transition: .2s;
  transition: opacity .2s;
}

.slider:hover {
  opacity: 1;
}

.slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 25px;
  height: 25px;
  background: #4CAF50;
  cursor: pointer;
}
<div class="slidecontainer">
  <p>Custom range slider:</p>
  <input type="range" min="1" max="100" value="50" class="slider" id="myRange">
</div>
...