web移動開發總結(五)
阿新 • • 發佈:2018-12-11
總結
- 頂部搜尋框漸變JS
- 秒殺商品倒計時JS
- 輪播圖外掛的使用
- 分類頁面的佈局
頂部搜尋的背景色漸變
- 需求: 在滾動條滾動距離在輪播圖高度範圍內的時候實現頂部搜尋的背景色透明度漸變
rgba(255,0,0,0)
rgba(255,0,0,1)
rgba的最後一個值透明度從0-1的變化 - 思路: 計算當前的滾動條滾動到的距離的透明度的值
- 獲取當前滾動條的距離
- 獲取當前輪播圖的高度
- 計算透明度 = 距離/高度
- 計算好後把透明度值 設定背景色的rgba裡面把最後一個值改成計算的透明度
倒計時JS功能
- 需求: 有一個未來的時間 還有當前的時間 使用未來的時間-當前的時間作為一個倒計時 把這個倒計時時間 設定到頁面中顯示 分別顯示時分秒 每隔一秒倒計時總時間要-- 頁面時時更新
- 思路
- 獲取到未來的時間
- 獲取當前的時間
- 倒計時的總時間 = 使用未來時間-當前時間
- 定一個定時器(每隔1秒執行一次) 讓總時間每秒–
- 計算-- 完後的時間的 時 分 秒
- 把時分秒的十位和個位分別設定到每個span裡面
輪播圖JS效果 外掛的使用 ( swiper外掛)[https://www.swiper.com.cn
- 下載swiper外掛
- 引包 注意引入CSS和JS2個包
- 引入swiper.css
- 引入swiper.js
- 寫一個輪播圖需要結構
swiper外掛的一些常見引數
-
輪播圖的方向
direction: ‘vertical’ 垂直
direction: ‘horizontal’ 水平 -
自動輪播圖
autoplay:{
delay: 3000,//輪播圖的延遲
stopOnLastSlide: false,// 如果設定為true,當切換到最後一個slide時停止自動切換。(loop模式下無效)
disableOnInteraction:true,//當用戶滑動的時候禁止自動輪播圖 不需要禁止就為false
} -
是否開啟無縫輪播圖
loop: true,//是否開啟無縫輪播圖 開啟無輪播圖 如果不開 刷回去倒退回去 -
是否顯示小圓點
pagination:{
el: ‘.swiper-pagination’,//如果需要顯示小圓點就指定小圓點容器}
-
是否要左右箭頭
navigation: {
nextEl: ‘.swiper-button-next’,
prevEl: ‘.swiper-button-prev’,
},//指定左右箭頭的容器 -
是否要支援滾動條
scrollbar: {
el: ‘.swiper-scrollbar’,
},//指定滾動條的容器
修改輪播圖的樣式
- 如果需要修改圖片大小 直接選中你的圖片設定大小
- 如果要修改小圓點的樣式
使用swiper完成jd主頁輪播圖效果
3. 設定樣式 slide { img { width: 100%; } /* 修改小圓點樣式 */ .swiper-pagination-bullet { background-color: transparent; opacity: 1; border: 1px solid #fff; width: 8px; height: 8px; box-sizing: border-box; } .swiper-pagination-bullet-active { background-color: #fff; } } 4. 初始化jd的輪播圖 var mySwiper = new Swiper('#slide .swiper-container', { direction: 'horizontal', // 垂直切換選項 autoplay: { delay: 1000, //輪播圖的延遲 stopOnLastSlide: false, // 如果設定為true,當切換到最後一個slide時停止自動切換。(loop模式下無效) disableOnInteraction: false //當用戶滑動的時候禁止自動輪播圖 不需要禁止就為false }, loop: true, // 是否開啟無縫輪播圖 開啟無輪播圖 如果不開 刷回去倒退回去 // 如果需要分頁器 pagination: { el: '.swiper-pagination', } });京東分類頁面佈局
- 京東分類頁面是全屏的 水平和垂直都沒有滾動條 (注意)
- 要顯示更多內容 使用滑動來實現 (注意)
左側選單有滑動
右側商品列表也有滑動
滑動都是垂直方向
實現分類頁面的全屏佈局
- 給頭部 固定高度 位置固定定位在頂部
- 給底部 固定高度 位置固定定位在底部
- 給html和body設定高度100%
- 給body設定padding-top 和 padding-bottom 讓main往中間擠
- 給main設定height:100% 就和body的高度一致
- 給main裡面的category-left 和 category-right 設定高度100%
使用swiper的滑動效果來實現分類左右側滑動功能
- 使用swiper官方demo裡面的內容滾動
- 使用方式
- 引包引入swiper.css 和 js
- 寫結構
- 內容
- 內容
- 內容
- 內容
總結
移動端的JS
- 使用HTML新的方式操作JS dom之類的操作
- 新增事件addEventListener
- 獲取元素querySelector querySelectorAll
- 頂部搜尋背景色漸變
- 當頭部在輪播圖高度範圍內進行滾動的時候進行透明度漸變 0 - 1漸變
- 漸變值 使用滾動距離 / 輪播圖的高度
- 新增滾動條滾動事件獲取距離
- 獲取輪播圖高度
- 計算透明度值
- 把透明度值設定到頭部上
- 倒計時效果
- 有一個總倒計時時間 分別顯示時分秒 每隔1秒 總時間-- 更新頁面
- 總時間 後臺獲取的(使用前端模擬了一下總時間)
new Date(‘指定時間’) 獲取到一個指定的時間(未來時間)
new Date(); 獲取當前時間
總時間 = 未來時間 - 當前時間
預設會隱式轉換 提前轉好使用getTime() 轉成具體的毫秒數 1970.1.1:0:00:00 - 當前的時間的毫秒數 - 計算時分秒
- 時 總時間 / 3600 1小時3600秒 3600 / 3600 == 1小時 7200 / 3600 = 2小時
- 分 總時間 % 3600 / 60 1分鐘60秒 有多少個60秒有多少分鐘 但是可能超過60分鐘超過1小時 把小時部分去掉 % 3600 去掉小時部分
- 秒 總時間 % 60 1分鐘 60秒 只要小於1分鐘都算秒數 40 % 60 == 40 130 % 60 = 10
- 分別把時分秒十位個位顯示到頁面
- 十位 總數 / 10 10/10 == 1 90 / 10 == 9 有幾個10 十位就是幾
- 個位 總數 % 10 除不盡10的部分就是個位 15 % 10 == 5
- 如果時間到了根據業務去處理
- 輪播圖效果
- 輪播圖的原理 讓父元素進行水平(垂直)位移 新增過渡 慢慢移動 輪播圖前後都要看到多加2張圖片 第一張是最後一張 最後一張是第一張
- swiper輪播圖外掛的使用
- 引包 CSS JS
- 寫結構
<div class="swiper-container">
3. 修改樣式 4. 初始化 呼叫Swiper建構函式建立例項 就是初始化 // 4. 呼叫JS的初始化函式初始化swiper var mySwiper = new Swiper('.swiper-container', { direction: 'horizontal', // 垂直切換選項 loop: true, // 迴圈模式選項 會自動在輪播圖所有圖片容器的最前面和最後面多放一張 第一張就是最後一張 最後一張就是第一張 //初始化自動輪播圖 引數也是一個物件 autoplay: { delay: 3000, //間隔時間 stopOnLastSlide: false, //在最後一張是否要停止 如果開啟loop模式無效 disableOnInteraction: false, // 是否要當(互動的時候)滑動的時候禁用自動輪播圖 }, // 如果需要分頁器 pagination: { el: '.swiper-pagination', }, // 如果需要前進後退按鈕 // navigation: { // nextEl: '.swiper-button-next', // prevEl: '.swiper-button-prev', // },
// 如果需要滾動條
// scrollbar: {
// el: '.swiper-scrollbar',
// },
})
- 如果要修改箭頭樣式 小圓點 檢測元素改變類名對應裡面的樣式
- 分類頁面佈局
- 上中下 頭部 和 底部一樣使用公共樣式
- 中間 左邊固定 右邊自適應 flex佈局
- 中間要居中 給body設定padding讓內容擠到中間 給body設定100vh高度 中間100%只有整個高度-頭-底部高度
- 滑動外掛的原理
- 有一個父容器
- 有一個子容器
- 子容器比父容器高(一定要比父容器才有必要滑動)
- 子容器在父容器裡面進行位移
- swiper滑動外掛 使用方式
- 步驟和之前使用輪播圖一樣
- 修改樣式
swiper-container容器高度要固定 100%從父元素繼承下來
子元素的樣式swiper-slide 的高度 改成auto - 初始化
// 初始化分類左側的滾動
new Swiper(’.category-left .swiper-container’, {
//滑動方向
direction: ‘vertical’,
// 控制多屏滑動 內容滾動的原理就是多屏滾動
slidesPerView: ‘auto’,
// 支援滑鼠拖動 滑動只有手機上才能滑動
mousewheelControl: true,
// 利用慣性自動滾動 鬆手後自動到頂部或者到底部
freeMode: true,
//防止文字模糊
roundLengths: true
});
初始化需要指定一個引數
核心就是 // 控制多屏滑動 內容滾動的原理就是多屏滾動
slidesPerView: ‘auto’, - swiper外掛的原理 多了中間層
以爺爺swiper-container作為容器
swiper-wrapper作為父容器
swiper-slide作為子容器
因為要相容輪播圖 使用輪播圖的結構
間接通過父容器動了子容器在父容器裡面也跟著動的