【忘備録】iOSにも対応した背景固定の方法【CSS擬似要素で実装】

CODE 忘備録

CSSの擬似要素を使って背景を固定する方法

この記事ではCSSの擬似要素を使って、背景を固定する方法を記載しています。
参考になった人はコピペして使って下さい。

background-attachment: fixed;
background-size: cover;

上記のコードでも背景を固定することはできますが、iOSでは動きません。

別の方法として擬似要素に背景を持たせて、それを固定するという方法があります。

<div class="parent">

    <div class="child">
      <h2>Title</h2>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
    </div>
    <div class="child">
      <h2>Title</h2>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
    </div>
    <div class="child">
      <h2>Title</h2>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
    </div>
    <div class="child">
      <h2>Title</h2>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
    </div>
    <div class="child">
      <h2>Title</h2>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
    </div>
    <div class="child">
      <h2>Title</h2>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
    </div>
    <div class="child">
      <h2>Title</h2>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
      <p>text text text text text text text text text text text text </p>
    </div>

  </div>
.parent:before{
    content:"";
    display:block;
    position:fixed;
    top:0;
    left:0;
    z-index:-1;
    width:100%;
    height:100vh;
    background:url(https://images.unsplash.com/photo-1526025202335-cf944dc3f799?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=800&q=60) center no-repeat;
    background-size:cover;
  }


.child{
  margin: 50px auto;
  text-align: center;
  font-size: 1.6rem;
  color: white;
  }
.child:nth-child(even){
  color: salmon;
}

これで背景が固定されました。

.parent:before{
content:””;
display:block;
position:fixed;
top:0;
left:0;
z-index:-1;
width:100%;
height:100vh;
background:url() center no-repeat;
background-size:cover;
}

ここで重要なコードは上記の部分ですね。
擬似要素に背景を指定して固定しています。
個人的な忘備録ですが、参考になった人はコピペして使ってください。

関連記事【drawer.jsの使い方】レスポンシブメニューの実装方法を解説

関連記事【Sassとは?】初心者向けに導入方法を解説