午夜91福利视频,午夜成人在线观看,午夜在线视频免费观看,午夜福利短视频,精品午夜成人免费视频APP

小程序模板網

微信小程序的手機通訊錄點擊本頁面跳轉位置的代碼詳解

發布時(shi)間(jian):2018-09-19 09:00 所屬欄目:小程序開發教程

最近(jin)開始(shi)做小(xiao)程(cheng)序(xu),通(tong)讀一(yi)遍文檔(dang)再(zai)上手(shou)并(bing)不(bu)算難,但不(bu)得不(bu)說(shuo)小(xiao)程(cheng)序(xu)里還是有一(yi)些坑(keng)。這里說(shuo)一(yi)下如何實現頁面錨點(dian)跳轉,一(yi)個城市列表的效果示意圖如下:

因為在(zai)微信小程序的環(huan)境中不(bu)能想(xiang)在(zai)瀏覽器里設置標簽(qian),或者操作dom滾動,傳統做(zuo)法就行不(bu)通(tong)了,一切(qie)都得按小程序的文檔來。

一開始我們的(de)做法是使(shi)用boundingClientRect()方(fang)法獲取每個錨(mao)點(dian)的(de)坐標(biao),然后再用wx.pageScrollTo()方(fang)法滑動過(guo)去。結果(guo)發現(xian)效(xiao)果(guo)不是很好,因為boundingClientRect方(fang)法返回的(de)每個點(dian)的(de)坐標(biao)會隨著屏幕(mu)滑動而變化,可能還(huan)會引起頁面抖動,最(zui)后還(huan)是選擇scroll-view(可滾動視圖區域)組件來實現(xian)錨(mao)點(dian)效(xiao)果(guo)。

具體實現

具體API就不(bu)贅述(shu)了,可以去看(kan)官(guan)方文檔(dang),這里講(jiang)幾個需要注意的(de)地方,下面是(shi)一個示意的(de)scroll-view組件代碼,上(shang)面的(de)幾個屬性是(shi)必須的(de):

復(fu)制代碼(ma)代碼(ma)如下:

scroll-into-view:這個綁定了(le)一個屬性,它的值應該是頁面元素(su)的id,設(she)置它的值就可以跳(tiao)轉到ID對應的元素(su)那里了(le)。

scroll-y:添加(jia)這個屬性標明(ming)是豎向滑動(dong)(dong)的(de),對應的(de)scroll-x則表(biao)示(shi)橫向滑動(dong)(dong),豎向滑動(dong)(dong)時(shi)scroll-view必(bi)須設(she)置一個固定的(de)height

bindscroll:監聽滑(hua)動,傳給他一個(ge)事件,滑(hua)動時(shi)執行該(gai)事件

文(wen)檔(dang)上給的(de)(de)(de)屬性特別多(duo),暫時(shi)只需要(yao)上述幾個(ge)就可實現我們想要(yao)的(de)(de)(de)效(xiao)果。實現原理也(ye)很簡單,內容部分,每個(ge)英文(wen)簡寫的(de)(de)(de)view設置一個(ge)id,然(ran)后(hou)在(zai)導航list那里點擊時(shi),就把scroll-into-view的(de)(de)(de)值設置成點擊的(de)(de)(de)那個(ge)id即可實現跳轉。

再說一下(xia)scroll-view的高(gao)度(du)問(wen)題,這個一定要做(zuo)適配的固定高(gao)度(du),不(bu)然在(zai)不(bu)同屏幕大小的手機上的顯示(shi)效果有差異。

獲取(qu)屏幕大(da)小(xiao)的(de)代碼:height是個變(bian)量,獲取(qu)到的(de)高度付給他,并反饋(kui)到頁面

  onLoad: function (options) {

    var that = this
    // 獲取系統信息
    wx.getSystemInfo({
      success: function (res) {
        // 計算主體部分高度,單位為px
        that.setData({
          height: res.windowHeight
        })
      }
    })
  },

幾點優化

到這里功(gong)能基本(ben)都(dou)實現了,但(dan)后面還發現一些問題(ti):如果要隱藏scroll-view的滾動條,需要設置css樣式:::-webkit-scrollbar


::-webkit-scrollbar {
 width: 0;
 height: 0;
 color: transparent;
}

還有就是點(dian)(dian)了一個(ge)錨(mao)點(dian)(dian)實現了跳轉,這個(ge)時候你滾(gun)(gun)動頁(ye)(ye)面(mian)再點(dian)(dian)之(zhi)前點(dian)(dian)的(de)錨(mao)點(dian)(dian),頁(ye)(ye)面(mian)就不(bu)會再跳轉了,這個(ge)時候就需要監聽滾(gun)(gun)動事件(jian),滾(gun)(gun)動時將scroll-into-view屬性的(de)值清空。或(huo)者在每次錨(mao)點(dian)(dian)跳轉后,再由一個(ge)異(yi)步操作將scroll-into-view屬性的(de)值清空。

scroll-view默認是無(wu)滑(hua)動(dong)動(dong)畫的(de),需(xu)要(yao)(yao)滾動(dong)的(de)動(dong)畫效果(guo)需(xu)要(yao)(yao)在組件上(shang)設置:

