iT邦幫忙

2025 iThome 鐵人賽

DAY 8
0

昨天我已經在首頁加上了 Banner 圖片,今天我想進一步讓它更動態。

我想要的效果是:當頁面往下滑動時,Banner 圖片會慢慢淡出;往回滑時,圖片又會恢復原本的樣子


1. CSS- 設定banner

https://ithelp.ithome.com.tw/upload/images/20250922/20168364uSzceEwcDl.png


2. JavaScript – 捲動淡出效果

https://ithelp.ithome.com.tw/upload/images/20250922/20168364I3ioQM7Gab.png
說明:

window.addEventListener("scroll", function () {
  • 給整個視窗(window)加上一個監聽器 (event listener),當使用者滾動網頁 (scroll) 的時候,就會執行裡面的程式

const banner = document.querySelector(".banner");
  • 抓取網頁中 class 名為 banner 的元素,也就是放在最上方的圖片

const scrollY = window.scrollY; // 滾動距離
  • window.scrollY 代表目前網頁往下滾動了多少像素 (px)
    例如:
    • 剛進網頁還沒滾動 → scrollY = 0
    • 往下滑 150px → scrollY = 150

const fadePoint = 300; // 超過300px開始淡出
  • 設定一個「淡出點」:當滾動距離到 300px 時,banner 的透明度應該要完全消失

let opacity = 1 - scrollY / fadePoint;
  • 算出透明度:
    • 一開始 scrollY = 0 → opacity = 1(完全不透明)
    • 滾動到一半 scrollY = 150 → opacity = 0.5(半透明)
    • 滾動到 scrollY = 300 → opacity = 0(完全消失)

if (opacity < 0) opacity = 0; // 最低透明度0
if (opacity > 1) opacity = 1; // 最高透明度1
  • 防呆用:確保透明度永遠在 0 ~ 1 之間。
    • 0 代表完全透明
    • 1 代表完全不透明

banner.style.opacity = opacity;
  • 把計算好的透明度值套用到 CSS → 改變 .banner 的 opacity,就會讓圖片隨著滾動慢慢淡掉

總結流程

  1. 偵測「網頁滾動」
  2. 取得目前滾動距離 (scrollY)
  3. 根據滾動距離,算出圖片透明度
  4. 把透明度更新到 .banner → 達到滾動漸層淡出的效果

畫面展示

初始畫面:
https://ithelp.ithome.com.tw/upload/images/20250922/20168364dE22srlkRY.png

開始滑動畫面:
https://ithelp.ithome.com.tw/upload/images/20250922/20168364v1H17HKE1M.png
https://ithelp.ithome.com.tw/upload/images/20250922/20168364RKfPcOS7Gs.png
https://ithelp.ithome.com.tw/upload/images/20250922/20168364AgmdSHYqPE.png


上一篇
加入圖片素材
下一篇
專輯展示區及滑動效果(1)
系列文
打造專屬於歌手的音樂資訊網頁:從零開始的前端實作與技術分享9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言