Erreur de positionnement absolu dans Internet Explorer 11

j'ai une page qui s'affiche correctement dans Google Chrome, Firefox, et Opera, mais a une erreur dans Internet Explorer 11.

voici le HTML, avec les parties inutiles enlevées:

<div class="container">
    <div class="page-content">
        <div id="corner"></div>
        ... page contents here
    </div>
</div>

Et voici la CSS:

.container {
    margin: 0;
    min-height: 100%;
    padding: 0;
}


.page-content::after {
    content: "";
    display: block;
    height: 1px;
}
.page-content {
    background: linear-gradient(137deg, transparent 121px, #ffffff 20px) repeat scroll 0 0 rgba(0, 0, 0, 0);
    margin: 190px 100px 150px;
    max-width: 64em;
    padding: 10px 120px 145px;
    z-index: 2;
}
.page-content {
    margin: auto;
    max-width: 64em;
    padding: 0 1em 1em;
}

#corner {
    background-color: #ffffff;
    background-image: url("corner.png");
    display: block;
    height: 200px;
    left: 120px;
    position: absolute;
    top: 20px;
    width: 200px;
    z-index: -1;
}

comme vous pouvez le voir sur cette capture d'écran, l'élément #corner n'est pas positionné correctement.

enter image description here

je suis vraiment pas sûr de ce qu'il faut essayer, puisque c'est spécifique à Internet Explorer. J'ai essayé différentes choses avec le code ces dernières heures sans succès jusqu'à présent.

21
demandé sur Sherwin Flight 2015-05-19 23:00:40

3 réponses

essayez d'ajouter position:relative aux éléments contenant div#corner , .container et / ou .page-content

position: relative sur un élément contenant fixe les limites d'un élément absolument positionné égal à l'élément parent, plutôt que la page entière.

ainsi, une valeur de left:0px n'est pas égale au côté supérieur gauche de la page, mais au côté gauche de l'élément parent.

il est un peu surprenant ce se produit seulement dans IE 11 bien que comme c'est une question assez simple qui me fait soupçonner qu'il pourrait facilement y avoir une solution secondaire, mais encore une fois, ayant dû soutenir IE depuis ~ie6 je suppose que je ne suis pas vraiment tout ce que surpris si son juste IE sucking.

14
répondu Rooster 2015-05-19 21:48:13

Juste au cas où cela aide quelqu'un d'autre:

j'ai eu un problème similaire. Il semble que ie11 ignorait la "bonne" propriété:

right: -320px;

mais il s'est avéré que c'était parce que j'avais placé la propriété "gauche" à:

left: initial;

S'avère que le mot-clé "initial" n'est pas supporté par ie11:

de gauche": la première ne fonctionne pas dans internet explorer

5
répondu costellofax 2017-05-23 12:02:26

Side note: Je ne sais pas si c'est ce que vous essayez de faire, mais min-height:100% ne fait pas content de la taille à 100% de la hauteur de l'écran. Remplacer celui-ci par ce qui suit:

position:absolute;
top:0;
bottom:0;  
left:0;
right:0;

de toute façon, vous avez mis #corner à

position: absolute;
top: 20px;
left: 120px;

et C'est là QU'IE le place, par rapport à la page entière. C'est en faisant ce que vous dites de faire. Avec les autres navigateurs, sa position est absolue par rapport à cet en-tête. Mais pour faire une supposition, vous avez probablement voulu mettre à position: relative .

4
répondu jaunt 2015-05-19 20:18:00