首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止在使用3D CSS变换时裁剪元素

防止在使用3D CSS变换时裁剪元素
EN

Stack Overflow用户
提问于 2013-05-07 19:48:56
回答 1查看 2K关注 0票数 1

当使用3D CSS变换时,我遇到了阻止两个元素剪切的问题。以前有没有人遇到过这个问题并找到了解决方案?

我附上了最新版本的iOS的截图来说明这个问题--桌面版的Safari也会出现这个问题,但OS上的Chrome不会。

我理解为什么会发生这种情况,甚至在某些情况下这是正确的行为,但在不同的浏览器上是不一致的。

感谢您的帮助:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-06 17:30:24

这是由于渲染同一3d图层中的两个元素造成的。解决方案是在各自的层中渲染它们。

这是导致该问题的代码的简化版本:

CSS:

代码语言:javascript
复制
.wrapper {
    transform-style: preserve-3d;
    perspective: 1000;
}

.rotate {
    width: 100px;
    height: 100px;
    background: grey;
    transform: rotateX(45deg);
}

.clipped-element {
    width: 30px;
    height: 30px;
    background: blue;
}

HTML:

代码语言:javascript
复制
<div class="wrapper">
    <div class="rotate">
        <div class="clipped-element"></div>
    </div>
</div>

通过使用transform-styleperspective,我创建了一个渲染层。由于.clipped-element是该层的一部分,因此它存在于相同的3d空间中。

通过将被裁剪的元素移动到它自己的图层中,它存在于它自己的3d空间中,从而避免了裁剪问题。

CSS:

代码语言:javascript
复制
.wrapper {
    width: 200px;
    height: 200px;
}

.rotate__wrapper {
    width: 100%;
    height: 100%;
    transform-style: preserve-3d;
    perspective: 1000;
}

.rotate {
    width: 100px;
    height: 100px;
    background: grey;
    transform: rotateX(45deg);
}

.clipped-element {
    width: 30px;
    height: 30px;
    background: blue;
}

HTML:

代码语言:javascript
复制
<div class="wrapper">
    <div class="rotate__wrapper">
        <div class="rotate"></div>
    </div>
    <div class="clipped-element"></div>
</div>

我已经创建了an example on CodePen

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16418262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档