精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

手把手教你用前端實現短視頻App(滑動切換)

開發 前端
平常在玩短視頻App時,喜歡看的視頻可以多看一會,不喜歡看的視頻直接往上一劃,這個功能一直深受用戶喜愛。今天我們不妨實現一個這樣功能的App。

[[351990]]

 前言

平常在玩短視頻App時,喜歡看的視頻可以多看一會,不喜歡看的視頻直接往上一劃,這個功能一直深受用戶喜愛。今天我們不妨實現一個這樣功能的App。

功能

  1. 上下滑動切換視頻
  2. 可查看對應視頻下的評論

示例

下面我挑出了幾張代表性的圖片,供大家參考。



下載鏈接

以上是我自己做的一款App的示例圖,如果感興趣的小伙伴,大家可以下載到手機上體驗。目前只是開發了安卓版本。 

  1. 鏈接: https://pan.baidu.com/s/1dbgx9eht54qh-Ig04w2JAg  
  2. 提取碼: 96ta  
  3. 復制這段內容后打開百度網盤手機App,操作更方便哦 

核心代碼

  1. <template> 
  2.   <div class="home"
  3.     <van-swipe 
  4.       style="height: 100vh" 
  5.       vertical 
  6.       @change="onChange" 
  7.       :show-indicators="false" 
  8.     > 
  9.       <van-swipe-item> 
  10.         <div class="main" v-if="isshow"
  11.           <video-player 
  12.             v-if="playerOptions.sources[0].src" 
  13.             class="video-player vjs-custom-skin" 
  14.             ref="videoPlayer" 
  15.             :playsinline="true" 
  16.             :options="playerOptions" 
  17.           ></video-player> 
  18.           <div class="footbox"
  19.             <div class="foot"
  20.               <p class="user">@ {{ artistName }}</p> 
  21.               <p class="name">{{ name }}</p> 
  22.             </div> 
  23.             <div class="pl" @click="openPl"
  24.               <van-icon name="chat" size="30" /> 
  25.             </div> 
  26.           </div> 
  27.         </div> 
  28.       </van-swipe-item> 
  29.       <van-swipe-item> 
  30.         <div class="main" v-if="!isshow"
  31.           <video-player 
  32.             v-if="playerOptions.sources[0].src" 
  33.             class="video-player vjs-custom-skin" 
  34.             ref="videoPlayer" 
  35.             :playsinline="true" 
  36.             :options="playerOptions" 
  37.           ></video-player> 
  38.           <div class="footbox"
  39.             <div class="foot"
  40.               <p class="user">@ {{ artistName }}</p> 
  41.               <p class="name">{{ name }}</p> 
  42.             </div> 
  43.             <div class="pl" @click="openPl"
  44.               <van-icon name="chat" size="30" /> 
  45.             </div> 
  46.           </div> 
  47.         </div> 
  48.       </van-swipe-item> 
  49.     </van-swipe> 
  50.     <van-action-sheet v-model="show" class="sheet"
  51.       <van-list 
  52.         v-model="loading" 
  53.         @load="onLoad" 
  54.         :offset="1" 
  55.         :immediate-check="false" 
  56.       > 
  57.         <div v-for="(item, index) in plist" :key="index" class="ovf pll"
  58.           <div class="pl-l"><img :src="item.user.avatarUrl" alt="" /></div> 
  59.           <div class="pl-r"
  60.             <div class="name1">{{ item.user.nickname }}</div> 
  61.             <div class="con">{{ item.content }}</div> 
  62.           </div> 
  63.         </div> 
  64.       </van-list> 
  65.     </van-action-sheet> 
  66.   </div> 
  67. </template> 
  68.  
  69. <script> 
  70. import { list, mv, pl } from "@request/api"
  71. import "../video/index"
  72. import { videoPlayer } from "vue-video-player"
  73. export default { 
  74.   name"home"
  75.   data() { 
  76.     return { 
  77.       list: ""
  78.       id: ""
  79.       show: false
  80.       dataLength: 1, 
  81.       inx: 0, 
  82.       artistName: ""
  83.       name""
  84.       isshow: true
  85.       plist: ""
  86.       loading: false
  87.       page: 10, 
  88.       playerOptions: { 
  89.         autoplay: true, //如果true,瀏覽器準備好時開始回放。 
  90.         muted: false, // 默認情況下將會消除任何音頻。 
  91.         loop: false, // 導致視頻一結束就重新開始。 
  92.         preload: "auto", // 建議瀏覽器在<video>加載元素后是否應該開始下載視頻數據。auto瀏覽器選擇最佳行為,立即開始加載視頻(如果瀏覽器支持) 
  93.         language: "zh-CN"
  94.         poster:""
  95.         aspectRatio: "16:9", // 將播放器置于流暢模式,并在計算播放器的動態大小時使用該值。值應該代表一個比例 - 用冒號分隔的兩個數字(例如"16:9""4:3") 
  96.         fluid: true, // 當true時,Video.js player將擁有流體大小。換句話說,它將按比例縮放以適應其容器。 
  97.         sources: [{ type: "video/mp4", src: "" }], 
  98.         width: document.documentElement.clientWidth, 
  99.         notSupportedMessage: "此視頻暫無法播放,請稍后再試", //允許覆蓋Video.js無法播放媒體源時顯示的默認信息。 
  100.         controlBar: { 
  101.           timeDivider: true, // 分時 
  102.           durationDisplay: true, // 持續時間顯示 
  103.           remainingTimeDisplay: false, // 剩余時間顯示 
  104.           fullscreenToggle: false, //全屏按鈕 
  105.         }, 
  106.       }, 
  107.     }; 
  108.   }, 
  109.   components: { 
  110.     videoPlayer, 
  111.   }, 
  112.   mounted() { 
  113.     this.wait(); 
  114.   }, 
  115.   methods: { 
  116.     // 首次獲取url 
  117.     async wait() { 
  118.       let id = await this.get(); 
  119.       let res = await mv(id); 
  120.       // this.playerOptions.poster = this.poster; 
  121.       this.$set(this.playerOptions, "poster", this.poster); 
  122.       this.$set(this.playerOptions.sources[0], "src", res.data.url); 
  123.     }, 
  124.     // 加載評論 
  125.     onLoad() { 
  126.       setTimeout(() => { 
  127.         this.page += 10; 
  128.         this.getpl(); 
  129.         this.loading = false
  130.       }, 500); 
  131.     }, 
  132.     // 獲取數據 
  133.     get() { 
  134.       return list(this.dataLength).then((res) => { 
  135.         console.log(res.data); 
  136.         this.urlData = res.data; 
  137.         this.poster = this.urlData[this.inx].cover; 
  138.         this.id = this.urlData[this.inx].id; 
  139.         this.artistName = this.urlData[this.inx].artistName; 
  140.         this.name = this.urlData[this.inx].name
  141.         // return this.id; 
  142.         return Promise.resolve(this.id); 
  143.         // 等價于 
  144.         // return new Promise((resolve) => { 
  145.         //   resolve(this.id) 
  146.         // }) 
  147.       }); 
  148.     }, 
  149.     // 封裝靜態數據 
  150.     getStatic(v) { 
  151.       this.id = v[this.inx].id; 
  152.       this.artistName = v[this.inx].artistName; 
  153.       this.name = v[this.inx].name
  154.       this.poster = v[this.inx].cover; 
  155.       return this.id; 
  156.     }, 
  157.     // 獲取評論 
  158.     getpl() { 
  159.       pl(this.id, this.page).then((res) => { 
  160.         if (document.querySelector(".van-action-sheet__content")) { 
  161.           document.querySelector(".van-action-sheet__content").scrollTop = 0; 
  162.         } 
  163.         this.plist = res.comments; 
  164.       }); 
  165.     }, 
  166.     // 滑動觸發 
  167.     async onChange() { 
  168.       console.log(this.inx); 
  169.       this.isshow = !this.isshow; 
  170.       this.page = 10; 
  171.       this.getpl(); 
  172.       if (this.inx < this.urlData.length - 1) { 
  173.         this.inx += 1; 
  174.         let id = this.getStatic(this.urlData); 
  175.         let res = await mv(id); 
  176.         this.$set(this.playerOptions.sources[0], "src", res.data.url); 
  177.         this.$set(this.playerOptions, "poster", this.poster); 
  178.         // this.playerOptions.poster = this.poster; 
  179.       } else { 
  180.         this.inx = 0; 
  181.         this.dataLength += 1; 
  182.         this.wait(); 
  183.       } 
  184.     }, 
  185.     // 打開評論列表 
  186.     openPl() { 
  187.       this.show = true
  188.       this.getpl(); 
  189.     }, 
  190.   }, 
  191. }; 
  192. </script> 
  193. <style lang="less" scoped> 
  194. .main { 
  195.   height: 100%; 
  196. .footbox { 
  197.   position: relative
  198.   bottom: 0; 
  199.   width: 95%; 
  200.   margin: 0 auto; 
  201.   display: flex; 
  202.   justify-content: space-between
  203.   align-items: center; 
  204. .user { 
  205.   font-size: 14px; 
  206. .user
  207. .name { 
  208.   text-overflow: ellipsis; 
  209.   overflow: hidden; 
  210.   white-space: nowrap; 
  211. .foot { 
  212.   width: 80%; 
  213.   color: #fff; 
  214.   font-size: 16px; 
  215.   z-index: 10001; 
  216. .pl { 
  217.   width: 10%; 
  218.   color: #fff; 
  219.   font-size: 16px; 
  220.   z-index: 10001; 
  221. .sheet { 
  222.   height: 50vh; 
  223.   .pll { 
  224.     overflow: hidden; 
  225.     padding: 10px; 
  226.     border-bottom: 1px solid #f4f4f4; 
  227.     .pl-l { 
  228.       width: 20%; 
  229.       floatleft
  230.     } 
  231.     .pl-l img { 
  232.       width: 55%; 
  233.       border-radius: 50%; 
  234.       animation: all ds 0.5s; 
  235.     } 
  236.     @keyframes ds { 
  237.       from { 
  238.         opacity: 0; 
  239.       } 
  240.       to { 
  241.         opacity: 1; 
  242.       } 
  243.     } 
  244.     .pl-r { 
  245.       width: 78%; 
  246.       floatleft
  247.     } 
  248.     .name1 { 
  249.       font-size: 14px; 
  250.       color: #666; 
  251.       font-weight: bold; 
  252.       margin-bottom: 5px; 
  253.     } 
  254.     .con { 
  255.       width: 100%; 
  256.       line-height: 24px; 
  257.       color: #333333; 
  258.       font-size: 14px; 
  259.     } 
  260.   } 
  261. </style> 

 完整代碼庫

恭請各位大佬指正。

https://github.com/maomincoding/zm_mv2

 

責任編輯:姜華 來源: 前端歷劫之路
相關推薦

2022-10-19 14:30:59

2021-08-09 13:31:25

PythonExcel代碼

2021-12-11 20:20:19

Python算法線性

2022-08-04 10:39:23

Jenkins集成CD

2021-02-04 09:00:57

SQLDjango原生

2011-03-28 16:14:38

jQuery

2021-02-06 14:55:05

大數據pandas數據分析

2017-10-29 21:43:25

人臉識別

2017-10-27 10:29:35

人臉識別UbuntuPython

2009-04-22 09:17:19

LINQSQL基礎

2021-09-02 08:56:48

JavaBMIHashSet

2021-02-10 09:34:40

Python文件的壓縮PyCharm

2020-03-08 22:06:16

Python數據IP

2012-01-11 13:40:35

移動應用云服務

2021-08-02 23:15:20

Pandas數據采集

2021-02-02 13:31:35

Pycharm系統技巧Python

2021-03-23 09:05:52

PythonExcelVlookup

2021-05-10 06:48:11

Python騰訊招聘

2021-01-21 09:10:29

ECharts柱狀圖大數據

2021-01-08 10:32:24

Charts折線圖數據可視化
點贊
收藏

51CTO技術棧公眾號

色婷婷久久av| 欧美精品粉嫩高潮一区二区| 日韩精品在线免费| 日韩网址在线观看| 91亚洲国产成人精品一区| 久久porn| 欧美图区在线视频| 国产欧美久久久久| 国产视频第一区| 国产成人精品网址| 国产精品久久久久aaaa九色| 极品盗摄国产盗摄合集| jizz欧美| 亚洲高清不卡在线| 亚洲精品一区二区毛豆| 毛片基地在线观看| 亚洲乱码免费伦视频| 亚洲精品中文字幕av| а 天堂 在线| 黄网站免费在线观看| 99精品国产视频| 91热精品视频| 波多野结衣一区二区在线| 狠狠色丁香久久综合频道| 国产香蕉97碰碰久久人人| 亚洲区 欧美区| 日韩免费在线电影| 色综合色综合色综合色综合色综合 | 青青国产在线视频| 亚洲精品色图| 欧美激情女人20p| av在线免费看片| 92国产精品| 久久精品一级爱片| 国产精品一区二区欧美| 国产女人爽到高潮a毛片| 日韩国产精品久久| 欧美一区二区三区免费视| 久草成人在线视频| 亚洲综合五月| 久久久www成人免费精品张筱雨| 免费污网站在线观看| 任你弄精品视频免费观看| 日韩美女一区二区三区| 国产aaa免费视频| 亚洲三区在线观看无套内射| 国产一区二区调教| 欧美大片免费观看| 成年人av电影| 欧美激情第二页| 久久夜色精品国产欧美乱| 久久一级免费视频| 91日韩欧美| 日韩一级黄色av| www日本在线观看| 欧美一级大片在线视频| 欧美一区二区人人喊爽| 香蕉网在线视频| 欧美经典影片视频网站| 日韩欧美专区在线| 国内精品免费视频| 爱高潮www亚洲精品| 精品国产一区二区精华| 国产免费a级片| 精品自拍偷拍| 亚洲欧美国产精品专区久久 | www.国产精品一区| 亚洲福利视频网| 亚洲第一香蕉网| 国际精品欧美精品| 日韩在线高清视频| 久久久国产成人| 国产日韩欧美高清免费| 青青青国产精品一区二区| 日日噜噜噜噜人人爽亚洲精品| 三级亚洲高清视频| 91精品视频免费看| 亚洲精品久久久久久动漫器材一区 | 玖玖综合伊人| 国产欧美日韩精品一区| 午夜探花在线观看| 草草在线视频| 欧美在线观看你懂的| 一区二区三区国产好的精华液| 最新国产一区二区| 欧美午夜电影在线播放| 亚洲欧美日韩综合网| 国产极品在线观看| 欧美日韩中文精品| 丰满饥渴老女人hd| 一区二区小说| 久久亚洲国产精品成人av秋霞| 国产精品16p| 蜜芽一区二区三区| 国产精品777| 国产伦精品一区二区三区免.费| 国产精品99久久久久久久女警| 国产欧美在线一区二区| 国产精品一区二区婷婷| 亚洲六月丁香色婷婷综合久久| 日本精品一区在线观看| 96视频在线观看欧美| 亚洲精品国产精品久久清纯直播| 手机毛片在线观看| 国产综合自拍| 国产精品久久久久久久久久久新郎 | 日韩成人短视频| 亚洲伊人网站| 成人免费在线看片| 天堂а√在线资源在线| 国产亚洲一本大道中文在线| 天天在线免费视频| 日本精品裸体写真集在线观看| 日韩欧美第一区| 日本爱爱爱视频| 一区二区国产在线观看| 亚洲自拍偷拍色图| 三级外国片在线观看视频| 欧美日韩国产麻豆| 国产精品无码自拍| 99精品在线观看| 国产精品精品一区二区三区午夜版 | 特一级黄色大片| 国产精一区二区三区| 先锋影音日韩| 电影网一区二区| 亚洲福利视频在线| 久久久久无码国产精品| 美国毛片一区二区三区| 国产精品高清免费在线观看| 人妻少妇精品无码专区久久| 综合久久国产九一剧情麻豆| 国产又粗又大又爽的视频| 日日夜夜天天综合| 精品丝袜一区二区三区| 中文字幕一区二区三区精品| 国产成人在线影院 | 成年人网站在线| 欧美色中文字幕| 91资源在线播放| 日韩国产欧美视频| 色99中文字幕| 日本美女久久| 国产亚洲精品综合一区91| 久久亚洲天堂网| 99r国产精品| 久久久久久久久久久免费视频| 欧美jizz19性欧美| 国产91|九色| 亚洲av成人无码久久精品老人| 亚洲高清三级视频| 精品人妻一区二区三区香蕉| 国产欧美精品| 日本成人三级电影网站| av中文字幕在线| 色综合久久综合| 欧美做受高潮6| 蜜臀av性久久久久蜜臀av麻豆| 色噜噜狠狠色综合网| h1515四虎成人| 久久艳片www.17c.com | 色悠悠久久久久| 国产精品毛片一区二区在线看舒淇| 亚洲欧洲色图综合| 中文字幕在线观看视频www| 欧美午夜影院| 久久久福利视频| 日韩av免费| www国产91| 丰满肉肉bbwwbbww| 欧美日韩免费一区| 国产精品无码无卡无需播放器| 麻豆精品一区二区三区| 老汉色影院首页| 美女一区二区在线观看| 国产精品吊钟奶在线| 免费黄色在线观看| 亚洲成人中文字幕| 午夜精品一区二| 亚洲色图欧美在线| 国产精品第七页| 免费观看在线综合| 国产精品69久久久| 黑丝美女一区二区| 亚洲一区亚洲二区亚洲三区| yellow字幕网在线| 最近2019年好看中文字幕视频| 国产毛片在线视频| 欧美日韩黄色大片| 九九这里只有精品视频| 成人18精品视频| 天天综合网日韩| 极品日韩av| 亚洲美女搞黄| 国产精品自在线拍| 国产精品夜间视频香蕉| 色综合888| 亚洲五月六月丁香激情| 一二三不卡视频| 国产精品资源在线观看| 激情五月开心婷婷| 欧美人成在线| 亚洲精品电影在线一区| 国产成人精品福利| 国产主播喷水一区二区| 欧产日产国产精品视频| xvideos亚洲人网站| 天天操天天射天天舔| 欧美日韩五月天| 国偷自拍第113页| 亚洲精品一二三| 手机看片福利视频| av中文字幕一区| 日韩精品aaa| 日韩电影在线一区二区三区| 欧美极品少妇无套实战| 日韩久久综合| 青青草国产精品| 嫩草国产精品入口| 91超碰在线免费观看| 91国拍精品国产粉嫩亚洲一区| 国内精品小视频| 五月天久久久久久| 日韩午夜激情视频| 国产乱淫片视频| 欧美日韩亚洲综合| 天堂网中文字幕| 午夜精品aaa| 大乳护士喂奶hd| 国产精品亚洲成人| 伊人成人222| 日本在线不卡一区| 色综合av综合无码综合网站| 影音先锋亚洲精品| 青青草视频国产| 一本精品一区二区三区| 亚洲一区二区三区涩| 欧美三级美国一级| 日韩精品伦理第一区| 亚洲春色h网| 麻豆av一区二区三区| 成人激情自拍| 国产区一区二区三区| 99久久婷婷国产综合精品青牛牛| 国产精品一区二区三| 久久久成人av毛片免费观看| 欧美一级大片在线观看| 午夜不卡影院| 中文字幕9999| 成人精品一区二区三区免费 | 亚洲av熟女国产一区二区性色| wwwwww.欧美系列| 欲求不满的岳中文字幕| av中文字幕一区| 老鸭窝一区二区| 久久久久国产一区二区三区四区 | 7777精品久久久久久| 免费毛片在线| 亚洲欧美日韩久久久久久 | www.国产一区| 成人黄色在线电影| 高清亚洲成在人网站天堂| 久久久久黄久久免费漫画| 性欧美亚洲xxxx乳在线观看| sm捆绑调教国产免费网站在线观看| 午夜精品久久久久久久白皮肤| www.综合| 国产成人精品综合久久久| 成人综合网站| 91牛牛免费视频| 国产成人tv| 日韩欧美一区二区三区四区 | 播放灌醉水嫩大学生国内精品| 国产精品亚洲产品| 9久久婷婷国产综合精品性色 | 欧美va天堂在线| 18禁网站免费无遮挡无码中文| 午夜亚洲一区| 不卡中文字幕在线观看| 国产成人一级电影| 人妻少妇精品视频一区二区三区| 国产亚洲一区二区三区四区| 国产精品视频一区二区在线观看 | 欧美brazzers| 欧美一区二区三区性视频| 欧美一区,二区| 一本色道久久88亚洲综合88| 国产在线69| 欧美一乱一性一交一视频| 久久亚洲国产精品尤物| 欧美亚洲另类激情另类| 国产欧美自拍| 国产精品久久久久久免费观看| 欧美猛男同性videos| 国产精品久久成人免费观看| 亚洲一区一卡| 成年人网站av| 久久嫩草精品久久久久| 国产传媒免费在线观看| 欧美日韩亚洲精品内裤| 国产剧情精品在线| 日韩av在线看| 亚洲av成人精品一区二区三区在线播放 | 亚洲精品永久视频| 91视频在线看| 亚洲精品卡一卡二| 色偷偷久久一区二区三区| 国产视频www| 中文字幕免费精品一区高清| 欧美1234区| 亚洲一区二区三| 欧美日韩有码| 777久久久精品一区二区三区 | 一区二区三区成人精品| 午夜啪啪小视频| 国产午夜精品一区二区 | 蜜芽在线免费观看| 日产日韩在线亚洲欧美| 9l视频自拍蝌蚪9l视频成人| 一区二区精品免费视频| 国产日韩欧美高清免费| 久久精品aⅴ无码中文字字幕重口| 国产精品麻豆欧美日韩ww| 国产成人无码精品亚洲| 欧美videossexotv100| 色影院视频在线| 国产成人精品网站| 亚洲另类春色校园小说| 国产玉足脚交久久欧美| 国产乱码精品一区二区三区av| 99在线视频免费| 成人在线综合网站| 一级黄色片日本| 欧美探花视频资源| 国产高清一区在线观看| 国产成人97精品免费看片| 免费萌白酱国产一区二区三区| 黄色激情在线视频| 懂色中文一区二区在线播放| 黄视频网站免费看| 91精品久久久久久蜜臀| 国产黄色一级大片| 久久精品国产v日韩v亚洲| 欧美日韩伦理一区二区| 亚洲一区二区三区四区中文| 琪琪一区二区三区| 久久一级免费视频| 69堂精品视频| 国产精品刘玥久久一区| 国产欧美日韩精品丝袜高跟鞋| 欧美日韩中字| 少妇网站在线观看| 中文字幕日韩一区二区| 国产又大又长又粗| 欧美精品一区二区免费| 精品久久亚洲| 青青在线视频免费观看| 成人免费视频国产在线观看| 69精品久久久| 日韩精品在线免费播放| 欧美精品资源| 一区一区视频| 国产福利一区二区三区视频在线| 91porn在线视频| 亚洲аv电影天堂网| 欧美sm一区| 色一情一乱一伦一区二区三区| 麻豆成人av在线| 九九热国产在线| 亚洲精品视频免费| 婷婷久久综合九色综合99蜜桃| 超级碰在线观看| 成人av电影在线观看| 亚洲天堂五月天| 久久的精品视频| 国产精品香蕉| 一区二区三区视频在线观看免费| 亚洲视频一区二区免费在线观看| 精品国产乱码一区二区三 | **国产精品| 成人一级生活片| 久久女同精品一区二区| 一级黄色大片免费观看| 久久久久久久久久久成人| 精品在线手机视频| 亚洲精品在线视频播放| 午夜激情久久久| 在线观看免费黄视频| 国产成人精品免费视频大全最热| 欧美亚洲在线| 中文字幕亚洲欧美日韩| 亚洲激情第一页| 成人在线日韩| 相泽南亚洲一区二区在线播放| 国内久久精品视频| 亚洲精品中文字幕乱码三区91| 欧美精品少妇videofree| 国精一区二区| 亚洲啪av永久无码精品放毛片| 欧美图区在线视频|