recherche

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

Nouveau titre : Modifier la couleur de la case à cocher

J'ai implémenté une fonction pour changer la couleur d'arrière-plan de la case à cocher mais cela rend les graduations noires, ce que je ne veux pas, je veux que les marqueurs restent blancs, comment puis-je y parvenir ?

HTML :-

<div v-for="category in categories" :key="category.id">
     <div>
        <input type="checkbox" class="categoryInput" @change="input()" 
        :true-value="category.id" false-value="0" v-model="currentCategory"/>
        <label class="form-label">{{category.name}}</label>
      </div>
</div>

Voici la fonction :-

input(){
        var color = JSON.parse(localStorage.getItem('coloring') || '[]').CTAButtons
        let collection = document.getElementsByClassName("categoryInput");
        for (let i = 0; i < collection.length; i++) {
        collection[i].style.accentColor = color
        }
    }

Voici le résultat : - L'arrière-plan a été modifié avec succès, mais les graduations sont devenues noires

P粉063039990P粉063039990345 Il y a quelques jours431

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

  • P粉310931198

    P粉3109311982023-12-19 18:20:08

    L'avantage d'utiliser vue est de créer des composants personnalisés. Vous pouvez donc essayer la méthode présentée ci-dessous.

    TravailStackBlitz

    Vous devrez peut-être adapter le code à vos besoins spécifiques.

    <template>
      <div v-for="category in categories" :key="category.id">
        <div>
          <label class="form-label categoryInput">
            <span class="material-icons icon" v-if="isChecked(category.id)"
              >check_box</span
            >
            <span
              class="material-icons-outlined icon"
              v-if="!isChecked(category.id)"
              >check_box_outline_blank</span
            >
            <input
              type="checkbox"
              class=""
              @change="input()"
              :value="category.id"
              v-model="currentCategory"
            />
            {{ category.name }}</label
          >
        </div>
      </div>
    </template>
    
    <script>
    export default {
      name: 'Checkbox',
      data: function () {
        return {
          currentCategory: [],
          categories: [
            { id: 1, name: 'alpha' },
            { id: 2, name: 'beta' },
          ],
        };
      },
      props: {},
      methods: {
        isChecked(categoryId) {
          return this.currentCategory.indexOf(categoryId) !== -1;
        },
        input() {
          var color = '#3bb0a8';
          let collection = document.getElementsByClassName('categoryInput');
          for (let i = 0; i < collection.length; i++) {
            const icons = collection[i].querySelectorAll('.icon');
            icons.forEach((iconEle) => {
              iconEle.style.color = color;
            });
          }
        },
      },
    };
    </script>
    
    <style scoped>
    label.categoryInput {
      display: flex;
      justify-content: center;
      align-items: center;
    }
    label.categoryInput input[type='checkbox'] {
      width: 0;
      height: 0;
    }
    </style>

    Important

    Ajoutez ce qui suit à votre en-tête index.html

    <link href="https://fonts.googleapis.com/css?family=Material+Icons|Material+Icons+Outlined|Material+Icons+Two+Tone|Material+Icons+Round|Material+Icons+Sharp" rel="stylesheet">

    répondre
    0
  • P粉218361972

    P粉2183619722023-12-19 12:43:00

    La couleur par défaut des cases à cocher HTML est déterminée par le navigateur et ne peut pas être modifiée. Cependant, vous pouvez créer votre propre case à cocher personnalisée et la styliser comme vous le souhaitez.

    HTML

    <label class="container">
        <input type="checkbox" checked="checked" />
        <span class="checkmark"></span>
    </label>
    

    CSS

    .container {
      display: block;
      position: relative;
      padding-left: 35px;
      margin-bottom: 12px;
      cursor: pointer;
      font-size: 22px;
      -webkit-user-select: none;
      -moz-user-select: none;
      -ms-user-select: none;
      user-select: none;
    }
    
    /* Hide the browser's default checkbox */
    .container input {
      position: absolute;
      opacity: 0;
      cursor: pointer;
      height: 0;
      width: 0;
    }
    
    /* Create a custom checkbox */
    .checkmark {
      position: absolute;
      top: 0;
      left: 0;
      height: 25px;
      width: 25px;
      background-color: #eee;
    }
    
    /* On mouse-over, add a grey background color */
    .container:hover input ~ .checkmark {
      background-color: #ccc;
    }
    
    /* When the checkbox is checked, add a teal background */
    .container input:checked ~ .checkmark {
      background-color: #3bb0a8;
    }
    
    /* Create the checkmark/indicator (hidden when not checked) */
    .checkmark:after {
      content: '';
      position: absolute;
      display: none;
    }
    
    /* Show the checkmark when checked */
    .container input:checked ~ .checkmark:after {
      display: block;
    }
    
    /* Style the checkmark/indicator */
    .container .checkmark:after {
      left: 9px;
      top: 5px;
      width: 5px;
      height: 10px;
      border: solid white;
      border-width: 0 3px 3px 0;
      -webkit-transform: rotate(45deg);
      -ms-transform: rotate(45deg);
      transform: rotate(45deg);
    }
    

    JSFiddle

    répondre
    0
  • Annulerrépondre