パララックスっぽい装飾がしたい
おしゃれな装飾したいなぁと思ってbackground-attachment:fixedにたどり着いても
スマホとかiPhone(ios)で使えないパターンに陥いるよね。
で、調べてみたところ、attachment:fixed がsafari(iPhone)では効かないようでした。
他の方法だと、jsを使うとか、プラグインを使うような感じで書かれています。
あとは、1枚だけ背景固定してheightを100vhにするパターン。そうじゃないんだよね。
こっちは複数枚の画像と文字をおきたいんだ!!!
疑似クラスならどうにかなるって試してみたけど、iPhoneではどのサイトでもだめ。
js勉強するしかないかと思ったんだけど、どうにかならないかなとCSSだけでできないか試行錯誤してみた。
要は、safariで使えるCSSのみでやればいいんでしょってことで、ベンダープレフィックスがあるCSSで調整してみることにしました。
たどり着いた答えは、-webkit-sticky!
とりあえず、デモで確認してみてください。
iosでもパララックスっぽいDEMO
できてますよね!CSSだけでそれっぽくできるんです。
ここでは、position の stickyで代用しています。
stickyなら、safariのベンダープレフィックスがあるので、iPhoneでも適用できます!
ちょっとスムーズ感に欠けるけど、CSSだけでパララックスっぽくなりました。
safari対応のHTML
各箱に画像を背景で固定。動かす文字にstickyを設定するような感じです。
今回は、見出しとテキスト部分を同じ箱に入れていますが、分けるともっときれいに見えるかもしれません。
お試しあれ。
<div class="demo demo13"> <div class="box img-01"> <div class="bbx"> <div class="midasi">見出しとか入れたいところ</div> <div class="txt">文章とか説明入れたところ</div> </div> </div><div class="box img-02"> <div class="bbx"> <div class="midasi">見出しとか入れたいところ</div> <div class="txt">文章とか説明入れたところ</div> </div> </div> <div class="box img-03"> <div class="bbx"> <div class="midasi">見出しとか入れたいところ</div> <div class="txt">文章とか説明入れたところ</div> </div> </div> </div>
safari対応のCSS
.demo { background: #eee; position: relative; } .box { background: center center / cover; } .box.img-01 { background: url(http://office-kibunya.com/wp-content/uploads/2019/10/number.jpg); height: 40rem; } .bbx { height: 40rem; } .bbx .midasi{ background: #ffa50000; position: sticky; position: -webkit-sticky; /* Safari */ top: 7rem; text-align: center; display:block; padding: 4rem 1rem 7rem 1rem; line-height: 1rem; text-shadow: #fff 2px 0px 0px, #fff -2px 0px 0px, #fff 0px -2px 0px, #fff 0px 2px 0px, #fff 2px 2px 0px, #fff -2px 2px 0px, #fff 2px -2px 0px, #fff -2px -2px 0px, #fff 1px 2px 0px, #fff -1px 2px 0px, #fff 1px -2px 0px, #fff -1px -2px 0px, #fff 2px 1px 0px, #fff -2px 1px 0px, #fff 2px -1px 0px, #fff -2px -1px 0px, #fff 1px 1px 0px, #fff -1px 1px 0px, #fff 1px -1px 0px, #fff -1px -1px 0px; font-weight: bold; } .bbx .txt { background: #ffffff; position: sticky; position: -webkit-sticky; /* Safari */ top: 16rem; text-align: center; display: block; padding: 2rem 1rem 2rem 1rem; line-height: 1rem; min-height: auto; } .box.img-02 { background-image: url(http://office-kibunya.com/wp-content/uploads/2019/10/pc.jpg); height: 40rem; } .box.img-03 { background-image: url(http://office-kibunya.com/wp-content/uploads/2019/10/gazou.jpg); height: 40rem; }
スマホでの崩れ回避できるし、jquery使わなくてもいいからめっちゃ簡単!
▼一応ほかのサイトとかで紹介されているデモも作っといた。
これだと、PCではきれいに見れても、スマホでは画像が停止してしまうし、大きくなってしまいます。
スマホ向けではないので注意!
PCのみ!パララックスっぽいDEMO
PCのみ!パララックスっぽいHTML
<div class="demo"> <div class="back img-01">見出しとか入れたいところ </div> <div class="txt">文章とか説明入れたれたいところ </div> <div class="back img-02">見出しとか入れたいところ </div> <div class="txt">文章とか説明入れたれたいところ </div> <div class="back img-03">見出しとか入れたいところ </div> <div class="txt">文章とか説明入れたれたいところ </div> </div>
PCのみ!パララックスっぽいCSS
.demo .back { width: 100%; min-height: 200px; background-position: center top; background-repeat: no-repeat; background-attachment: fixed; background-size: cover; text-align: center; padding: 60px; } .demo .txt { min-height: 200px; width: 100%; padding: 60px; background-color: #fff; text-align: center; } .demo .back.img-01 { background-image: url(http://office-kibunya.com/wp-content/uploads/2019/10/number.jpg); } .demo .back.img-02 { background-image: url(http://office-kibunya.com/wp-content/uploads/2019/10/pc.jpg); } .demo .back.img-03 { background-image: url(http://office-kibunya.com/wp-content/uploads/2019/10/gazou.jpg); }
やっぱり比べるとattachmentが使えたほうがきれいにみえますね。
それでもスマホで対応したいようであれば、ぜひ参考にしてみてください。