H5頁面實現滑動控制音訊播放

隔壁張小二發表於2019-02-26

一、業務場景

微信中開啟H5頁面,滑動頁面,滑動到指定位置區間,播放對應的音訊,上下滑動頁面,可快速切到對應的音訊,然後播放。

二、實現方法

1、原理介紹

首先計算出設計圖的總高度,然後標註設計圖上的音訊切換點,算出切點所在的高度在整個設計圖高度中所佔的比例,最後根據比例算出實際頁面中切點的高度。

//切點配置資訊
let scrollConfigInfo = [{
    top: 0,
    bottom: 0.12,
    audioUrl: "1.mp3",
    pageNum: 1
},{
    top: 0.12,
    bottom: 0.167,
    audioUrl: "2.mp3",
    pageNum: 2
},{
    top: 0.167,
    bottom: 0.26,
    audioUrl: "3.mp3",
    pageNum: 3
},{
    top: 0.26,
    bottom: 0.428,
    audioUrl: "4.mp3",
    pageNum: 4
},{
    top: 0.428,
    bottom: 0.57,
    audioUrl: "5.mp3",
    pageNum: 5
}]

//滑動頁面控制音訊播放
const audio = new Audio();
let scrollY = 0;
let currentPage = 1;  //初始化處於第一屏
let realPageAllHeight = 9221;   //設計圖的頁面總高度
let realFirstPageHeight = 1317;  //設計圖第一屏的高度
let pageHeight = $(".page-1").height();  //裝置上第一屏頁面的高度
let pageAllHeight = pageHeight * realPageAllHeight / realFirstPageHeight;  //裝置上頁面總高度
$(window).scroll(() => {
    scrollY = $(document).scrollTop(); //獲取當前滾動的高度
    for (let i = 0 , len = scrollConfigInfo.length; i < len; i++) {
    //當使用者劃到某個位置時,計算當前位置處於哪一個區間內,如果進入某個區間,就播放當前區間內的音訊
    //currentPage !== (i + 1) 用來控制在一個區間內來回滑動不會來回重新播放該區間內的音訊
    if (scrollY >= Math.floor(scrollConfigInfo[i].top * pageAllHeight) && scrollY < Math.floor(scrollConfigInfo[i].bottom * pageAllHeight) && currentPage !== (i + 1)) {
        audio.src = scrollConfigInfo[i].audioUrl;
        this.currentPage = scrollConfigInfo[i].pageNum;
        audio.play();
        break;
        }
      }
    });
複製程式碼

三、H5效果展示

H5頁面實現滑動控制音訊播放

相關文章