위 챗 애플 릿 모방 주소록 기능
위 챗 애플 릿 이 주소록 기능 을 모방 하려 면 scroll-view 태그 가 필요 합 니 다.
사고방식:먼저 당신 이 보 여 줘 야 할 데이터 스타일 의 높이 를 가 져 와 야 합 니 다.(이것 은 위 챗 이 우리 에 게 제공 한 API 로 완성 해 야 합 니 다.왜냐하면 작은 프로그램 은 DOM 트 리 구조 가 없 기 때 문 입 니 다.이것 은 제 전편 에 원 하 는 요 소 를 어떻게 얻 는 지 상세 한 기록 이 있 습 니 다.)그 다음 에 하나의 고도 배열 로 조합 하여(뒤에 이 배열 에 따라 판단 하기 편리 함)스크롤 거 리 를 얻 고 이 두 개의 비교 판단 을 통 해 스크롤 할 때 오른쪽 에서 선택 한 알파벳 을 얻 을 수 있 습 니 다.그 다음 에 scroll-view 라벨 의 scroll-into-view 속성 을 이용 하여 오른쪽 네 비게 이 션 알파벳 을 클릭 하고 해당 하 는 왼쪽 목록 을 해당 하 는 위치 로 스크롤 합 니 다.(사람마다 생각 이 다 르 기 때문에 해법 과 이해 도 같 을 수 없다.그 러 니까 내 맘 대로 가면 돼),말 안 하고 코드 올 려!
wxml
<view>
<!-- -->
<scroll-view class="content" enable-back-to-top scroll-into-view="{{toView}}" scroll-y="true" scroll-with-animation="true" bindscroll="onPageScroll">
<view wx:for="{{listMain}}" wx:for-item="group" wx:key="{{group.id}}" id="{{ 'inToView'+group.id}}" data-id='{{group.id}}'>
<view class="address_top">{{group.name}}</view>
<view wx:for="{{group.list}}" wx:for-item="bdiet" wx:key="{{index}}">
<navigator url='./wholeDetail?id={{bdiet.id}}' hover-class='none'>
<view class="address_bottom" data-id='{{bdiet.id}}'>{{bdiet.wiki_name}}</view>
</navigator>
</view>
</view>
</scroll-view>
<!-- -->
<view class="orientation_region">
<view class="orientation">#</view>
<block wx:for="{{listMain}}" wx:key="{{item.id}}">
<view class="orientation_city {{isActive==item.id ? 'active':'' }}" bindtap="scrollToViewFn" data-id="{{item.id}}">
{{item.name}}
</view>
</block>
</view>
</view>
wxss
page {
height: 100%;
}
.content {
padding-bottom: 20rpx;
box-sizing: border-box;
height: 100%;
position: fixed;
}
.location {
width: 100%;
}
.location_top {
height: 76rpx;
line-height: 76rpx;
background: #f4f4f4;
color: #606660;
font-size: 28rpx;
padding: 0 20rpx;
}
.location_bottom {
height: 140rpx;
line-height: 140rpx;
color: #d91f16;
font-size: 28rpx;
border-top: 1rpx #e5e5e5 solid;
border-bottom: 1rpx #e5e5e5 solid;
padding: 0 20rpx;
align-items: center;
display: -webkit-flex;
}
.address_top {
height: 56rpx;
line-height: 56rpx;
background: #ebebeb;
color: #384857;
font-size: 28rpx;
padding: 0 20rpx;
}
.address_bottom {
height: 88rpx;
line-height: 88rpx;
background: #fff;
color: #000;
font-size: 28rpx;
border-bottom: 1rpx #e5e5e5 solid;
margin: 0 32rpx;
}
.location_img {
width: 48rpx;
height: 48rpx;
position: absolute;
right: 20rpx;
top: 125rpx;
}
.add_city {
width: 228rpx;
height: 60rpx;
line-height: 60rpx;
text-align: center;
border: 1rpx solid #e5e5e5;
color: #000;
margin-right: 20rpx;
}
.add_citying {
width: 228rpx;
height: 60rpx;
line-height: 60rpx;
text-align: center;
border: 1rpx solid #09bb07;
color: #09bb07;
margin-right: 20rpx;
}
.orientation {
white-space: normal;
display: inline-block;
width: 45rpx;
height: 50rpx;
font-size: 28rpx;
font-weight: bold;
color: rgb(88, 87, 87);
text-align: center;
}
.orientation_region {
padding: 5px 0px;
width: 45rpx;
font-size: 20rpx;
position: fixed;
top: 50%;
right: 6rpx;
transform: translate(0, -50%);
background: rgb(199, 198, 198);
border-radius: 10px;
}
.orientation_city {
height: 40rpx;
line-height: 40rpx;
color: #000;
text-align: center;
}
.active {
color: #2cc1d1;
}
.list-fixed {
position: fixed;
width: 100%;
z-index: 999;
height: 56rpx;
line-height: 56rpx;
background: #ebebeb;
color: #999;
font-size: 28rpx;
padding: 0 20rpx;
z-index: 9999;
}
.fixed-title {
color: #2cc1d1;
}
핵심 이 왔 습 니 다.(JS 논리)
Page({
/**
*
*/
data: {
isActive: null,
listMain: [],
toView: 'inToView0',
oHeight: [],
},
//
scrollToViewFn: function (e) {
var that = this;
var _id = e.target.dataset.id;
var scrollTop = that.data.scrollTop;
console.log(' Id', _id)
console.log(' ', scrollTop)
for (var i = 0; i < that.data.oHeight.length; i++) {
if (that.data.oHeight[i].key === _id) {
that.setData({
toView: 'inToView' + that.data.oHeight[i].key
});
break
}
}
},
//
onPageScroll: function (e) {
var that = this;
that.setData({
scrollTop: e.detail.scrollTop
})
var scrollTop = that.data.scrollTop;
console.log(scrollTop);
for(var i =0; i< that.data.oHeight.length; i++){
if (scrollTop >= 0 && scrollTop + 20 < that.data.oHeight[0].height){
that.setData({
isActive: that.data.oHeight[0].key
});
} else if (scrollTop + 20 <= that.data.oHeight[i].height) {
that.setData({
isActive: that.data.oHeight[i].key
});
return false;
}
}
},
// ,
getBrands: function () {
var that = this;
var url = config.DOMAIN_API.wikiWholeList,
data = {};
// get , :
util.ajaxPost(url, data).then((res) => { //
that.setData({
listMain: res
});
var number = 0;
for (let i = 0; i < that.data.listMain.length; i++) {
wx.createSelectorQuery().select('#inToView' + that.data.listMain[i].id).boundingClientRect(function (rect) {
number = rect.height + number;
var newArry = [{ 'height': number, 'key': rect.dataset.id, "name": that.data.listMain[i].name }]
that.setData({
oHeight: that.data.oHeight.concat(newArry)
})
}).exec();
};
}).catch((errMsg) => { // , ,
console.log(errMsg);
});
},
onLoad: function (options) {
var that = this;
wx.hideShareMenu()
that.getBrands();
},
})
이상 은 이 모방 주소록 기능 을 하 는 모든 절차 로 다른 것 과 대동소이 하 다.현재 관심 도가 높 은 위 챗 애플 릿 튜 토리 얼 을 추천 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
OpenSSL 생 성 ssl 인증서텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.