html - rotated div with perspective css3 -
i have 45 deg rotated div. trying on hover rotate around y-axis using css3 perspective. dont hover want , becomes square when hovered. maintain rotated 45 deg @ end of animation.
here code:
<div class="perspective"> <a href="#" class="box"> <div class="innerbox"> text </div> </a> </div> .perspective { position:relative; width:100px; height:100px; margin:200px 0px 0px 200px; -moz-perspective: 300px; -webkit-perspective: 300px; -o-perspective: 300px; -ms-perspective: 300px; perspective: 300px; } .box { width:80px; height:80px; position:absolute; top:0; bottom:0; left:0; right:0; margin:auto; border: 5px solid #000; -moz-transform: rotate(45deg); -webkit-transform: rotate(45deg); -o-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); -webkit-transition: 800ms ease; -moz-transition: 800ms ease; -ms-transition: 800ms ease; -o-transition: 800ms ease; transition: 800ms ease; } .innerbox { margin:30px 0px 0px 20px; -moz-transform: rotate(-45deg); -webkit-transform: rotate(-45deg); -o-transform: rotate(-45deg); -ms-transform: rotate(-45deg); transform: rotate(-45deg); } .box:hover { -moz-transform: rotatey(180deg); -webkit-transform: rotatey(180deg); -o-transform: rotatey(180deg); -ms-transform: rotatey(180deg); transform: rotatey(180deg); -webkit-transition: 800ms ease; -moz-transition: 800ms ease; -ms-transition: 800ms ease; -o-transition: 800ms ease; transition: 800ms ease; } i made example http://jsfiddle.net/o6mo0rjq/
you've rotated .box 45 degrees around z-axis. when specify new transform, initial rotation overwritten - new rotation on :hover, should specify original rotation. block declaration become:
.box:hover { -moz-transform: rotatey(180deg) rotatez(45deg); -webkit-transform: rotatey(180deg) rotatez(45deg); -o-transform: rotatey(180deg) rotatez(45deg); -ms-transform: rotatey(180deg) rotatez(45deg); transform: rotatey(180deg) rotatez(45deg); -webkit-transition: 800ms ease; -moz-transition: 800ms ease; -ms-transition: 800ms ease; -o-transition: 800ms ease; transition: 800ms ease; } here's jsfiddle demonstrate. (note: order in transform matters! because dictates order in rotations applied element, may give different results depending on transformations you're applying.)
hope helps! let me know if have questions.
Comments
Post a Comment