?? ?????? ??? ???? ????? ??? ??? ?? ? ???? ?? ????? ??? ???? ???? ? ?? WeChat ???? ???? ??? ???????. ??? ??? ????.
1. ??
?? ???? ?? ????? ??? ???, ??? ???? ????? ??? ??? ?? ???? ??????. ? ?? ???? ?? ???? ?????.
??? ?? ??????.
??? ?? ??? ??? ?? ????? ????. ?? ?? ?? ??? ??? ??? ????.
2. ??
2.1 ?? ??
? ?? ??? ?? WeChat ???? ?? scroll-view ?? ??? ?????.
scroll-into-view ??? ???? ??? ? ???? ???? ??? ?? ??? ???? ???? ? ????.
binscroll ???? ???? ?? ???? ??? ??? ???? ?? ???? ?? ????. ??? ??
2.1 ??? ???? ??
?? ?????? ?? ????? ?? ???? ?????. ?????? ?? ?? ?? ?? + ??? ?? ?? ??? ? ???? ????.
??? ??? ?? ??? ?? ???? ?? ???? ???? ? ??? ????? ???.
?? ??:
<!--index.wxml--> <view class="list"> <!--頂部固定區(qū)域--> <view style="height: 88rpx;width: 100%;background-color: burlywood;text-align: center;">頭部區(qū)域</view> <!--可滾動區(qū)域--> <scroll-view scroll-y="true" style="width: 100%; height: {{scrollAreaHeight}}px;" bindscroll="scroll" scroll-into-view="{{scrollToItem}}" scroll-with-animation="true" scroll-top="{{scrollTop}}"> <!--水平滾動的tab欄--> <scroll-view scroll-x="true" style="height: 88rpx;width: 100%;"> <view class="head-area {{float ? 'head-float' : ''}}" > <view class="head-area-item {{curSelectTab === index ? 'head-area-item-select' : ''}}" wx:for="{{appGroupList}}" bindtap="tabClick" data-index="{{index}}"> {{item.name}} </view> </view> </scroll-view> <!--數(shù)據(jù)列表--> <view class="list-group" style="height: {{listGroupHeight}}px;"> <view class="list-group-item" id="v_{{index}}" wx:for="{{appGroupList}}" data-index="{{index}}"> <view class="group-name"> {{item.name}} </view> <view class="group-children" > <view wx:for="{{item.children}}" class="group-children-item" style="width: {{itemWidth}}px;"> <image src="{{item.url}}"></image> <view>{{item.name}}</view> </view> </view> </view> </view> </scroll-view> </view>
???? ???? ???? ? ? ?? ??? ????.
1. ??? ??? scrollAreaHeight ?? ??. --- ?? ??? ? ???? ?? ?? ??? ??? ? ?? ????
2. ?? ??? ??? ??? ??. --- ???? ??? ??? ???? ??? ??? ?? ??? ???? ??? ?? ?? ???? ?????.
3. {index}}" ??? ??? ID? ??? ? ??? ???? ??? ??? ???? ? ID? ???? ?????.
2.2 ??? ??
/**index.wxss**/ .list{ width: 100%; height: 100%; display: flex; flex-direction: column; } .head-area{ display: flex; flex-direction: row; flex-wrap: nowrap; height: 88rpx; width: 100%; padding: 0 10; } .head-area-item{ display: flex; height: 88rpx; text-align: center; width: 150rpx; align-items: center; justify-content: center; } .head-area-item-select{ color: #09bb07; } image{ width: 88rpx; height: 88rpx; } .list-group{ display: flex; width: 100%; height: 1000%; flex-direction: column; } .list-group-item{ display: flex; width: 100%; background-color: #aaa; flex-direction: column; } .group-name{ height: 88rpx; display: flex; text-align: center; align-items: center; margin-left: 20rpx; } .group-children{ display: flex; flex-direction: row; flex-wrap: wrap; width: 100%; } .group-children-item{ height: 160rpx; display: flex; flex-direction: column; justify-content: center; align-items: center; } .head-float{ position: fixed; top: 88rpx; background-color: #ffffff; }
2.3 ?? ??
// index.js Page({ heightArr: [], //記錄scroll-view滾動過程中距離頂部的高度 distance: 0, data: { appGroupList:[ {name:"分組01",children:[{"name":"測試0","url":"/images/bluetooth.png"}, {"name":"測試1","url":"/images/bluetooth.png"}, {"name":"測試2","url":"/images/bluetooth.png"}, {"name":"測試3","url":"/images/bluetooth.png"}, {"name":"測試4","url":"/images/bluetooth.png"}, {"name":"測試5","url":"/images/bluetooth.png"}, {"name":"測試6","url":"/images/bluetooth.png"}, {"name":"測試7","url":"/images/bluetooth.png"}]}, {name:"分組02",children:[{"name":"測試0","url":"/images/bluetooth.png"}, {"name":"測試1","url":"/images/bluetooth.png"}, {"name":"測試2","url":"/images/bluetooth.png"}, {"name":"測試3","url":"/images/bluetooth.png"}, {"name":"測試4","url":"/images/bluetooth.png"}, {"name":"測試5","url":"/images/bluetooth.png"}, {"name":"測試6","url":"/images/bluetooth.png"}, {"name":"測試7","url":"/images/bluetooth.png"}]}, {name:"分組03",children:[{"name":"測試0","url":"/images/bluetooth.png"}, {"name":"測試1","url":"/images/bluetooth.png"}, {"name":"測試2","url":"/images/bluetooth.png"}, {"name":"測試3","url":"/images/bluetooth.png"}, {"name":"測試4","url":"/images/bluetooth.png"}, {"name":"測試5","url":"/images/bluetooth.png"}, {"name":"測試6","url":"/images/bluetooth.png"}, {"name":"測試7","url":"/images/bluetooth.png"}]}, {name:"分組04",children:[{"name":"測試0","url":"/images/bluetooth.png"}, {"name":"測試1","url":"/images/bluetooth.png"}, {"name":"測試2","url":"/images/bluetooth.png"}, {"name":"測試3","url":"/images/bluetooth.png"}, {"name":"測試4","url":"/images/bluetooth.png"}, {"name":"測試5","url":"/images/bluetooth.png"}, {"name":"測試6","url":"/images/bluetooth.png"}, {"name":"測試7","url":"/images/bluetooth.png"}]}, {name:"分組05",children:[{"name":"測試0","url":"/images/bluetooth.png"}, {"name":"測試1","url":"/images/bluetooth.png"}, {"name":"測試2","url":"/images/bluetooth.png"}, {"name":"測試3","url":"/images/bluetooth.png"}, {"name":"測試4","url":"/images/bluetooth.png"}, {"name":"測試5","url":"/images/bluetooth.png"}, {"name":"測試6","url":"/images/bluetooth.png"}, {"name":"測試7","url":"/images/bluetooth.png"}]}, ], itemWidth: wx.getSystemInfoSync().windowWidth / 4, scrollAreaHeight:wx.getSystemInfoSync().windowHeight - 44, float:false, curSelectTab:0, scrollToItem:null, scrollTop: 0, //到頂部的距離 listGroupHeight:0, }, onReady: function () { this.cacluItemHeight(); }, scroll:function(e){ console.log("scroll:",e); if(e.detail.scrollTop>=44){ this.setData({ float : true }) } else if(e.detail.scrollTop<44) { this.setData({ float : false }) } let scrollTop = e.detail.scrollTop; let current = this.data.curSelectTab; if (scrollTop >= this.distance) { //頁面向上滑動 //列表當(dāng)前可視區(qū)域最底部到頂部的距離 超過 當(dāng)前列表選中項距頂部的高度(且沒有下標(biāo)越界),則更新tab欄 if (current + 1 < this.heightArr.length && scrollTop >= this.heightArr[current]) { this.setData({ curSelectTab: current + 1 }) } } else { //頁面向下滑動 //如果列表當(dāng)前可視區(qū)域最頂部到頂部的距離 小于 當(dāng)前列表選中的項距頂部的高度,則切換tab欄的選中項 if (current - 1 >= 0 && scrollTop < this.heightArr[current - 1]) { this.setData({ curSelectTab: current - 1 }) } } //更新到頂部的距離 this.distance = scrollTop; }, tabClick(e){ this.setData({ curSelectTab: e.currentTarget.dataset.index, scrollToItem: "v_"+e.currentTarget.dataset.index }) }, //計算每一個item高度 cacluItemHeight() { let that = this; this.heightArr = []; let h = 0; const query = wx.createSelectorQuery(); query.selectAll('.list-group-item').boundingClientRect() query.exec(function(res) { res[0].forEach((item) => { h += item.height; that.heightArr.push(h); }) console.log(that.heightArr); that.setData({ listGroupHeight: that.heightArr[that.heightArr.length - 1 ] }) }) }, })
?? ???? ? ?? ?? ??? ????.
1 cacluItemHeight? ??? ?? ??? ?? ??? ???? ?? ?? ??? heightArr ??? ?????.
heightArr ??? ? ?? ?? ?? ??? ???? ?????.
2. ????? ?? ??? ??? ????, ???? ???? ?? ??? ??? ??, ??? ??? ???? ?? ??? ?? ?????.
?????. ? ??? ???? ????? ??? ??? ?? ? ? ?? ??? ?? ? ????.
【?? ?? ??: ?? ???? ?? ????】
? ??? ?? ?????? ?? ???? ?? ?? ??? ???? ??? ?? ??? ??? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

??? ??? ??? ????? ???? ?? WeChat? ???? ?? ???? ?? ??????? ?????. WeChat ?? ????? ???? ???? ??????? ?????? ???? ??? ?? ????? ?? ???? ? ?? ??? ?? ??? ??? ? ????. ? ????? Python? ???? WeChat ???? ???? ??? ?????. 1. ?? Python? ???? WeChat ???? ???? ?? ?? Python ?????? ???? ???. ???? wxpy? itchat ? ?????? ???? ?? ????. wxpy? ?? ?????

WeChat ?? ?????? ?? ??? ?? ?? WeChat ?? ?????? ?? ??? ??? ???? ?? ??? ??? ????? ?? ??? ??? ???? ? ?? ???? ????? ?????. ??? WeChat ????? ?? ??? ??? ???? ??? ??? ???? ?? ?? ??? ?????. ??, ?? ????? ??? ???? ??? ? ?? ?? ??? ???? ???. ??? ?? ??? ???? ?? ??? ?? ??? ?? ??? ???? ?? ????. <--index.wxml- ->&l

10? 31? ? ???? ??? ??? ?? 5? 27? Ant Group? '?? ?? ????'? ????? ????? ?? ??? ??? ?????. Alipay? '?? ?? - ??? ?? ??' ?? ????? ??????. ?? ???? ?? ??? ?????? ???? ?? ???? ?? ??? ?? ??? ???? Alipay? ?? ??? ?? ??? ???? ? ??? ???. ?? ???? "????", "????" ?? ???? ???? "????" ???? ??? ? ????. ?? ?????? ???? ????? ?? ? ???? ?? ?? ??? ??? ??? ? ??? ?? ? Alipay ????? ?? ?????? ?? ??? ?????. ? ??????? ?? ??????? ?? ?? ?? ?? ??? ??? ? ??? ?????. ? ?? ??? ??? ???? ?? ??? ?? ???????. ??? ??

?? ????? ??? ??? ? ????. ?? ??: 1. "react-reconciler"? ???? ???? ???? DSL? ?????. 2. DSL? ?? ???? ????? ?? ?? ???? ?? ??? ????. 3. npm? ???? ???? ?????. ???? npm? ?????. 4. ??? ???? ???? ??? ?? API? ???? ??? ?????.

???? ?? ????? H5 ??? ??? ????? ???? ?? ??? ?????. ?? ??? ???? ??? ????? ???? ?? ?? ????? H5? ?? ?????? ??? ?????. ??? ??? ?? ?????? uniapp? ?? ??? ???? ?? ????? H5 ?? ??? ???? ???? ?? ???? ?? ???? ? ????. ? ????? uniapp? ?? ????? H5 ?? ??? ??? ???? ??? ???? ???? ?? ??? ?????. 1. ??? ??? ??

?? ?? ?? ?? ????? ??? ? ?? ??? ?? ????, ?? ?????? ?? ?? ??? ???? ???? ??? ?? ???????.

?? ???? x01 ?? ?? ??, ?? ???? ??? ???? ???? ?????. ?? ??? ??? ??? ? ???? ?? ??? ?? ? ??? ?????. ?? ???? ???? ???? ??? ?? ??? ?????. x02 ?????? ??? ???? ?? ?????. ?????? ??? ???? ??? ?? ???? ?? ??? ???? ?????. ??? ??? ??? ????? ????? ??? ? ?? ???? ???? ???. ??? ??? ?? ???? ?? ??? ??? ?? ?????. ????, ??

PHP ? ?? ????? ??? ?? ?? ? ?? ?? ??? ?? ?? ? ?? ??? ?? ???? ??? ?? ? ??? ?????. ??? ??? ??? ?? ?? ?? ? ?? ??? ?? ???? ??? ???? ????. ?? ???? PHP? ???? ? ?? ???? ?? ?????. ? ????? PHP ? ?? ?????? ??? ?? ?? ? ?? ?? ?? ??? ???? ?? ?? ??? ?????. 1. PHP? ???? PHP??? ?? ????? ??? ? ????.
