Result
CSSのみでシンプルなパララックス効果を実装
スクロールするとheaderとズレが出ているのが確認できます
css
html {/*ここのoverflow: hidden;が必須*/
height: 100%;
overflow: hidden;
}
body {/*奥行きを持たせる*/
color: #fff;
margin:0;
padding:0;
perspective: 1px;
transform-style: preserve-3d;
height: 100%;
overflow-y: scroll;
overflow-x: hidden;
}
header {
box-sizing: border-box;
min-height: 40vw;
padding: 30vw 0 5vw;
position: relative;
transform-style: inherit;
width: 100vw;
}
header, header:before {
background: 50% 50% / cover;
}
header::before {/*ここに背景画像を挿入*/
bottom: 0;
content: "";
left: 0;
position: absolute;
right: 0;
top: 0;
display: block;
background-color: #8a8;
background-image: url(https://picsum.photos/1900/1200);
background-size: cover;
transform-origin: center center 0;
transform: translateZ(-1px) scale(2);
z-index: -1;
min-height: 100vh;
}
header * {
font-weight: normal;
letter-spacing: 0.2em;
text-align: center;
margin: 0;
padding: 1em 0;
}
html
<header> <h1>hoge</h1> <p>foo bar</p> </header>
