短視訊直播原始碼,滾動定位,規定每次滑動時下滑多少格
短視訊直播原始碼,滾動定位,規定每次滑動時下滑多少格
<template> <scroll-view id="tabs" scroll-y="true" @scroll="tabScoll" :scroll-top="scrollInto"> <view> <view id="scrollTop"> <!-- 頂部資訊 --> <view> 頭部 </view> </view> <view> <view :class="[barshow?'scroll-tab-fixed':'scroll-tab-static']" :style="{top:barshow?'0':'0'}"> <scroll-view scroll-x="true" :scroll-left="scrollLeft" style="background-color: #fff;"> <view> <view v-for="(item,index) in tabList" :style="{color:activeTab == index?activeColor:'#8895ac'}" @click="changeTab(index)" :id="'tabs'+index" :key="index"> <text>{{item.text}}</text> <view v-if="activeTab == index" :style="[tabBarStyle]"> </view> </view> </view> </scroll-view> </view> </view> <view ref="scroll"> <view :ref="'wrap'+index" v-for="(item,index) in tabList" :key=""> <view> <!-- tab欄標籤 --> <view :id="'wrap'+index"> {{item.text}} </view> <!-- 檢查專案 --> <view> <!-- 登記事項檢查 --> <view v-for="(i,index) in item.des" :key="index"> {{item.text}}---內容{{index}} </view> </view> </view> </view> </view> </view> </scroll-view> </template> <script> export default { name: 'tab-scroll-sticky', data() { return { barshow: false, //是否顯示吸頂 tabTop: 0, //距離頂部的距離 activeTab: 0, //高亮tal欄的項 scrollInto: 0, //scrllo-view y軸滾動的高度 scrollLeft: 0, //tab欄X軸的滾動的距離 tabBarStyle: {}, //tab欄底部行線的樣式 warpTop: [], //每一個內容開始的高度(距離頂部的高度) // 內容 tabList: [ {id:1,text:"第1111",des:20}, {id:2,text:"第22",des:20}, {id:3,text:"第333",des:20}, {id:4,text:"第44",des:20}, {id:5,text:"第55555",des:20}, {id:6,text:"第6666",des:20}, ], activeColor: '#ff0000',//線的顏色 }; }, computed: {}, onLoad(option) { this.resetHight() }, watch: {}, methods: { //資料裝載完成後重新獲取高度 resetHight() { this.$nextTick(async function() { let rect = await this.GetRect("#scrollTop"); //獲取id為scrollTop的div的節點資訊 this.tabTop = rect.height; this._getTabRect(0); //獲取tab欄高亮第一位的資訊 this.barInit(); //獲取節點的高度 }); }, //獲取節點資訊 GetRect(selector) { return new Promise((resolve, reject) => { let view = uni.createSelectorQuery().in(this) view.select(selector).boundingClientRect(rect => { resolve(rect) }).exec(); }) }, //獲取節點距離頂部距離 barInit: async function(index) { this.scrollInto = 0 //初始值位0 let navTargetTop = []; let navTargetTop1 = []; // 遍歷通過ref獲取對應沒有個內容開始的高度 for (let i = 0; i < this.tabList.length; i++) { var top = this.$refs['wrap' + i][0].$el.offsetTop navTargetTop.push(parseInt(top)) } // 最後把每一項內容開始節點的高度陣列賦值給this.warpTop this.warpTop = navTargetTop; }, //tab切換 changeTab(e) { var that = this this.activeTab = e; this.$nextTick(function() { that._getTabRect(that.activeTab); //頁面點選切換的時候,重新設定tab欄的資訊引數 if (e == 0) { that.scrollInto = that.warpTop[e] - 44; } else { that.scrollInto = that.warpTop[e] - 93; } }) }, //獲取一個tab寬度 async _getTabRect(itemIndex) { // 獲取tab欄的資訊 let rect = await this.GetRect("#tabs" + itemIndex); let rect1 = await this.GetRect("#tabs" + itemIndex + ">.scroll-tab-list-text"); let width = (rect1.width * 0.67); if (itemIndex == this.activeTab) { this.scrollLeft = rect.left //向做滾動的距離 } this.tabBarStyle = { width: width + 'px', background: this.activeColor, } }, //Y軸scroll滾動 async tabScoll(e) { let scrollTop = e.detail.scrollTop; //獲取滾動的高度 let rect = await this.GetRect("#scrollTop"); //獲取頁面資訊 // 第一次滾動時,tabTop=0 if (this.tabTop == 0) { let rect = await this.GetRect("#scrollTop"); this.tabTop = rect.height; //頁面沒有距離頂部的距離 } // this.tabTop = 0 顯示置頂 this.barshow = scrollTop >= this.tabTop ? true : false; let scrollTop1 = scrollTop; // 迴圈遍歷所有內容開始節點的高度陣列 for (var i = 0; i < this.warpTop.length; i++) { // 滾動的高度scrollTop1 小於this.warpTop[0], if (scrollTop1 <= this.warpTop[0]) { this.activeTab = 0; this.scrollInto = this.warpTop[0] - 44 //y軸滾動回this.warpTop[0]第一個節點的位置 this._getTabRect(0); } else if (scrollTop1 > this.warpTop[this.warpTop.length - 1] - 93) { // 如果大於最後一位 this.activeTab = this.warpTop.length - 1; this.scrollInto = this.warpTop[this.warpTop.length - 1] this._getTabRect(this.warpTop.length - 1); } else { // 其它,同理 if (scrollTop1 > this.warpTop[i] - 93 && scrollTop1 < this.warpTop[i + 1] - 93) { this.scrollInto = scrollTop1 this.activeTab = i; this._getTabRect(i); } } } }, } }; </script> <style scoped> uni-page-body{ height: 100%; overflow: hidden; } .tab-scroll-sticky{ height: 100%; } .flexRowCc { display: flex; flex-direction: row; align-items: center; } .scroll-content { position: relative; ::-webkit-scrollbar { display: none; width: 0 !important; height: 0 !important; -webkit-appearance: none; background: transparent; color: transparent; } .scroll-tab { @extend .flexRowCc; justify-content: space-between; width: 100%; height: 44px; box-sizing: border-box; border-top: 1px solid #F1F1F1; border-bottom: 1px solid #F1F1F1; background: #FFFFFF; position: relative; z-index: 999; // overflow-x: auto; &-static { position: relative !important; } &-fixed { position: fixed; top: 0px; left: 0; width: 100%; z-index: 9999; } &-list { text-align: center; font-size: 24upx; color: #2266BC; flex: 1 1 auto; padding: 0 10upx; position: relative; &-text { display: inline-block; &-line { position: absolute; height: 4upx; transform: translateX(-50%); left: 50%; border-radius: 16upx; transition-duration: .5s; margin-top: 4rpx; } } } } } .scroll-warp { height: 100vh; padding-bottom: 200upx; // margin-bottom: 200upx; } // --------------------------------------------- .directSignature { &-top { width: 750upx; background: #f3c55c; height: 500upx; padding: 21upx; } &-tabstatus{ background-image: linear-gradient(to left, #f97e36, #f3c55c); padding:10upx 30upx; display: inline-block; margin: 20upx 0; color: #FFFFFF; border-radius: 0 30upx 30upx 0; } &-checkProject { padding: 0 20upx; } } // 檢查專案 .directSignature-checkProject { &-title { color: #2266bc; font-size: 30upx; font-weight: 550; // background-image: linear-gradient(to bottom, #e3edf9, #fff); padding: 20upx; border-radius: 15upx; border-bottom: 3upx solid #eff5fb; white-space: 4upx; margin-bottom: 7upx; background-color: #e3edf9; } } </style>
以上就是 短視訊直播原始碼,滾動定位,規定每次滑動時下滑多少格,更多內容歡迎關注之後的文章
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2890771/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 視訊直播原始碼,新增內容滑動條,停止滑動時隱藏原始碼
- 短視訊帶貨原始碼,更改滾動條跟隨手機滑動的速度原始碼
- 短視訊直播原始碼,拖動滑塊實現圖片驗證效果原始碼
- 短視訊程式原始碼,PageSlider實現滑動頁面原始碼IDE
- android短視訊開發,不設定滑動限制,可一直往下滑Android
- 帶貨直播原始碼,確定ViewPager滑塊滑動方向原始碼Viewpager
- 短視訊平臺原始碼,介面支援上下、左右的任意滑動原始碼
- php短視訊原始碼,向左滑動顯示刪除按鈕PHP原始碼
- 短視訊直播系統開發直播短視訊程式搭建短視訊互動直播
- 短視訊程式碼,ViewPager滑動方向改變Viewpager
- 視訊直播app原始碼,軟體主頁向下滑動時隱藏搜尋框APP原始碼
- 手機直播原始碼,滾動條在滑動時顯示,靜止時恢復隱藏狀態原始碼
- 短視訊平臺原始碼,Android 左右滑動顯示和隱藏原始碼Android
- 直播短視訊原始碼短視訊APP短視訊帶貨系統多商戶直播原始碼APP
- 短視訊直播原始碼,動態釋出時選擇圖片、上傳圖片原始碼
- 短視訊直播原始碼,視訊計時效果,可隨時按鍵暫停原始碼
- 直播app原始碼,標題欄隨頁面滑動之title移動定位效果APP原始碼
- Android 設定TextView滑動滾動條和滑動效果AndroidTextView
- 直播app系統原始碼,動態遇到視訊時開始自動播放APP原始碼
- 直播商城原始碼,vue 彈窗 慣性滾動 加速滾動原始碼Vue
- 短視訊直播原始碼,自動對上傳的圖片進行識別原始碼
- 短視訊系統原始碼,直播間實現彈幕的自動傳送原始碼
- 短視訊直播原始碼,DialogFragment全屏且半透明原始碼Fragment
- 短視訊app開發,短視訊動態功能上傳圖片時,規定圖片壓縮的大小APP
- 滑鼠滑輪上下滾動設定方法_怎樣設定滑鼠上下滾動
- 短視訊平臺搭建,實現banner自動滑動展示效果
- php短視訊原始碼,點贊時會有大拇指動畫飄起PHP原始碼動畫
- 成品直播原始碼,點選滑動切換效果原始碼
- 短影片app原始碼,日常開發之RecycleView滑動APP原始碼View
- 成品直播原始碼推薦,uniapp多行滾動通知原始碼APP
- 短影片app原始碼,Vue3滾動載入APP原始碼Vue
- 短視訊直播原始碼,EditText輸入框的使用原始碼
- 短視訊商城系統,自動更改每次下拉後的重新整理動畫動畫
- 短視訊程式開發,RecyclerView自帶的滾動條View
- 聊天平臺原始碼,簡單使用 禁止滑動和設定滑動方向原始碼
- 視訊直播原始碼,提醒類彈窗,到時間後自動彈出原始碼
- 直播軟體原始碼,實現頁面滾動到可視區顯示動畫效果原始碼動畫
- vscode 如何設定滑輪滾動快捷鍵VSCode