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>