Je n'arrive pas à créer une case à cocher générée par @Html.CheckBoxFor()
en tant que curseur.Styling @ Html.CheckBoxFor en tant que curseur
J'ai identifié le "coupable" comme champ de saisie masqué. J'ai fait un fiddle pour illustrer le problème. Il contient 3 cases à cocher - une générée par @Html.CheckBoxFor()
, la seconde utilisant le code généré par @Html.CheckBoxFor()
avec l'entrée cachée commentée et la troisième case à cocher classique.
Vous verrez que le curseur ne fonctionne pas pour le premier. Je besoin d'utiliser @Html.CheckBoxFor()
parce que je veux que la case à cocher à être lié à une propriété sur mon modèle, mais ne peut pas comprendre comment faire fonctionner le style de curseur ...
À mon avis j'ai:
<div class="slider">
@Html.CheckBoxFor(m => m.IsChecked, new { @class = "toggle-pill" })
@Html.LabelFor(m => m.IsChecked, new { @class = "toggle-label" })
</div>
Le Css pour coiffer:
.slider [type="checkbox"] {
display: none;
}
.slider .toggle-label {
display: block;
width: 40px;
height: 20px;
position: relative;
background: #ed495c;
border-radius: 10px;
transition: background 0.2s ease;
cursor: pointer;
}
.slider .toggle-label::before {
content: '';
display: block;
width: 50%;
height: 100%;
background: #ffffff;
border-radius: 50%;
box-shadow: 0 0 0 1px #d1d1d1;
position: absolute;
left: 0;
top: 0;
transition: transform 0.2s ease-in-out;
}
.slider [type="checkbox"]:checked + .toggle-label {
background: #93ed49;
}
.slider [type="checkbox"]:checked + .toggle-label::before {
-webkit-transform: translateX(100%);
transform: translateX(100%);
}
La propriété modèle, IsChecked
, est typeof bool
.
Vous devez mettre un peu plus de détails sur le code dans votre question pour qu'une réponse soit ajoutée. Mais j'ai [fourchu le violon] (https://dotnetfiddle.net/GRCvNQ) pour montrer que l'utilisation de '@CheckBoxFor()' peut fonctionner - nécessite juste une modification mineure de la css –
votre fiddle l'a corrigé .. soumettez la réponse, donc je peux l'accepter. Merci :) – kanpeki