html - CSS flip-animation not working in Safari -


based on this excellent blogpost implemented flip-animation on page of web-application working on. @ first used css-classes presented in top of blogpost unfortunately doesn't work in ie10 started using css-class proposed solution working in ie10 presented @ end of blogpost.

i simplified example tremendously post code looks this

html:

<!doctype html> <html lang="en"> <head>     <title>welcome!</title>     <meta charset="utf-8">     <meta http-equiv="x-ua-compatible" content="ie=edge">     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">     <link href="flipper.css" rel="stylesheet">     <script src="js/jquery-1.11.2.js"></script>     <script src="js/bootstrap.min.js"></script> </head> <body> <div class="flip-container" id="flipframe">     <div class="flipper">         <div class="front">             front content             <br>             <button onclick="flipframe()">                 start <b>here</b>             </button>         </div>         <div class="back">             content         </div>     </div> </div> </body>  <script> function flipframe(){     document.queryselector("#flipframe").classlist.toggle("hover") } </script> 

css:

/* entire container, keeps perspective */ .flip-container {     perspective: 1000;     transform-style: preserve-3d; } /*  updated! flip pane when hovered */ .flip-container.hover .back {     -webkit-transform: rotatey(0deg);     -moz-transform: rotatey(0deg);     -ms-transform: rotatey(0deg);     transform: rotatey(0deg);     } .flip-container.hover .front {     -webkit-transform: rotatey(180deg);     -moz-transform: rotatey(180deg);     -ms-transform: rotatey(180deg);     transform: rotatey(180deg);        }  .flip-container, .front, .back {     width: 320px;     height: 480px; }  /* flip speed goes here */ .flipper {     transition: 0.6s;     transform-style: preserve-3d;     position: relative; }  /* hide of pane during swap */ .front, .back {     backface-visibility: hidden;     transition: 0.6s;     transform-style: preserve-3d;     position: absolute;     top: 0;     left: 0; }  /*  updated! front pane, placed above */ .front {     z-index: 2;     -webkit-transform: rotatey(0deg);     -moz-transform: rotatey(0deg);     -ms-transform: rotatey(0deg);     transform: rotatey(0deg);     }  /* back, hidden pane */ .back {     -webkit-transform: rotatey(180deg);     -moz-transform: rotatey(180deg);     -ms-transform: rotatey(180deg);     transform: rotatey(180deg);   } 

this code works in chrome , in edge. on ie10 works there no flip-animation. switches front-div back-div without flipping that's still ok. in safari (on mac os x , iphone), however, not working correctly. both of divs visible next each other (with back-div being mirrored)

does know how can functionality work in ie10 in safari on mac os x , iphone?

the code snippet can found , executed here: https://jsfiddle.net/jrwx3l2e/1/

you need prefix backface-visibility safari according can use, newest version 9.1 @ time of writing.

-webkit-backface-visibility: hidden; backface-visibility: hidden; 

updated example

document.getelementbyid("mybtn").addeventlistener("click", function() {    document.queryselector("#flipframe").classlist.toggle("hover")  });
/* entire container, keeps perspective */    .flip-container {    -webkit-perspective: 1000;    perspective: 1000;    -webkit-transform-style: preserve-3d;    transform-style: preserve-3d;  }    /*  updated! flip pane when hovered */    .flip-container.hover .back {    -webkit-transform: rotatey(0deg);    transform: rotatey(0deg);  }    .flip-container.hover .front {    -webkit-transform: rotatey(180deg);    transform: rotatey(180deg);  }    .flip-container,  .front,  .back {    width: 320px;    height: 480px;  }    /* flip speed goes here */    .flipper {    -webkit-transition: 0.6s;    transition: 0.6s;    -webkit-transform-style: preserve-3d;    transform-style: preserve-3d;    position: relative;  }    /* hide of pane during swap */    .front,  .back {    -webkit-backface-visibility: hidden;    backface-visibility: hidden;    -webkit-transition: 0.6s;    transition: 0.6s;    -webkit-transform-style: preserve-3d;    transform-style: preserve-3d;    position: absolute;    top: 0;    left: 0;  }    /*  updated! front pane, placed above */    .front {    z-index: 2;    -webkit-transform: rotatey(0deg);    transform: rotatey(0deg);  }    /* back, hidden pane */    .back {    -webkit-transform: rotatey(180deg);    transform: rotatey(180deg);  }
<div class="flip-container" id="flipframe">    <div class="flipper">      <div class="front">        front content        <br>        <button id="mybtn" onclick="flipframe()">          start <b>here</b>        </button>      </div>      <div class="back">        content      </div>    </div>  </div>


Comments

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

android - Keyboard hides my half of edit-text and button below it even in scroll view -

css - Make div keyboard-scrollable in jQuery Mobile? -