最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

記一次用vue做的活動頁的方法步驟

 更新時間:2019年04月11日 09:02:57   作者:獨(dú)醉莫邪  
這篇文章主要介紹了記一次用vue做的活動頁的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

最近,公司的PR提了一個需求 自動獲取七天新上傳的并且審核通過的商品做成固定的鏈接的一個活動頁面。當(dāng)時想了一想就用vue做了,感覺效果還行,在這分享一下我是如何做的 希望對大家有一點(diǎn)點(diǎn)幫助。

效果圖

附上線上地址

在線預(yù)覽:新品租賃頁

1:頁面的構(gòu)建及優(yōu)化

所謂的活動頁 首先第一步肯定是把頁面切出來,這里就是2*n頁面 我這里用的就是grid布局(也可以用flex)我主要講三個點(diǎn):

1:關(guān)于圖片的優(yōu)化

由于后段傳過來的圖片大小不一樣,我就對圖片做了做了一下優(yōu)化 。整個圖片在填充盒子的同時保留其長寬比

代碼:

 .product-img img {
 object-fit: contain;
 width: auto;
 height: auto;
 max-width: 100%;
 max-height: 100%;
 margin: 0 auto;
}

為了不讓圖片覺得突兀 我們可以給圖片的盒子設(shè)置一個偽元素

.product-img::after {
 content: '';
 position: absolute;
 top: 0;
 left: 0;
 -webkit-transform: translate3d(0, 0, 0);
 transform: translate3d(0, 0, 0);
 z-index: 1000;
 width: 100%;
 height: 100%;
 border-radius: .1rem;
 background: rgba(85, 85, 85, 0.05);
}

2:關(guān)于頁面數(shù)據(jù)還沒加載出來的優(yōu)化

由于從后臺獲取數(shù)據(jù)需要一定的時間 當(dāng)數(shù)據(jù)沒加載進(jìn)來的時候會出現(xiàn)問題(也許就是一秒但這也會給用戶帶來不好的體驗(yàn)感。)

<div class="container" :class="productList.length ? 'show': ''">

當(dāng)數(shù)據(jù)沒加載的時候我就設(shè)置opacity為0,當(dāng)數(shù)據(jù)出來的時候就設(shè)置opacity:1

3:關(guān)于價格的優(yōu)化

由于設(shè)計稿的需求是價格的整數(shù)的字體要比小數(shù)要大,所以就把整數(shù)和小數(shù)分別用spilt分隔來了。然后在給整數(shù)的字體比小數(shù)點(diǎn)的字體大一號就行了。

<div class="product-price">¥<span class="em">{{String(product.price).split('.')[0]}}</span>.{{String(product.price).split('.')[1]||'0'}}/天</div>

2:獲取數(shù)據(jù)

從后臺獲取數(shù)據(jù)是很重要的一部分 由于后段給了二個參數(shù) 一個是當(dāng)前頁 一個是一個頁面有多少條數(shù)據(jù)。

  getList(cb){
    this.getActivityInfoById(this.curPage,this.pageSize).then((data = {})=>{
     this.total = data.total;
     if(( this.curPage * this.pageSize) >= this.total && document.readyState == "complete") {
      this.isMaxPage = true;
     }
     this.productList = this.productList.concat(data.rows || []);
     cb && cb(data)
    })
   }
 getActivityInfoById: function(start, length) {
    return axios
     .get(this.api.getActivityInfoById, {
      params: {
       start: start,
       length: length
      }
     })
     .then(function(res) {
      return res.data.data;
     });
   },

3:分頁

所謂的活動頁肯定要做分頁處理

onPage(){
    const scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop; 
    const bodyHeight = document.body.offsetHeight;
    const clientHeight = window.innerHeight;
    if(scrollTop + clientHeight < bodyHeight){
     return;
    }
    if(this.isGetList) return;
    if(this.total < this.curPage * this.pageSize){
     return;
    }
    
    this.curPage++;
    this.isGetList = true;
    this.getList(()=>{
     this.isGetList = false;
    });
   },

4:下拉刷新的優(yōu)化

當(dāng)數(shù)據(jù)還在加載中顯示loading,當(dāng)數(shù)據(jù)加載完成是顯示扯到底了

<div class="footer" v-if="isMaxPage">- 不要扯了 已經(jīng)扯到底了 -</div>
<div class="footer" v-if="!isMaxPage">- loading -</div>

5:懶加載

由于這個活動頁圖片有點(diǎn)多 所以用了懶加載

  lazyLoad: function() {
    var seeHeight = document.documentElement.clientHeight; // 可見區(qū)域高度
    var imgs = document.getElementsByTagName('img');
    for (var i = this.lazyLoadIndex; i < imgs.length; i++) {
     if (
      imgs[i].getBoundingClientRect().top < seeHeight &&
      imgs[i].dataset.src &&
      imgs[i].getAttribute('src') !== imgs[i].dataset.src
     ) {
      imgs[i].setAttribute('src', imgs[i].dataset.src);
      this.lazyLoadIndex++;
     }
    }
   },

