我正在开发的Web应用程序在很大程度上依赖于绝对定位,CSS转换和CSS转换。
我的标记:
<div class="wrapper">
<div class="background" ></div>
<div class="foreground" >
<div class="image" ></div>
</div>
</div>
我的CSS
.wrapper{
-webkit-perspective: 1600;
-webkit-perspective-origin-y: 30%;
height: 500px;
width: 100%;
}
.background{
position: absolute;
background-size: 100% 100%;
background-image: url("http://farm9.staticflickr.com/8321/8038059897_403c567211.jpg");
background-color: transparent;
position: absolute;
width: 100%;
height: 300px;
bottom: 0;
pointer-events: none;
-webkit-transform:translate3d(0px,0px,0px);
}
.foreground{
position: absolute;
top: 5%;
bottom: 5%;
left: 5%;
right: 5%;
-webkit-transform: rotateY(25deg);
}
.foreground .image{
background-image: url("http://farm7.staticflickr.com/6139/6198476123_754eaa1920_m.jpg");
position: absolute;
background-size: 100% 100%;
min-width: 100%;
min-height: 100%;
-webkit-transform:translate3d(0px,10px,0px);
}
您可以在http://jsfiddle.net/KjG3f/24/
看到它的实际效果如果您查看Safari(桌面和iOS)中的示例,您将看到前景图像被背景剪切。但是,在Chrome中,它似乎正常运行。
从背景中删除translate3d()似乎会导致渲染工作,但我要求translate3d()用于动画目的。
先发制人,谢谢你的帮助。
答案 0 :(得分:1)
我认为这是Chrome中的一个错误,确实存在两个问题(http://code.google.com/p/chromium/issues/detail?id=116710和http://code.google.com/p/chromium/issues/detail?id=102673 )。 Firefox表现出相同的行为。
Safari的做法很有意义......当您在3D空间中旋转前景图像时,应该剪切其后面的图像,因为它们位于同一平面上。如果更改前景或背景元素上的translate3d Z值,则可以将它们向前或向后移动到它们不相交的位置。
遗憾的是,对3D转换的跨浏览器支持仍然相当薄弱,祝你好运!