途中でバナーが表示された後、スクロールアップすると非表示になります。
ではコードです。
cssコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
/* バナーのスタイル */ #floatingBanner { position: fixed; right: 10px; bottom: 30px; width: 200px; padding:0px; visibility: hidden; transition: 0.5s; opacity: 0; line-height:1; z-index: 1000; /* z-indexを追加 */ } #floatingBanner img{ max-width:100%; width:100%; } /* 画面幅が768px以下の場合(タブレットやスマホ) */ @media only screen and (max-width: 768px) { #floatingBanner { width: 150px; /* バナー自体の幅も調整 */ } #floatingBanner img { width: 100%; /* 画像の幅もバナーに合わせて変更 */ } } /* 閉じるボタンのスタイル */ #closeBtn { position: absolute; cursor: pointer; top: -18px; right:-3px; z-index: 1010; border: 0; width:40px; height:40px; } #floatingBanner.is-active { opacity: 1; visibility: visible; } |
JavaScriptコード
閉じるボタンを押下すると、3時間非表示になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
// フローティングバナーの表示・非表示 window.addEventListener("scroll", function() { var banner = document.getElementById("floatingBanner"); var hideUntil = localStorage.getItem("hideBannerUntil"); if (!banner) return; // バナーが存在しない場合は何もしない var now = new Date().getTime(); // hideUntilが存在し、現在時刻がhideUntilより前ならバナーを非表示のままにする if (hideUntil && now <= hideUntil) { banner.classList.remove("is-active"); // バナーが表示されない return; } else if (hideUntil && now > hideUntil) { localStorage.removeItem("hideBannerUntil"); // 期限が切れている場合、ローカルストレージから削除 } // スクロール位置が300pxを超えた場合はclass "is-active"を追加、300px未満の場合は削除 var scrollPosition = window.pageYOffset || document.documentElement.scrollTop; if (scrollPosition > 300) { banner.classList.add("is-active"); } else { banner.classList.remove("is-active"); } }); // 閉じるボタンの動作 document.addEventListener("DOMContentLoaded", function() { var closeBtn = document.getElementById("closeBtn"); if (closeBtn) { closeBtn.addEventListener("click", function() { var banner = document.getElementById("floatingBanner"); if (banner) { banner.classList.remove("is-active"); var hideUntil = new Date().getTime() + 10800000; // 10800000ミリ秒 = 3時間 localStorage.setItem("hideBannerUntil", hideUntil); // 3時間後までバナーを非表示 } }); } }); |
HTMLコード
閉じるボタンは、画像で実装しています。
1 2 3 4 5 |
<!-- フローティングバナー --> <div id="floatingBanner"> <div id="closeBtn"><img src="./icon_16.png" /></div> <img src="./button.jpg" /> </div> |