現在パララックス効果で背景をスクロールすると画像が変わるというデザインを作りたいと考えております。
ですがスクロールすると画像指定している画像ではなく背景が見えてしまうという状態になっています。
画像の表示場所などはjQueryで指定したりしているのですがうまくいきません。
コードは下記のようなものを使用使用しています。
HTML
1<div class="parallax-wrap"> 2 <div class="parallax bg-01" id="parallax-01"> 3 <h1>タイトル</h1> 4 </div> 5 <div class="content">前面:コンテンツエリア</div> 6 <div class="parallax bg-02" id="parallax-02"> 7 <h2> 8 9 </h2> 10 </div> 11 <div class="content">前面:コンテンツエリア</div> 12 <div class="parallax bg-03" id="parallax-03"> 13 <h2> 14 15 </h2> 16 </div> 17 <div class="content">前面:コンテンツエリア</div> 18 </div>
CSS
1.parallax.bg-01 { 2 width: 100%; 3 position: relative; 4 background-image: url(../img/back/renga.jpg); 5 z-index: 1; 6} 7.parallax.bg-01::before { 8 content: ''; 9 background-color: rgba(0,0,0,.3); 10 position: absolute; 11 top: 0; 12 right: 0; 13 bottom: 0; 14 left: 0; 15 z-index: -1; 16} 17 18.parallax.bg-02 { 19 width: 100%; 20 position: relative; 21 background-image: url(../img/back/renga1.jpg); 22 z-index: -1; 23} 24.parallax.bg-02::before { 25 content: ''; 26 background-color: rgba(0,0,0,.3); 27 position: absolute; 28 top: 0; 29 right: 0; 30 bottom: 0; 31 left: 0; 32 z-index: -1; 33} 34 35.parallax.bg-03 { 36 width: 100%; 37 position: relative; 38 background-image: url(../img/back/renga2.jpg); 39 z-index: -1; 40} 41.parallax.bg-03::before { 42 content: ''; 43 background-color: rgba(0,0,0,.3); 44 position: absolute; 45 top: 0; 46 right: 0; 47 bottom: 0; 48 left: 0; 49 z-index: -1; 50} 51 52.parallax { 53 min-height: 400px; 54 background-position: center; 55 background-repeat: no-repeat; 56 background-size: cover; 57 padding: 60px; 58 box-sizing: border-box; 59} 60.content { 61 padding: 60px; 62 background-color: #fff; 63}
jQuery
1 $(function(){ 2 var target1 = $("#parallax-01"); 3 var targetPosOT1 = target1.offset().top; 4 var target2 = $("#parallax-02"); 5 var targetPosOT2 = target2.offset().top; 6 var target3 = $("#parallax-03"); 7 var targetPosOT3 = target3.offset().top; 8 var targetFactor = 0.5; 9 var windowH = $(window).height(); 10 var scrollYStart1 = targetPosOT1 - windowH; 11 var scrollYStart2 = targetPosOT2 - windowH; 12 var scrollYStart3 = targetPosOT3 - windowH; 13 $(window).on('scroll',function(){ 14 var scrollY = $(this).scrollTop(); 15 if(scrollY > scrollYStart1){ 16 target1.css('background-position-y', (scrollY - targetPosOT1) * targetFactor + 'px'); 17 }else{ 18 target1.css('background-position','center'); 19 } 20 if(scrollY > scrollYStart2){ 21 target2.css('background-position-y', (scrollY - targetPosOT2) * targetFactor + 'px'); 22 23 }else{ 24 target2.css('background-position','center'); 25 } 26 if(scrollY > scrollYStart3){ 27 target3.css('background-position-y', (scrollY - targetPosOT3) * targetFactor + 'px'); 28 }else{ 29 target3.css('background-position','center'); 30 } 31 }); 32});
下記の画像のように1枚目はページを開いた時です。
2枚目が下にスクロールして行った時です。
2枚目を見てもらったらわかるようにレンガの画像の下側に灰色の背景が見えてしまっています。
3枚目も同様です。
これを解決したいです。
何かご教授いただければ幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/21 05:52