javascript - 如何在 Safari 上修复 3D 变换图像上的剪辑文本?

标签 javascript css safari gsap

我正在使用 TweenLite 为 3d(透视)图像制作动画,并且图像上有不属于动画一部分的文本。但在 Safari(iOS 和 OsX)和 Chrome (iOS) 中,图像中“更接近”用户的部分会覆盖文本。

jsFiddle:http://jsfiddle.net/k1afbe3k/6/

HTML:

<div id="container">
    <div id="cover">
        <img src="http://i.imgur.com/lKBKKyj.jpg" alt="test" />
    </div>
    <div id="text">
        <h1>This is some text</h1>
    </div>
</div>
<div id="btn">Animate</div>

CSS:

#container { height: 200px; position: relative; width: 200px; }
#cover { height: 100%; left: 0; position: absolute; top: 0; width: 100%; z-index: 1; }
#cover img { display:block; height: 100%; width: 100%; }
#text { height: 100%; left: 0; position: absolute; top: 0; width: 100%; z-index: 10; -webkit-transform: translate3d(0,0,0); }
#text h1 { color: #fff; text-align: center; }

JavaScript:

TweenLite.set($('#container'), {perspective:1800});
$('#btn').on('click', function(){
    TweenLite.to($('#cover'), 0.4, { rotationY: -15 });
});

(我使用的是 1.14.2 版本的 TweenLite 和 CSSPlugin)

我尝试设置一个 z-index,我尝试使用 -webkit-transform: translate3d(0,0,0) 但到目前为止对 Safari 没有任何效果。 (它在 Firefox、Chrome(桌面和 Android)、Explorer 11 中完美运行...)

有人知道我该如何解决这个问题吗?

最佳答案

您需要将 transformStyle:"preserve-3d"z:50 添加到您的文本 div #text:

TweenLite.set($('#text'), {transformStyle:"preserve-3d",z:50});

所以你的代码应该是这样的:

$(document).ready(function(){
    TweenLite.set($('#container'), {perspective:1800});
    // add the below
    TweenLite.set($('#text'), {transformStyle:"preserve-3d", z:50});
    $('#btn').on('click', function(){
        TweenLite.to($('#cover'), 0.4, { rotationY: -15 });
    });
});

工作示例(在 Chrome 或 Safari 中测试):

http://jsfiddle.net/k1afbe3k/16/

您必须在 z 轴上移动文本 div 的原因是图像在 y 轴上旋转部分隐藏了您的文本。

关于javascript - 如何在 Safari 上修复 3D 变换图像上的剪辑文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27299576/

相关文章:

javascript - 如何显示消失的分页框

html - 使用 CSS 设置 block 元素的真实(偏移)宽度/高度?

CSS 过渡效果不起作用

jquery - 其余内容之前的 100% 宽度和高度图像

javascript - Safari 5 对 JavaScript 书签使用的改变?

javascript - requirejs - 当需要使用服务器生成的值进行初始化时如何构建应用程序

php - JQUERY 函数不适用于 AJAX 内容

javascript - 使用 j 查询在一个下拉列表中选择选项时如何填充 json?

css - 为什么我的 div 在 Safari 中不能水平对齐?

ios - 在 iOS 的移动 Safari 中播放时,流媒体音频失真