52 votes

Pourquoi la visibilité arrière cachée ne fonctionne pas dans IE10 lorsque la perspective est appliquée aux éléments parents ?

Ok, voici un autre problème avec IE10. Le problème est que l'application de la perspective sur les éléments parents brise le paramètre de visibilité arrière cachée. Veuillez voir cette astuce : http://jsfiddle.net/2y4eA

Lorsque vous survolez le carré rouge, il tourne de 180° sur l'axe des x, et même si la visibilité de la face arrière est réglée sur cachée, la face arrière est affichée, du moins jusqu'à ce que le 180° soit atteint, puis elle disparaît. Enlevez la propriété de perspective, et vous verrez que cela fonctionne comme prévu, la face arrière n'est pas visible du tout, mais bien sûr l'effet 3D est perdu.

Il est possible de contourner ce problème en appliquant une perspective dans la propriété transform : http://jsfiddle.net/M2pyb Mais cela pose des problèmes en conjonction avec transform-origin-z, lorsque z est défini à une valeur autre que 0, l'ensemble est "mis à l'échelle" : http://jsfiddle.net/s4ndv donc malheureusement ce n'est pas une solution.

Le truc de la visibilité arrière est probablement un bug ? Si oui, y a-t-il une solution autre que celle que j'ai mentionnée ?

1 votes

Avez-vous essayé l'un des vieux remèdes qui réparent souvent Internet Explorer ? Je n'ai pas joué avec la v10, mais normalement, changer le mode d'affichage, s'assurer qu'il y a unLayout, utiliser la fonction overflow:hidden , zoom:1 , z-index:1 ajouter des enfants, - en fait, tout ce à quoi vous pouvez penser qui peut modifier la fonction de rendu utilisée... Et si vous appliquiez backface-visibility au parent également ? Il semble qu'IE pourrait le traiter comme une entité 3D entièrement distincte.

0 votes

Je pensais que le concept de mise en page avait disparu dans IE10 au plus tard ? Je n'avais pas essayé jusqu'à présent, malheureusement cela ne sert à rien, le comportement ne change pas. Appliquer la visibilité en arrière-plan aux deux éléments ne fait rien non plus.

0 votes

Hmm... ouais je ne serais pas surpris s'ils s'étaient débarrassés de Layout mais comme je l'ai dit ce ne sont que des suppositions car je n'ai pas encore eu la chance de m'asseoir avec IE10. C'est ennuyeux alors :/ le bon vieil Internet Explorer comme d'habitude... il est toujours en développement cependant, donc vous pouvez trouver qu'il est corrigé.

0voto

Jon Points 2102

J'ai implémenté la solution proposée par @torbonaut et @chowey dans ceci jsfiddle

html

<div id='container'>
<div class='backhide bottom'>bottom</div>
<div class='backhide top'>top</div>
</div>

css

  #container, .bottom, .top {
    width: 200px;
    height: 300px;
    position: absolute;
    -webkit-transition: 1.5s ease-in-out;
    -moz-transition: 1.5s ease-in-out;
    -ms-transition: 1.5s ease-in-out;
    -o-transition: 1.5s ease-in-out;
    transition: 1.5s ease-in-out;
  }

  .backhide{

    -moz-backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
  }

  #container:hover .bottom {
    -moz-transform: perspective(800px) rotateY(0);
    -webkit-transform: perspective(800px) rotateY(0);
    transform: perspective(800px) rotateY(0);
  }
  #container:hover .top {
    -webkit-transform: perspective(800px) rotateY(-180deg);
    -moz-transform: perspective(800px) rotateY(-180deg);
    transform: perspective(800px) rotateY(-180deg);
  }

  .bottom {
    background-color: #ff0000;
    -moz-transform: perspective(800px) rotateY(180deg);
    -webkit-transform: perspective(800px) rotateY(180deg);
    transform: perspective(800px) rotateY(180deg);
  }

  .top {
    background-color: #e0e0e0;

    -moz-transform: perspective(800px) rotateY(0deg);
    -webkit-transform: perspective(800px) rotateY(0deg);
    transform: perspective(800px) rotateY(0deg);

  }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X