欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

微信小程序仿通訊錄功能

 更新時(shí)間:2020年04月09日 11:39:44   作者:默認(rèn)S  
這篇文章主要為大家詳細(xì)介紹了微信小程序仿通訊錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了微信小程序?qū)崿F(xiàn)通訊錄功能的具體代碼,供大家參考,具體內(nèi)容如下

微信小程序模仿通訊錄功能需要用到scroll-view標(biāo)簽

思路:首先需要獲取到你所需要展示的數(shù)據(jù)樣式的高度(這就需要用到微信給我們提供的一個(gè)API來完成了,因?yàn)樾〕绦蚴菦]有DOM樹結(jié)構(gòu)的,這個(gè)可以去看我的前一篇里面有詳細(xì)的記載怎么獲取想要的元素的寬高。),然后組合成一個(gè)高度數(shù)組(便于后面根據(jù)這個(gè)數(shù)組進(jìn)行判斷),再獲取滾動(dòng)距離,用這兩個(gè)比較判斷之后就可以得出滾動(dòng)的時(shí)候右邊選中的字母了,然后再利用scroll-view標(biāo)簽的scroll-into-view屬性來實(shí)現(xiàn)點(diǎn)擊右側(cè)導(dǎo)航字母,對(duì)應(yīng)的左側(cè)列表滾動(dòng)到相應(yīng)的位置。(每個(gè)人的想法不同,解法和理解也不太可能相同。所以,按自己的心走就好了),話不多說,上代碼!

wxml

<view>
 <!-- 左側(cè)列表內(nèi)容部分 -->
 <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>
 <!-- 右側(cè)字母導(dǎo)航 -->
 <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({
 /** 
 * 頁面的初始數(shù)據(jù) 
 */
 data: {
 isActive: null,
 listMain: [],
 toView: 'inToView0',
 oHeight: [],
 },
 //點(diǎn)擊右側(cè)字母導(dǎo)航定位觸發(fā)
 scrollToViewFn: function (e) {
 var that = this;
 var _id = e.target.dataset.id;
 var scrollTop = that.data.scrollTop;
 console.log('點(diǎn)擊獲取Id', _id)
 console.log('點(diǎn)擊獲取滾動(dòng)距離', 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
  }
 }
 },
 // 頁面滑動(dòng)時(shí)觸發(fā)
 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;
  }
 }
 },
 // 處理數(shù)據(jù)格式,及獲取分組高度
 getBrands: function () {
 var that = this;
 var url = config.DOMAIN_API.wikiWholeList,
  data = {};
 //發(fā)起get請(qǐng)求,使用方式如下:
 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) => { //錯(cuò)誤處理,已統(tǒng)一處理,此處可以不需要
  console.log(errMsg);
 });
 
 },
 onLoad: function (options) {
 var that = this;
 wx.hideShareMenu()
 that.getBrands();
 },
})

以上就是做這個(gè)仿通訊錄功能的所有步驟,和別的大同小異。

為大家推薦現(xiàn)在關(guān)注度比較高的微信小程序教程一篇:《微信小程序開發(fā)教程》小編為大家精心整理的,希望喜歡。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JavaScript每天必學(xué)之?dāng)?shù)組和對(duì)象部分

    JavaScript每天必學(xué)之?dāng)?shù)組和對(duì)象部分

    JavaScript每天必學(xué)之?dāng)?shù)組和對(duì)象部分,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 細(xì)說JavaScript中的this指向與綁定規(guī)則

    細(xì)說JavaScript中的this指向與綁定規(guī)則

    本文主要詳細(xì)介紹了JavaScript中的this指向與綁定規(guī)則,默認(rèn)綁定,隱式綁定,顯示綁定,new綁定這四個(gè)規(guī)則,文中有相關(guān)的代碼示例供大家參考,感興趣的同學(xué)可以閱讀下
    2023-05-05
  • 學(xué)習(xí)javascript文件加載優(yōu)化

    學(xué)習(xí)javascript文件加載優(yōu)化

    這篇文章主要為大家詳細(xì)介紹了javascript文件加載優(yōu)化,三種方式實(shí)現(xiàn)js文件加載優(yōu)化,感興趣的小伙伴們可以參考一下
    2016-02-02
  • JS小游戲之宇宙戰(zhàn)機(jī)源碼詳解

    JS小游戲之宇宙戰(zhàn)機(jī)源碼詳解

    這篇文章主要介紹了JS小游戲之宇宙戰(zhàn)機(jī)源碼,是一款非常經(jīng)典的游戲源碼,包含了游戲設(shè)計(jì)中比較常見的邏輯處理,本文附帶了該游戲的完整源碼,需要的朋友可以參考下
    2014-09-09
  • JS 循環(huán)li添加點(diǎn)擊事件 (閉包的應(yīng)用)

    JS 循環(huán)li添加點(diǎn)擊事件 (閉包的應(yīng)用)

    這篇文章主要介紹了js循環(huán)li添加點(diǎn)擊事件 (閉包的應(yīng)用)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-12-12
  • Javascript表單驗(yàn)證要注意的事項(xiàng)

    Javascript表單驗(yàn)證要注意的事項(xiàng)

    JavaScript 可用來在數(shù)據(jù)被送往服務(wù)器前對(duì) HTML 表單中的這些輸入數(shù)據(jù)進(jìn)行驗(yàn)證。被 JavaScript 驗(yàn)證的這些典型的表單數(shù)據(jù)有:用戶是否已填寫表單中的必填項(xiàng)目?用戶輸入的郵件地址是否合法?用戶是否已輸入合法的日期?用戶是否在數(shù)據(jù)域 (numeric field) 中輸入了文本?
    2014-09-09
  • 基于原生JS實(shí)現(xiàn)圖片裁剪

    基于原生JS實(shí)現(xiàn)圖片裁剪

    要進(jìn)行圖片編輯,最重要要能夠?qū)D片進(jìn)行裁剪。主要的實(shí)現(xiàn)分成兩部分,一部分是前端利用js進(jìn)行裁剪區(qū)域選擇,第二部分是利用PHP進(jìn)行后臺(tái)處理。現(xiàn)在就跟大家分享一下。
    2016-08-08
  • JavaScript設(shè)計(jì)模式之策略模式詳解

    JavaScript設(shè)計(jì)模式之策略模式詳解

    設(shè)計(jì)模式(Design pattern)是解決軟件開發(fā)某些特定問題而提出的一些解決方案也可以理解成解決問題的一些思路,下面這篇文章主要給大家介紹了關(guān)于JavaScript設(shè)計(jì)模式之策略模式的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • 基于javascript原生判斷DOM是否加載完畢

    基于javascript原生判斷DOM是否加載完畢

    這篇文章主要介紹了基于javascript原生判斷DOM是否加載完畢,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 通過url查找a元素應(yīng)用案例

    通過url查找a元素應(yīng)用案例

    這篇文章主要介紹了通過url查找a元素的實(shí)現(xiàn)思路,解決一些比較實(shí)際的問題,感興趣的朋友可以參考下
    2014-04-04

最新評(píng)論