Je ne parviens pas à afficher le style :checked
dans mes cases à cocher personnalisées dans Internet Explorer.
Ils fonctionnent parfaitement bien dans Chrome.
... mais dans IE
Voici le style pertinent
input[type="radio"], input[type="checkbox"] {
opacity: 1;
position: absolute;
top: -9999;
& + label {
vertical-align: middle;
}
}
input[type="radio"] + label:before,
input[type="checkbox"] + label:before {
content: '\f3fd';
font-family: 'Ionicons';
width: 26px;
height: 20px;
border: 2px solid #45555F;
font-size: 24px;
color: transparent;
display: table-cell;
text-align: center;
transition: all 0.3s linear;
-webkit-transition: all 0.3s linear;
-moz-transition: all 0.3s linear;
-ms-transition: all 0.3s linear;
-o-transition: all 0.3s linear;
padding: 0 2px;
}
input[type="radio"]:checked + label:before,
input[type="checkbox"]:checked + label:before {
content: '\f383';
font-family: 'Ionicons';
font-size: 24px;
width: 26px;
height: 20px;
text-align: center;
display: table-cell;
padding: 0 2px;
border: 2px solid #45555F;
color: #8ec549;
}
input[type="radio"] + label:before {
border-radius: 50% !important;
}
J'ai aussi remarqué qu'Internet Explorer supprime simplement le style lors du chargement ...
Merci pour toute aide!
EDIT: Démo Codepen (Cette démo ne fonctionne pas non plus dans IE)
Au lieu de modifier le pseudo-élément :before
lorsque coché, j’utilise simplement le pseudo-élément :after
pour l’état actif et balaye entre les opacités pour les masquer et les afficher en conséquence.
Merci à tous ceux qui ont aidé.
Essayez une autre approche, j'utilise habituellement l'approche présentée ci-dessous.
Le point important ici est: nous devrions utiliser 'for' attribut sur l'élément 'label' pour qu'il soit lié à l'élément 'input' correspondant.
Cela fonctionnera également dans IE.
input[type="checkbox"] {
display: none;
}
label {
padding-left: 25px;
position: relative;
cursor: pointer;
}
label::before {
content: "";
width: 16px;
height: 16px;
border: 1px solid #aaa;
display: block;
position: absolute;
left: 0;
top: 0;
}
label p {
display: inline-block;
}
label input[type="checkbox"]:checked + p::after {
content: "";
display: block;
position: absolute;
width: 10px;
height: 5px;
border-left: 2px solid;
border-bottom: 2px solid;
transform: rotate(-45deg);
left: 3px;
top: 4px;
color: #3da5c3;
}
<label for="testInput">
<input type="checkbox" name="test" id="testInput" value=1 />
<p>Test Checkbox</p>
</label>
Cela ressemble à un duplicata de Dans IE11, utiliser pseudo element :: before et display: les champs table-cellule et glyphicons ne s'afficheront pas .
En bref, il y a un bogue dans IE10 et 11 où le style font
est ignoré pour les pseudo-éléments avec l'affichage table-cell
.
Comme indiqué dans le problème de duplication présumée, une solution appropriée consisterait à utiliser un autre type display
pour le pseudo-élément en association avec les ajustements nécessaires de vos styles width
et height
.
Le problème que vous rencontrez est unIE10 - IE11
bug connu, où ces deux navigateurs ont tendance à ignorer complètement la déclaration de police dans les pseudo-éléments avec display: table-cell
. Cela signifie que des propriétés telles quefont
,font-size
,font-family
,color
etc seront toutes supprimées.
Pour contourner ce bogue , il suffirait dans votre cas de:
▶ Utilisezdisplay: table-cell
avec un élément réel au lieu d'un pseudo-élément, ou
▶ Remplacezdisplay: table-cell
pardisplay: inline-block
ou un autrenon-table-cell
pour votre pseudo-élément.
▶ Déclarez une propriétéfloat
qui a une valeur autre quenone
de sorte qu'elle tournedisplay: table-cell
endisplay: block
.
Voici quelques questions qui rencontrent un problème avecdisplay: table-cell
et qui pourraient vous être utiles:
▶ IE pas de coloration: avant comme tableau-cellule, pourquoi?
▶ Positionnement de l'écran intérieur div: tableau-cellule dans IE 10
▶ Afficher la cellule de tableau sur le pseudo-élément dans IE11