J'utilise le balisage HTML suivant pour ma grille.
<section class="grid">
<article class="grid-item width-2x height-2x">....</article>
<article class="grid-item">....</article>
<article class="grid-item">....</article>
<article class="grid-item width-2x">....</article>
<article class="grid-item height-2x">....</article>
<article class="grid-item">....</article>
<article class="grid-item">....</article>
<article class="grid-item width-2x height-2x">....</article>
</section>
Le code SCSS est quelque chose comme ci-dessous :
.grid {
display: grid;
grid-template-columns: repeat( 4, 1fr );
grid-gap: 30px;
align-items: start;
.grid-item {
&.height-2x {
grid-row: span 2;
}
&.width-2x {
grid-column: span 2;
}
}
}
Comme j'utilise le préfixeur automatique dans mon flux de travail, il ajoute automatiquement toutes les propriétés pertinentes avec les éléments suivants -ms
préfixe. Je peux le confirmer via l'élément inspect.
Le problème est que ce code fonctionne parfaitement dans Chrome, Firefox et Opera, mais lorsque j'ouvre cette page dans Microsoft Edge ou dans IE 11, tous les éléments de la grille se chevauchent dans la première cellule. D'après ce site ces navigateurs prennent en charge la grille CSS avec -ms
préfixe. J'ai créé un CodePen pour ce scénario.
Pourquoi cela ne fonctionne-t-il pas ?
.grid {
display: -ms-grid;
display: grid;
-ms-grid-columns: (1fr)[4];
grid-template-columns: repeat(4, 1fr);
-ms-grid-rows: (270px)[4];
grid-template-rows: repeat(4, 270px);
grid-gap: 30px;
}
.grid .grid-item {
background-color: #000;
color: #fff;
text-align: center;
line-height: 270px;
}
.grid .grid-item.height-2x {
-ms-grid-row: span 2;
grid-row: span 2;
}
.grid .grid-item.width-2x {
-ms-grid-column: span 2;
grid-column: span 2;
}
<section class="grid">
<article class="grid-item width-2x height-2x">....</article>
<article class="grid-item">....</article>
<article class="grid-item">....</article>
<article class="grid-item width-2x">....</article>
<article class="grid-item height-2x">....</article>
<article class="grid-item">....</article>
<article class="grid-item">....</article>
<article class="grid-item width-2x height-2x">....</article>
</section>
0 votes
Selon CanIUse, IE et Edge utilisent une ancienne version de la spécification de la grille. Cela pourrait être la cause du problème.
0 votes
Peut-on utiliser précise également qu'il est partiellement pris en charge sur IE 11 et Edge >16
0 votes
Pas d'alternative
-ms-*
correspond au même comportement dans les anciennes spécifications ? Si non, quel est l'intérêt d'ajouter ces propriétés ?0 votes
Le lien CodePen est cassé :(