亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

vue實現歌手列表字母排序下拉滾動條側欄排序實時更新

2019-11-19 11:35:12
字體:
來源:轉載
供稿:網友

今天寫項目的時候遇到了歌手排序的問題,聯想到了我們平時的手機通訊錄側欄字母排序,按照ABCDE這樣的順序對名字進行排序。

我們先來看看效果


那就用vue來實現一遍

首先新建一個vue頁面,取名為helloworld.vue

在頁面里寫入內容

<template> <div class="hello"> <div class="singer" id="singer">  <div class="singer-top-tag">{{singerTopTag | filterSingerTag}}</div>  <ul class="singer-ul">  <li v-for="(item, index) in list" :key="index" class="singer-ul-li">   <div class="singer-tag" :id="item.tag">{{item.tag | filterSingerTag}}</div>   <ul>   <li v-for="(fitem, findex) in item.data" :key="findex">    <img :src="`https://y.gtimg.cn/music/photo_new/T001R300x300M000${fitem.Fsinger_mid}.jpg?max_age=2592000`">    <div>{{fitem.Fsinger_name}}</div>   </li>   </ul>  </li>  </ul> </div> <div class="sort">  <ul>  <li   v-for="(item, index) in sortList"   :key="index"   @click="jumpTag(item)"  :class="{current:currentSort == item ? true : false}"  >   {{item == `hot` ? `熱` : item}}  </li>  </ul> </div> </div></template>
<script>import axios from 'axios'export default { name: "HelloWorld", data() { return {  list:[], // 歌手列表  sortList:[], // 側欄排序列表  currentSort: 'hot', // 當前排序的標簽  singerTopTag: 'hot', // 歌手欄頭部的標簽名字 }; }, mounted() { this.testData() // 監聽滾動條 window.addEventListener('scroll', this.handleScroll) }, destroyed () { // 頁面摧毀的時候要關閉監聽  window.removeEventListener('scroll', this.handleScroll) }, methods: { handleScroll () {  let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop  let offsetTop = 0  this.list.forEach((item,index) => {  // 獲取每個排序標簽的位置  offsetTop = document.querySelectorAll('.singer-ul-li')[index].offsetTop  // 當前滾動條的位置 和 當前的標簽偏移頂部的距離進行對比  // 每一個歌手的li標簽的高度必須要保持一致,我這里的高度是70,可以計算自己項目的內容的具體高度進行修改  if (scrollTop > offsetTop && scrollTop < (offsetTop+ 70*item.data.length)) {   this.singerTopTag = item.tag   this.currentSort = item.tag  }  }) }, // 請求數據 testData(){  axios.get(`https://c.y.qq.com/v8/fcg-bin/v8.fcg?g_tk=1928093487&inCharset=utf-8&outCharset=utf-8¬ice=0&format=jsonp&channel=singer&page=list&key=all_all_all&pagesize=100&pagenum=1&hostUin=0&needNewCode=0&platform=yqq&jsonpCallback=jp1`)  .then(res => {  res = res.data.substring(5,res.data.length-1)  res = JSON.parse(res).data.list  res = res.sort((a,b) => a.Findex.localeCompare(b.Findex))  res.forEach((item,index) => {   // 添加側欄排序   item.Findex = item.Findex == 9 ? 'hot' : item.Findex   this.sortList.push(item.Findex)  })  // 去除重復  this.sortList = new Set(this.sortList)  this.sortList = [...this.sortList]  // 添加排序標簽和歌手列表  this.sortList.forEach(e => {   this.list.push({   tag:e,   data:res.filter(i => i.Findex ==e)   })  })  }) }, // 跳轉標簽 jumpTag(i){  this.singerTopTag = i  this.currentSort = i  document.querySelector(`#${i}`).scrollIntoView() } }, filters :{ filterSingerTag(i) {  return i == `hot` ? `熱門` : i } }};</script><!-- Add "scoped" attribute to limit CSS to this component only --><style scoped>.hello { position: relative; background-color: #222;}.singer { position: relative; width: 100%; height: 100%; overflow: hidden; background: #222;}.singer-top-tag { position: fixed; top: 0px; left: 0; width: 100%; height: 30px; line-height: 30px; padding-left: 20px; font-size: 12px; color: hsla(0,0%,100%,.5); background: #333;}.singer-tag { width: 100%; height: 30px; margin-bottom: 20px; line-height: 30px; padding-left: 20px; font-size: 12px; color: hsla(0,0%,100%,.5); background: #333;}.singer-ul-li ul li { list-style-type: none; display: flex; justify-content: flex-start; align-items: center; padding: 0 0 20px 20px; color: rgba(255, 255, 255, .5);}.singer-ul-li ul li img { border-radius: 50%; widows: 50px; height: 50px;}.singer-ul-li ul li div { padding-left: 20px;}.sort { position: fixed; z-index: 30; right: 0; top: 50%; -webkit-transform: translateY(-50%); transform: translateY(-50%); width: 20px; padding: 20px 0; border-radius: 10px; text-align: center; background: rgba(0,0,0,.3); font-family: Helvetica;}ul { margin: 0; padding: 0;}.sort ul{ color: rgba(255,255,255,.6);}.sort ul li { list-style-type: none; padding: 3px; line-height: 1; font-size: 12px;}.current { color: #ffcd32;}</style>

我是使用的qq音樂接口,獲取的數據需要進行處理,如果覺得麻煩可以自己寫靜態數據來代替

數據的格式

const list = [ {  tag:`A`,  data:[   {    img:`https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1558361071&di=0a522afe68fc7e2aa3af34cb5cd8c96a&imgtype=jpg&er=1&src=http%3A%2F%2Fwerkstette.dk%2Fwp-content%2Fuploads%2F2015%2F09%2FEntertainment_Weekly_Photographer_Marc_Hom_British_Actor_Charlie_Hunnam_as_King_Arthur_Retouch_Werkstette10-770x841.jpg`,    Fsinger_name:`奧巴里`  }  ] }, {  tag:`B`,  data:[   {    img:`https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1558361071&di=0a522afe68fc7e2aa3af34cb5cd8c96a&imgtype=jpg&er=1&src=http%3A%2F%2Fwerkstette.dk%2Fwp-content%2Fuploads%2F2015%2F09%2FEntertainment_Weekly_Photographer_Marc_Hom_British_Actor_Charlie_Hunnam_as_King_Arthur_Retouch_Werkstette10-770x841.jpg`,    Fsinger_name:`BIGBANG`  }  ] }, {  tag:`C`,  data:[   {    img:`https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1558361071&di=0a522afe68fc7e2aa3af34cb5cd8c96a&imgtype=jpg&er=1&src=http%3A%2F%2Fwerkstette.dk%2Fwp-content%2Fuploads%2F2015%2F09%2FEntertainment_Weekly_Photographer_Marc_Hom_British_Actor_Charlie_Hunnam_as_King_Arthur_Retouch_Werkstette10-770x841.jpg`,    Fsinger_name:`蔡依林`  }  ] }, {  tag:`D`,  data:[   {    img:`https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1558361071&di=0a522afe68fc7e2aa3af34cb5cd8c96a&imgtype=jpg&er=1&src=http%3A%2F%2Fwerkstette.dk%2Fwp-content%2Fuploads%2F2015%2F09%2FEntertainment_Weekly_Photographer_Marc_Hom_British_Actor_Charlie_Hunnam_as_King_Arthur_Retouch_Werkstette10-770x841.jpg`,    Fsinger_name:`鄧紫棋`  }  ] },]

再者還要注意頁面的img標簽,直接復制上面的數據的話要對img標簽進行修改,去掉http那一串,直接用:src="item.img"代替

const list = [ {  tag:`A`,  data:[   {    img:`https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1558361071&di=0a522afe68fc7e2aa3af34cb5cd8c96a&imgtype=jpg&er=1&src=http%3A%2F%2Fwerkstette.dk%2Fwp-content%2Fuploads%2F2015%2F09%2FEntertainment_Weekly_Photographer_Marc_Hom_British_Actor_Charlie_Hunnam_as_King_Arthur_Retouch_Werkstette10-770x841.jpg`,    Fsinger_name:`奧巴里`  }  ] }, {  tag:`B`,  data:[   {    img:`https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1558361071&di=0a522afe68fc7e2aa3af34cb5cd8c96a&imgtype=jpg&er=1&src=http%3A%2F%2Fwerkstette.dk%2Fwp-content%2Fuploads%2F2015%2F09%2FEntertainment_Weekly_Photographer_Marc_Hom_British_Actor_Charlie_Hunnam_as_King_Arthur_Retouch_Werkstette10-770x841.jpg`,    Fsinger_name:`BIGBANG`  }  ] }, {  tag:`C`,  data:[   {    img:`https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1558361071&di=0a522afe68fc7e2aa3af34cb5cd8c96a&imgtype=jpg&er=1&src=http%3A%2F%2Fwerkstette.dk%2Fwp-content%2Fuploads%2F2015%2F09%2FEntertainment_Weekly_Photographer_Marc_Hom_British_Actor_Charlie_Hunnam_as_King_Arthur_Retouch_Werkstette10-770x841.jpg`,    Fsinger_name:`蔡依林`  }  ] }, {  tag:`D`,  data:[   {    img:`https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1558361071&di=0a522afe68fc7e2aa3af34cb5cd8c96a&imgtype=jpg&er=1&src=http%3A%2F%2Fwerkstette.dk%2Fwp-content%2Fuploads%2F2015%2F09%2FEntertainment_Weekly_Photographer_Marc_Hom_British_Actor_Charlie_Hunnam_as_King_Arthur_Retouch_Werkstette10-770x841.jpg`,    Fsinger_name:`鄧紫棋`  }  ] },]

總結

以上所述是小編給大家介紹的vue實現歌手列表字母排序下拉滾動條側欄排序實時更新,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
午夜美女久久久久爽久久| 日韩亚洲精品电影| 色综合久综合久久综合久鬼88| 97超碰色婷婷| 国产精品入口福利| 精品国产拍在线观看| 国产狼人综合免费视频| 久久精品免费播放| 九色精品免费永久在线| 日韩电影大片中文字幕| 国产精品av免费在线观看| 国产精品自产拍高潮在线观看| 亚洲福利视频网| 另类色图亚洲色图| 欧美xxxx14xxxxx性爽| 97热精品视频官网| 在线观看日韩视频| 一区二区三区回区在观看免费视频| 日韩**中文字幕毛片| 日韩av免费在线看| 国产精品白丝jk喷水视频一区| 91精品在线影院| 欧美色道久久88综合亚洲精品| 亚洲精品美女在线| 亚洲直播在线一区| 亚洲人成在线一二| 91产国在线观看动作片喷水| 亚洲xxx自由成熟| 中文字幕亚洲欧美日韩高清| 欧美国产日本高清在线| 亚洲成av人影院在线观看| 一本色道久久综合亚洲精品小说| 久久久久这里只有精品| 欧美一级大片在线观看| 久久精品亚洲94久久精品| 国产精品一区二区久久精品| 免费不卡欧美自拍视频| 日韩av在线精品| 2019中文在线观看| 久久久亚洲国产| 久久亚洲精品一区二区| 欧美性猛交xxxx黑人猛交| 久久视频在线观看免费| 一本大道香蕉久在线播放29| 日韩在线观看免费全集电视剧网站| 亚洲精品免费av| 成人免费看吃奶视频网站| 国产精品pans私拍| 亚洲欧洲激情在线| 国产一区二区三区三区在线观看| 日本韩国欧美精品大片卡二| 国产精品免费久久久| 国产精品美女午夜av| 亚洲欧美精品suv| 久久精品国产91精品亚洲| 日韩av观看网址| 亚洲自拍偷拍福利| 一区国产精品视频| 日韩中文字幕在线免费观看| 精品久久久国产精品999| 97成人精品视频在线观看| 国产一区二区三区中文| 亚洲日韩欧美视频一区| 亚洲图片在线综合| 亚洲欧美中文日韩v在线观看| 成人精品福利视频| 日韩中文字幕精品| 亚洲欧美日韩精品| 午夜精品久久久久久久久久久久| 日韩一区二区精品视频| 69av在线视频| 国产精品无码专区在线观看| 久久伊人精品天天| 国产做受高潮69| 久久久亚洲天堂| 欧美色欧美亚洲高清在线视频| 日韩精品电影网| 亚洲国产精品va在线观看黑人| 欧美激情中文字幕乱码免费| 亚洲片av在线| 亚洲欧美日韩爽爽影院| 亚洲成人久久一区| 最新69国产成人精品视频免费| 亚洲aⅴ日韩av电影在线观看| 国产高清在线不卡| 日韩有码视频在线| 亚洲一区中文字幕在线观看| 国产精品自产拍高潮在线观看| 日韩精品免费综合视频在线播放| 亚洲人成免费电影| 成人激情视频免费在线| 亚洲天堂av网| 国产va免费精品高清在线观看| 一本一道久久a久久精品逆3p| 成人免费观看网址| 国产精品国内视频| 毛片精品免费在线观看| 国产精品高清在线| 在线看日韩欧美| 97色在线视频观看| 深夜成人在线观看| 欧美黑人性生活视频| 日韩美女视频在线观看| 国产成人avxxxxx在线看| 91av免费观看91av精品在线| 欧美日韩在线观看视频小说| 亚洲综合精品一区二区| 国内精品小视频在线观看| 最近2019年好看中文字幕视频| 精品久久中文字幕久久av| 性色av一区二区三区| 精品毛片三在线观看| 欧美午夜视频在线观看| 久久6免费高清热精品| 视频直播国产精品| 国产精品丝袜久久久久久高清| 黑人巨大精品欧美一区免费视频| 国产区亚洲区欧美区| 亚洲天堂一区二区三区| 上原亚衣av一区二区三区| 国产精品成人一区二区三区吃奶| 清纯唯美亚洲综合| 国产精品一区电影| 成人a视频在线观看| 国产成人精品亚洲精品| 精品日韩中文字幕| 91av在线国产| 欧美黄色片在线观看| 97久久精品视频| 久久精品人人爽| 人人爽久久涩噜噜噜网站| 亚洲欧美激情精品一区二区| 日韩在线视频观看正片免费网站| 精品久久久久久久久久久| 久久九九精品99国产精品| 欧美电影免费观看大全| 国产精品一香蕉国产线看观看| 国模精品一区二区三区色天香| 欧美久久精品一级黑人c片| 精品亚洲一区二区| 日本成人免费在线| 欧美人与性动交a欧美精品| 日韩有码在线电影| 91美女片黄在线观| 国产成+人+综合+亚洲欧洲| 国产精品久久久久久久久久| 亚洲最新av网址| 久久影院资源站| 秋霞午夜一区二区| 国内精品国产三级国产在线专| 久久精品99无色码中文字幕| 国产成人精品视频| 伊人久久男人天堂| 日韩在线精品一区| 精品日本高清在线播放| 青青久久aⅴ北条麻妃| 欧美性videos高清精品| 日韩美女视频免费看| 国产99久久精品一区二区永久免费| 国产在线98福利播放视频| 亚洲视频网站在线观看| 成人a视频在线观看| 国产精品男人的天堂| 69视频在线播放|