Modifier l'opacité de l'image lors de la sélection d'une option dans le formulaire
P粉244155277
P粉244155277 2024-04-03 23:00:48
0
2
442

Comment puis-je changer l'opacité de l'image d'id Master à 1 lorsque je sélectionne l'option avec la valeur 1 (MasterCard) ? et le mettre dans une fonction qui fonctionne sur ces 4 valeurs, chacune avec son propre identifiant ? Je veux que l'image par défaut soit de 0,3 et lorsque l'une des options est sélectionnée, l'image a une opacité de 1.

.itemForm2 {
  width: 100%;
  position: relative;
  margin-bottom: 18px;
  margin-top: 10px;
  display: flex;
  flex-direction: row;
}

.escolhaCartao {
  display: flex;
  flex-direction: row;
  width: 218px!important;
  gap: 10px;
}

@media(min-width:768px) {
  .escolhaCartao {
    width: 258px!important;
    height: 34.32px;
    gap: 5px;
  }
  .lineFormCartao {
    display: flex;
    flex-direction: row;
    justify-content: inherit;
    gap: 16px;
  }
  .escolhaCartao img {
    opacity: .3;
  }
}
<div class="lineForm lineFormCartao">
  <div class="itemForm">
    <select id="OpcoesCartao" name="OpcoesCartao">
      <option value="1">Mastercard</option>
      <option value="2">Visa</option>
      <option value="3">Elo</option>
      <option value="4">Amex</option>
    </select>
  </div>
  <div class="itemForm2 escolhaCartao">
    <img id="master" src="images/master.png" alt="Logo cartão Mastercard">
    <img id="visa" src="images/visa.png" alt="Logo cartão Visa">
    <img id="elo" src="images/elo.png" alt="Logo cartão Elo">
    <img id="amex" src="images/amex.png" alt="Logo cartão Amex">
  </div>
</div>

P粉244155277
P粉244155277

répondre à tous(2)
P粉521748211

Utilisant uniquement CSS et has

.escolhaCartao img {
 opacity: .2;
}

.itemForm:has(option[value="1"]:checked) + .itemForm2 > #master,
.itemForm:has(option[value="2"]:checked) + .itemForm2 > #visa,
.itemForm:has(option[value="3"]:checked) + .itemForm2 > #elo,
.itemForm:has(option[value="4"]:checked) + .itemForm2 > #amex
{
  opacity: 1;
}
Logo cartão Mastercard Logo cartão Visa Logo cartão Elo Logo cartão Amex

Utiliser JavaScript

var sel = document.querySelector("#OpcoesCartao");
const imgs =  document.querySelectorAll(".escolhaCartao img");

sel.addEventListener("change", function (e) {
  const val = this.value;
  const selected = document.querySelector(".escolhaCartao img.selected");
  if (selected) {
    selected.classList.remove('selected');
  }
  imgs[+val - 1].classList.add('selected');
});

sel.dispatchEvent(new Event('change'));
.escolhaCartao img {
 opacity: .2;
}

.escolhaCartao img.selected
{
  opacity: 1;
}
Logo cartão Mastercard Logo cartão Visa Logo cartão Elo Logo cartão Amex
P粉799885311

Vous pouvez le faire. Cela fonctionne dans la plupart des navigateurs. Firefox devrait bientôt le prendre en charge (https://caniuse.com/?search=has) p>

.itemForm2 {
    width: 100%;
    position: relative;
    margin-bottom: 18px;
    margin-top: 10px;
    display: flex;
    flex-direction: row;
}

.escolhaCartao {
    display: flex;
    flex-direction: row;
    width: 218px!important;
    gap: 10px;
}

.lineForm:has( option[value="1"]:checked ) #master {
  opacity: 1;
}
.lineForm:has( option[value="2"]:checked ) #visa {
  opacity: 1;
}
.lineForm:has( option[value="3"]:checked ) #elo {
  opacity: 1;
}
.lineForm:has( option[value="4"]:checked ) #amex {
  opacity: 1;
}


    .escolhaCartao {
        width: 258px!important;
        height: 34.32px;
        gap: 5px;
    }

    .lineFormCartao {
        display: flex;
        flex-direction: row;
        justify-content: inherit;
        gap: 16px;
    }
    .escolhaCartao img {
        opacity: .3;
    }
Logo cartão Mastercard Logo cartão Visa Logo cartão Elo Logo cartão Amex
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal