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; 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
Post a Comment