總結(jié)

作為一個即將畢業(yè)的大四學(xué)生,這是我來公司實(shí)習(xí)做的活動頁,希望可以幫助大家,互相學(xué)習(xí),一起進(jìn)步。當(dāng)然也有一些不足之處,請大家多多指教。碼字不容易,希望大家點(diǎn)個贊。前端路漫漫,與君共勉之。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue加載視頻流,實(shí)現(xiàn)直播功能的過程

    vue加載視頻流,實(shí)現(xiàn)直播功能的過程

    這篇文章主要介紹了vue加載視頻流,實(shí)現(xiàn)直播功能的過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 聊聊對Vue中的keep-alive的理解

    聊聊對Vue中的keep-alive的理解

    keepalive?是?Vue?內(nèi)置的一個組件,可以使被包含的組件保留狀態(tài),或避免重新渲染,也就是所謂的組件緩存,這篇文章主要介紹了說說你對Vue的keep-alive的理解,需要的朋友可以參考下
    2022-11-11
  • vue中監(jiān)聽返回鍵問題

    vue中監(jiān)聽返回鍵問題

    這篇文章主要介紹了解決vue中監(jiān)聽返回鍵問題,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • Vue WatchEffect函數(shù)創(chuàng)建高級偵聽器

    Vue WatchEffect函數(shù)創(chuàng)建高級偵聽器

    watchEffect傳入的函數(shù)會被立即執(zhí)行一次,并且在執(zhí)行的過程中會收集依賴;其次,只有收集的依賴發(fā)生變化時,watchEffect傳入的函數(shù)才會再次執(zhí)行
    2023-03-03
  • Vue2中無法監(jiān)聽數(shù)組和對象的某些變化問題

    Vue2中無法監(jiān)聽數(shù)組和對象的某些變化問題

    這篇文章主要介紹了Vue2中無法監(jiān)聽數(shù)組和對象的某些變化問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Vue.js實(shí)現(xiàn)文件上傳和進(jìn)度條顯示功能

    Vue.js實(shí)現(xiàn)文件上傳和進(jìn)度條顯示功能

    在現(xiàn)代Web開發(fā)中,文件上傳是一個常見而重要的需求,無論是在用戶上傳頭像、文檔或者其他類型的文件時,良好的用戶體驗(yàn)都是至關(guān)重要的,在這篇博客中,我們將介紹如何使用Vue.js來實(shí)現(xiàn)文件上傳功能,同時顯示上傳進(jìn)度條,需要的朋友可以參考下
    2024-11-11
  • VUE2.0+ElementUI2.0表格el-table實(shí)現(xiàn)表頭擴(kuò)展el-tooltip

    VUE2.0+ElementUI2.0表格el-table實(shí)現(xiàn)表頭擴(kuò)展el-tooltip

    這篇文章主要介紹了VUE2.0+ElementUI2.0表格el-table實(shí)現(xiàn)表頭擴(kuò)展el-tooltip,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • vue項目中極驗(yàn)驗(yàn)證的使用代碼示例

    vue項目中極驗(yàn)驗(yàn)證的使用代碼示例

    這篇文章主要介紹了vue項目中極驗(yàn)驗(yàn)證的使用代碼示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 詳解如何制作并發(fā)布一個vue的組件的npm包

    詳解如何制作并發(fā)布一個vue的組件的npm包

    這篇文章主要介紹了詳解如何制作并發(fā)布一個vue的組件的npm包,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • Vue實(shí)現(xiàn)驗(yàn)證碼登錄的方法實(shí)例

    Vue實(shí)現(xiàn)驗(yàn)證碼登錄的方法實(shí)例

    最近在自己寫頁面,然后寫登錄注冊UI的時候需要一個驗(yàn)證碼組件,去搜一下沒找到什么合適的,于是自己寫一個,這篇文章主要給大家介紹了關(guān)于Vue實(shí)現(xiàn)驗(yàn)證碼登錄的相關(guān)資料,需要的朋友可以參考下
    2022-03-03

最新評論

象山县| 阿克陶县| 长兴县| 彰武县| 林芝县| 汤原县| 温泉县| 永川市| 寿阳县| 惠安县| 工布江达县| 凤冈县| 梨树县| 富锦市| 阳城县| 淳安县| 沂源县| 水富县| 呼图壁县| 乌鲁木齐县| 雅江县| 会同县| 中西区| 扬州市| 松原市| 通辽市| 锡林郭勒盟| 浮山县| 潞城市| 墨脱县| 孝昌县| 神农架林区| 高台县| 曲水县| 油尖旺区| 香河县| 包头市| 什邡市| 桐梓县| 讷河市| 张家口市|