実現したいこと↓
サイトのページトップリンクのボタンを
①ページ上部では「Scroll」の表示
②スクロールダウンしたら画像1を表示(ページトップリンクになります)
③ページトップリンクをクリックすると画像2に変化しページトップへスムーススクロール
④ページトップへ戻ると再度「Scroll」表示
現状↓
①、②、④は実現済みですが、③の画像の切り替えが実現できません。
参考サイトhttps://coco-factory.jp/ugokuweb/move01/8-1-8/
試したこと↓
html:Scrollとページトップリンクを用意。
CSS:デフォルト表示のページトップリンクと、クリック時のクラス付与したページトップリンクを用意。(画像は背景で設定しました。)
jQuery:スクロールダウン・ページトップとローカルナビのスムーススクロール、ページトップリンクをクリックしたらクラスを付与する設定を用意。
以下それぞれの該当部ソースです。
html
1 <p id="scroll_down" class="flexbox">scroll<img alt="scrolldown" src ="img/scroll.png"></p> 2 <p id="pagetop"><a href="#"></a></p> 3 4 <script src="https://cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.min.js"></script> 5 <script src="script.js"></script>
CSS
1 #pagetop a { 2 /*aタグの形状*/ 3 display: block; 4 width: 100px; 5 height: 100px; 6 /*背景画像の指定*/ 7 background: url("img/pagetop.png") no-repeat center; 8 background-size: contain; 9 } 10 11 #pagetop.floatAnime a { 12 width: 100px; 13 height: 150px; 14 /*背景画像の指定*/ 15 background: url("img/pagetop-2.png") no-repeat center; 16 background-size: contain; 17 /*アニメーションの指定*/ 18 animation: floatAnime 2s linear infinite; 19 opacity: 0; 20 } 21 22 @keyframes floatAnime { 23 0% { transform: translateX(0); opacity: 0; } 24 25% { transform: translateX(-6px);opacity: 1; } 25 50% { transform: translateX(0) } 26 100% { transform: translateX(6px);opacity: 1; } 27 }
jQuery
1// スクロールダウン・ページトップ 2 3$(function() { 4 var pagetop = $('#scroll_down'); 5 6 $(window).on('scroll', function () { 7 if ($(this).scrollTop() > 500) { 8 pagetop.fadeOut(500); 9 } else { 10 pagetop.fadeIn(); 11 } 12 }); 13}); 14 15 16$(function() { 17 var pagetop = $('#pagetop'); 18 pagetop.hide(); 19 20 $(window).on('scroll', function () { 21 if ($(this).scrollTop() > 1000) { 22 pagetop.fadeIn(1000); 23 } else { 24 pagetop.fadeOut(); 25 } 26 }); 27 28 29 pagetop.click(function () { 30 $('body, html').animate({ scrollTop: 0 } 31 , 600); 32 return false; 33 }); 34}); 35 36// ローカルナビのスムーススクロール 37 38$(function(){ 39 $('a[href^="#"]').click(function(){ 40 var speed = 700; 41 var href= $(this).attr("href"); 42 var target = $(href == "#" || href == "" ? 'html' : href); 43 var position = target.offset().top; 44 $("html, body").animate({scrollTop:position}, speed, "swing"); 45 return false; 46 }); 47}); 48 49// #pagetopをクリックした際の設定 50$('#pagetop').click(function () { 51 var scroll = $(window).scrollTop(); 52 if(scroll > 0){ 53 $(this).addClass('floatAnime'); 54 $('body,html').animate({ 55 scrollTop: 0 56 }, 2000,function(){ 57 $('#pagetop').removeClass('floatAnime'); 58 }); 59 } 60 return false; 61});
説明に不足あればご指摘ください。
わかりにくいかと思いますが、どうぞよろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー