translate3d()导致Safari中的剪辑

时间:2012-10-02 20:57:04

标签: css css3 safari webkit translate3d

我正在开发的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()用于动画目的。

先发制人,谢谢你的帮助。

1 个答案:

答案 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转换的跨浏览器支持仍然相当薄弱,祝你好运!