我认为你想要达到的效果可能更适合于css 3d旋转而不是倾斜。
我已经编辑了你的小提琴,但有一些变化。
1)设置一个 perspective 在身体上。这将允许 .container 在3d空间中操纵。
perspective
.container
2)改变了 transform 规则使用 rotate 代替 skew 。
transform
rotate
skew
3)我已经改变了css以绝对定位4个项目,而不是浮动它们。这意味着他们将适应他们所处的任何窗口的大小。
无论如何,希望这应该给你一个开始,以获得你想要的效果。
$( "#togglelogs" ).click(function() { $( "#logs" ).toggle( 100, function() { // Animation complete. }); }); $( "body" ).mousemove(function( event ) { var pos = "Mouse Position: "; var centerX = $( "body" ).width() / 2; var centerY = $( "body" ).height() / 2; var oppositeposX = event.pageX - centerX; var oppositeposY = event.pageY - centerY; var offset = "rotateY(" + oppositeposX * .2 + "deg) rotateX(" + (-1 * oppositeposY * .2) + "deg)"; var skew = {'transform' : offset}; var oppositeskew = {'transform' : offset}; pos += "x = " + event.pageX + ", " + "y = " + event.pageY; $( "#mouselog" ).empty(); $( "#mouselog" ).append(pos); $( "#center" ).empty(); $( "#center" ).append("Center X = " + centerX + ", Center Y = " + centerY); $( "#offset" ).empty(); $( "#offset" ).append("Offest X = " + oppositeposX + ", Offest Y = " + oppositeposY); $(".container").css(skew); $( "#css" ).empty(); $( "#css" ).append(offset); });
html , body { height: 100%; min-height:100%; } body { -webkit-perspective: 1000px; perspective: 1000px; overflow:hidden; } #togglelogs { display: block; font-size: 10px; position: absolute; top: 0; right: 0; background: rgba(0,0,0,0.6); color: #fff; padding: 4px; border-radius: 0 0 0 4px; cursor: pointer; } .container { position:absolute; height: 100%; top:0; bottom:0; left:0; right:0; } .grid-object { width: calc(50% - 2px - 4px); height: 50%; margin: 1px; text-align: center; background: #aaa; border: 1px solid #222; position: absolute; left:0; top:0; } .grid-object + .grid-object { left: 50%; } .grid-object + .grid-object + .grid-object{ left: 0; top:50%; } .grid-object + .grid-object + .grid-object+ .grid-object { left: 50%; top:50%; } #logs { position: absolute; font-size: 10px; background: rgba(0,0,0,.6); color: #fff; display: block; width: 100%; top: 0; display: none; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div class="container"> <div class="grid-object"> <h3>1</h3> </div> <div class="grid-object"> <h3>2</h3> </div> <div class="grid-object"> <h3>3</h3> </div> <div class="grid-object"> <h3>4</h3> </div> </div> <div id="logs"> <div id="mouselog"></div> <div id="center"></div> <div id="offset"></div> <div id="css"></div> </div> <div id="togglelogs">Toggle Logs</div>