recherche

Maison  >  Questions et réponses  >  le corps du texte

Titre réécrit : Comment créer un curseur de remplissage automatique avec un arrière-plan dégradé en HTML

Je joue juste avec HTML et je veux créer un curseur qui se remplit d'un dégradé, mais je trouve que cela est presque impossible. Je fais des recherches depuis quelques heures mais je n'arrive pas à trouver la réponse.

Je pense que j'ai besoin de JS, mais je suis complètement vide là-bas.

.slidecontainer {
  justify-content: center;
  bottom: 0px;
  margin-left: auto;
}

.slider {
  -webkit-appearance: none;
  appearance: none;
  border-radius: 5px;
  width: 100%;
  height: 25px;
  background: #d3d3d3;
  outline: none;
  opacity: 0.8;
  -webkit-transition: .2s;
  transition: opacity .2s;
}

.slider:hover {
  opacity: 1;
}

.slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  border-radius: 5px;
  width: 25px;
  height: 25px;
  background: blue;
  cursor: pointer;
}

.slider::-moz-range-thumb {
  width: 25px;
  height: 25px;
  background: blue;
  cursor: pointer;
}
<div class="slidecontainer">
  <input type="range" min="1" max="100" value="1" class="slider" id="myRange">
</div>

J'ai essayé la méthode mentionnée ci-dessus. J'ai essayé des trucs sur ce site (https://codepen.io/kaiquenunes23/pen/LYEvegK) mais je ne peux pas le contrôler.

J'ai également lu plusieurs autres discussions sur StackOverflow.

P粉715228019P粉715228019299 Il y a quelques jours480

répondre à tous(2)je répondrai

  • P粉541565322

    P粉5415653222024-02-04 17:47:09

    Essayez ceci

    répondre
    0
  • P粉541796322

    P粉5417963222024-02-04 09:45:27

    JS est requis pour obtenir la position actuelle du pouce.

    Cet extrait de code fait cela en lisant la position sur le curseur et en calculant le pourcentage de son mouvement. Il définit ensuite la variable CSS --pc sur cette valeur en pourcentage.

    Le curseur a deux images d'arrière-plan, la première est transparente pour le pouce, puis la couleur grise souhaitée. "En dessous" se trouve une deuxième image d'arrière-plan, qui correspond au dégradé linéaire de votre choix.

    De cette façon, lorsque vous déplacez le curseur vers la droite, le dégradé linéaire apparaîtra.

    const slider = document.getElementById("myRange");
    slider.addEventListener("input", update);
    
    function update() {
      const pc = (slider.value - slider.min) / (slider.max - slider.min) * 100 + '%';
      slider.style.setProperty('--pc', pc);
    }
    .slidecontainer {
      justify-content: center;
      bottom: 0px;
      margin-left: auto;
    }
    
    .slider {
      -webkit-appearance: none;
      appearance: none;
      border-radius: 5px;
      width: 100%;
      height: 25px;
      --pc: 0;
      background: linear-gradient(to right, transparent 0 var(--pc), #d3d3d3 var(--pc) 100%), linear-gradient(to right, red, green);
      outline: none;
      opacity: 0.8;
      -webkit-transition: .2s;
      transition: opacity .2s;
    }
    
    .slider:hover {
      opacity: 1;
    }
    
    .slider::-webkit-slider-thumb {
      -webkit-appearance: none;
      appearance: none;
      border-radius: 5px;
      width: 25px;
      height: 25px;
      background: blue;
      cursor: pointer;
    }
    
    .slider::-moz-range-thumb {
      width: 25px;
      height: 25px;
      background: blue;
      cursor: pointer;
    }

    répondre
    0
  • Annulerrépondre