iT邦幫忙

2025 iThome 鐵人賽

DAY 16
0
自我挑戰組

coding小白盜版學校官網ㄉ30天挑戰日記系列 第 16

coding小白盜版學校官網ㄉ30天挑戰日記 舉一反三ㄉ一天

  • 分享至 

  • xImage
  •  

各位鄉親晚安,歡迎來到 coding 小白盜版學校官網的第16天~這個計畫的內容是我這個 coding 超新手會在這30天裡,把複刻學校官網當作目標,從最基礎的前端 html、css、js...開始邊做邊學,紀錄每天的學習進度,看看一個月過去能學到什麼程度。

今天重啟我們的盜版大業,來做 youtube 連結小視窗的輪播!
之前已經做(抄)過大橫幅 banner 的輪播效果,所以基本上只需要照搬然後微調一些小數字就好了
(↓↓↓↓↓前幾天跟chatgpt學長抄來ㄉ↓↓↓↓↓)

const slides = document.querySelector('.slides');  // 找到 slides 容器
const totalImages = 5;                             // 真正圖片數量
let index = 0;                                     // 當前圖片索引
const intervalTime = 4000;                         // 每張停留時間(毫秒)

function nextSlide() {
  index++;                                         // 移到下一張
  slides.style.transition = 'transform 1s ease';   // 平滑滑動
  slides.style.transform = `translateX(-${(100/6)*index}%)`; // 滑到對應位置

  // 如果到最後一張(複製的第一張)
  if (index === totalImages) {
    setTimeout(() => {
      slides.style.transition = 'none';          // 取消動畫
      slides.style.transform = 'translateX(0%)'; // 拉回第一張
      index = 0;                                 // 重置索引
    }, 1000); // 等待 1 秒,與 transition 時間一致
  }
}

雖然當初搬運的時候完全無法理解這是在做甚麼,但經過一天的js惡補,現在已經可以看懂7788ㄌ

複製貼上一份 vscode 馬上顯示紅字警告同樣的不能重複宣告
於是我趕緊幫雙胞胎加上編號第一份的後面都備註01、第二份都備註0
https://ithelp.ithome.com.tw/upload/images/20250930/20178754RWHaVDrtCW.png
再來因為banner是五張照片輪播
而這次的yt小視窗只有三個,有些數字的部分需要改掉...

Do Re Mi So~成果展示時間~

const slides01 = document.querySelector(".slides01");  // 找到 slides 容器
const totalImages01 = 6;                               // 5 張真實 + 1 張複製
let index01 = 0;                                       // 當前圖片索引
const intervalTime01 = 4000;                           // 每張停留時間(毫秒)

function nextSlide01() {
  index01++;
  slides01.style.transition = 'transform 1s ease';   
  slides01.style.transform = `translateX(-${(100/totalImages01)*index01}%)`;

  // 如果到最後一張(複製的第一張)
  if (index01 === totalImages01 - 1) {
    setTimeout(() => {
      slides01.style.transition = 'none';
      slides01.style.transform = 'translateX(0%)';
      index01 = 0;
    }, 1000); // 與 transition 時間一致
  }
}

// 每 intervalTime01 自動切換
setInterval(nextSlide01, intervalTime01);

const slides02 = document.querySelector(".slides02");
const totalSlides = 4;       // 三張實際 + 一張複製
const slideWidth = 450;      // 每個 iframe 寬度
let index = 0;
const intervalTime = 4000;   // 每張停留時間

function nextSlide() {
    index++;
    slides02.style.transition = 'transform 1s ease';
    slides02.style.transform = `translateX(-${slideWidth * index}px)`;

    // 如果到達最後一張(複製的第一張)
    if (index === totalSlides - 1) {
        setTimeout(() => {
            slides02.style.transition = 'none';
            slides02.style.transform = `translateX(0px)`; // 無縫回到第一張
            index = 0;
        }, 1000); // 與 transition 時間一致
    }
}

// 每 intervalTime 自動切換
setInterval(nextSlide, intervalTime);

其實中間也是折騰了很久,原本一個一個敲,改了老半天還是東缺西漏,直接請chatgpt幫忙一次搞定
果然有些事情還是交給電腦做最有效率

總結而言今天就是處處充滿波折但最後還是順利完成的一天...突然有種回到大二還在建模軟體中打滾掙扎的錯覺。建模和coding有著異曲同工之妙,很多時候明明都照著說明書做了,但就是永遠會破圖、效果沒反應、材質無法套用...以前AI還沒普及都要花上老半天一遍一遍重做研究問題出在哪,打死找不到答案也是常有的事,現在就算遇到鬼打強的情況至少也能跟chatgpt討論,省了很多時間,不得不感嘆真的是科技改變生活的時代ㄋ

今天就先這樣啦,明天想來試試在自動輪播的banner和yt視窗兩邊加上可以手動上下頁的icon,祝我順利吧,大家明天見ㄅㄅ~


上一篇
coding小白盜版學校官網ㄉ30天挑戰日記 充實但沒有進度ㄉ一天
下一篇
coding小白盜版學校官網ㄉ30天挑戰日記 出師ㄌ!我自己做出來了隱藏&顯示搜尋欄
系列文
coding小白盜版學校官網ㄉ30天挑戰日記18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言