scroll-with-animation='true' 關于固定高度(du)height的(de)(de)(de)設置(zhi)問題,一(yi)開始我以為(wei)(wei)(wei)這(zhe)個(ge)高度(du)和滾動(dong)元素的(de)(de)(de)數(shu)目/高度(du)有關,這(zhe)個(ge)時候處理動(dong)態變化的(de)(de)(de)列表就(jiu)很(hen)麻(ma)煩。后面在網上看到的(de)(de)(de)一(yi)個(ge)方法(fa)就(jiu)是(shi)使用(yong)wx.getSystemInfo方法(fa)得到windowHeight,把這(zhe)個(ge)設置(zhi)為(wei)(wei)(wei)scroll-view的(de)(de)(de)高度(du)(單位為(wei)(wei)(wei)px)即(ji)可。

自(zi)己的(de)測試代碼

wxml代(dai)碼:



  
  
    
      
        {{item.name}}
      
     
  
   
    
      
      {{item.name}} 
    
  
  

  
    
    {{item}}
    
  

wxss代碼(ma):

/* 汽車圖片 */
.tupian{
  width: 100rpx;
  height: 100rpx;
  display:inline-block;
  vertical-align:middle;
  margin-left: 10rpx;
}
/* 汽車外框 */
.carFrame,.biaotou{
  font-size: 30rpx;
  width: 100%;
  height: 100rpx;
  line-height: 50rpx;
  border-bottom: 1rpx solid #F4F4F8;
  display:inline-block;
}
/* 文本文字 */
.carText{
  font-size: 28rpx;
  margin-left: 50rpx;
  display:inline-block;
  vertical-align:middle;
}
/* 字母屬性 */
.zimu{
  height: 50rpx;
  border-bottom: 1rpx solid #F4F4F8;
  font-size: 29rpx;
  color: #777777;
}
/* 字母位置 */
.weizhi{
  margin:10rpx 0 0 18rpx;
}
/* 菜單位置 */
#cdwz{
  position: fixed;
  right: 30rpx;
  top: 80rpx;
  text-align: center;
}
/* 字母菜單樣式 */
.caidan{
  font-size: 25rpx;
  margin-top: 10rpx;
  color: #007ADF;
}
::-webkit-scrollbar {
 width: 0;
 height: 0;
 color: transparent;
}

js代碼:

  //獲取屏幕高度

  var screenHeight = wx.getSystemInfo({
    success: function (res) {
      screenHeight = res.windowHeight
    }
  })
Page({

  /**
   * 頁面的初始數據
   */
  data: {
    toView:'',
    height:"",
    carModel: [
      [
        {
          id: "0",
          name: "A"
        },
      ],
      [
      {
        id: "0",
        name: "B"
      },
      ],
      [
        {
          id: "0",
          name: "C"
        },
      ],
      [
        {
          id: "0",
          name: "D"
        },
      ],
      [
        {
          id: "0",
          name: "E"
        },
      ],
      [
        {
          id: "0",
          name: "F"
        },
      ], 
      [
        {
          id: "0",
          name: "G"
        },
      ], 
      [
        {
          id: "0",
          name: "H"
        },
      ], 
      [
        {
          id: "0",
          name: "I"
        },
      ],
      [
        {
          id: "0",
          name: "J"
        },
      ], 
      [
        {
          id: "0",
          name: "K"
        },
      ], 
      [
        {
          id: "0",
          name: "L"
        },
      ], 
      [
        {
          id: "0",
          name: "M"
        },
      ], 
      [
        {
          id: "0",
          name: "N"
        },
      ], 
      [
        {
          id: "0",
          name: "O"
        },
      ], 
      [
        {
          id: "0",
          name: "P"
        },
      ], 
      [
        {
          id: "0",
          name: "Q"
        },
      ], 
      [
        {
          id: "0",
          name: "R"
        },
      ], 
      [
        {
          id: "0",
          name: "S"
        },
      ], 
      [
        {
          id: "0",
          name: "T"
        },
      ], 
      [
        {
          id: "0",
          name: "U"
        },
      ], 
      [
        {
          id: "0",
          name: "V"
        },
      ], 
      [
        {
          id: "0",
          name: "W"
        },
      ], 
      [
        {
          id: "0",
          name: "X"
        },
      ], 
      [
        {
          id: "0",
          name: "Y"
        },
      ], 
      [
        {
          id: "0",
          name: "Z"
        },
      ],
    ],
    letter: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'],
    },
  jump: function (num){
    var text = this.data.letter[num.target.id];
    this.setData({
      toView: text,
    })
    console.log(text);

  },
  onLoad: function (options) {

    var that = this
    // 獲取系統信息
    wx.getSystemInfo({
      success: function (res) {
        // 計算主體部分高度,單位為px
        that.setData({
          height: res.windowHeight
        })
      }
    })
  },

})


易優小程序(xu)(企業版)+靈活(huo)api+前后代碼開源(yuan) 碼云倉庫(ku):
本文地址://www.jinyoudianli.com/wxmini/doc/course/24823.html 復制鏈接 如需定(ding)制請聯系易優(you)客(ke)服咨詢(xun):

工作日 8:30-12:00 14:30-18:00
周六及部分節假(jia)日提(ti)供值班服(fu)務(wu)

易小優
轉人工 ×