translateZ视差滚动不起作用

时间:2019-06-17 21:47:14

标签: parallax css-transforms

我正在尝试制作一个包含简单的纯CSS视差部分的页面。我将perspective应用于body元素,并将preserve-3d应用于section容器,但是背景图像的滚动速度并不是很慢,它们只是正常滚动。

HTML:

<div class="p-section">
    <div class="content"></div>
    <div class="bg"></div>
</div>
<div class="p-section">
    <div class="content"></div>
    <div class="bg"></div>
</div>
<div class="p-section">
    <div class="content"></div>
    <div class="bg"></div>
</div>

CSS:

body {
    width: 100vw;
    height: 100vh;
    overflow-x: hidden;
    overflow-y: scroll;
    perspective: 10px;
}
.p-section {
    transform-style: preserve-3d;
    height: 100vh;
    position: relative;
}
.content,
.bg {
    position: absolute;
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
}
.bg {
    transform: translateZ(-10px) scale(2);
}

这里是CodePen

1 个答案:

答案 0 :(得分:0)

perspective应用于body元素时不起作用。您需要将各节包装在一个包含元素中,并将perspective应用于该元素。

HTML

<div class="p-container">   
    <div class="p-section">
        <div class="content"></div>
        <div class="bg"></div>
    </div>
    <div class="p-section">
        <div class="content"></div>
        <div class="bg"></div>
    </div>
    <div class="p-section">
        <div class="content"></div>
        <div class="bg"></div>
    </div>
</div>

CSS

.p-container {
    width: 100vw;
    height: 100vh;
    overflow-x: hidden;
    overflow-y: scroll;
    perspective: 10px;
}

Example CodePen