CSSだけでシンプルなパララックス効果

Ads

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>

via

Pure css Parallax header