国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

微信小程序 bug 集中營(yíng)

he_xd / 1739人閱讀

摘要:利用這篇教程存儲(chǔ)一些常用的微信小程序開(kāi)發(fā)技巧,方便查找。但是第一,微信小程序是國(guó)內(nèi)的,有中文文檔,雖然它的文檔說(shuō)明有點(diǎn)坑,但好歹有文檔,閱讀理解對(duì)小伙伴們來(lái)說(shuō)不是問(wèn)題。

Create by jsliang on 2018-9-17 17:58:56  
Recently revised in 2018-11-19 08:19:13


?Hello 小伙伴們,如果覺(jué)得本文還不錯(cuò),記得給個(gè) star , 你們的 star 是我學(xué)習(xí)的動(dòng)力!GitHub 地址

寫(xiě)在前面

?首個(gè)微信小程序?qū)嵺`記錄:
?工作量: PSD 18 張 (導(dǎo)出的 JPG 30 張)
?耗時(shí):12 個(gè)工作日
?總結(jié)1: 在頁(yè)面制作商,需要 3 周工作日(工作 15 天)搞定,前后端對(duì)接口另計(jì)。實(shí)際上,12 個(gè)工作日可以搞定所有頁(yè)面,但是應(yīng)該往前鋪 1.5D 熟悉框架,往后鋪 1.5D 整理代碼。當(dāng)然每個(gè)人的耗時(shí)可能不同,可根據(jù)個(gè)人實(shí)際情況進(jìn)行調(diào)整。
?總結(jié)2:在 API 調(diào)用上,根據(jù)接口數(shù)量可能需要 7-12 個(gè)工作日進(jìn)行 API 調(diào)用,難點(diǎn)表現(xiàn)在: 1. 接口不夠豐富,數(shù)據(jù)量不足; 2. 接口數(shù)據(jù)不夠正式真實(shí),跟前面的假數(shù)據(jù)相差太大; 3. 接口可能沒(méi)法正常調(diào)用 等原因。故因根據(jù)小程序業(yè)務(wù)邏輯進(jìn)行工作時(shí)長(zhǎng)的報(bào)備。

?這里有 jsliang 微信小程序開(kāi)發(fā)中遇到的所有坑,以及在填坑過(guò)程中的一些個(gè)人經(jīng)驗(yàn)。jsliang 利用這篇教程存儲(chǔ)一些常用的微信小程序開(kāi)發(fā)技巧,方便查找。它可能教不了你什么,但至少能省下你百度的功夫。

?請(qǐng)結(jié)合 《目錄》 和 《返回目錄》 來(lái)進(jìn)行跳轉(zhuǎn),獲得更好的閱讀體驗(yàn)。

?本文技術(shù)支持:Ansen江

?注1:由于更新頻繁,有時(shí)候平臺(tái)上的文章版本可能沒(méi)有圖片或者目錄無(wú)法跳轉(zhuǎn),所以小伙伴需要獲取最新資料的,請(qǐng)前往 GitHub:地址

?注2:如果小伙伴使用的是手機(jī)版打開(kāi),那么推薦小伙伴使用電腦打開(kāi),因?yàn)楦髌脚_(tái)的手機(jī)端大都不支持頁(yè)內(nèi)跳轉(zhuǎn),看起來(lái)比較費(fèi)勁。


一 目錄

?目前已有 48 個(gè)坑。

請(qǐng)各位按目錄檢索時(shí)注意:  
3.1、3.2、3.3…… 等二級(jí)目錄對(duì)應(yīng)著一個(gè)章節(jié)。
3.1.1、3.1.2、3.1.3…… 等三級(jí)目錄將該二級(jí)目錄這個(gè)大章節(jié)詳細(xì)拆分成諸多小坑,方便查看。

?注意!!!

?由于 SF 可能有字?jǐn)?shù)限制,故 章節(jié) 12.1 之后的內(nèi)容需要小伙伴前往 GitHub 地址查看

?GitHub 地址


目錄
一 目錄
二 前言
三 填坑實(shí)戰(zhàn)
?3.1 swiper 輪播圖 5
??3.1.1 行內(nèi)樣式無(wú)效
??3.1.2 圖片樣式修改不了
??3.1.3 swiper 屬性值設(shè)置
??3.1.4 輪播圖圖片跳轉(zhuǎn)
??3.1.5 wx:key
??3.1.6 實(shí)戰(zhàn)代碼
?3.2 tabBar 與 switchTab 3
??3.2.1 底部導(dǎo)航跳轉(zhuǎn)
??3.2.2 自定義底部導(dǎo)航
??3.2.3 自定義組件
?3.3 px、rem 與 rpx 1
?3.4 微信 web 開(kāi)發(fā)者工具 2
??3.4.1 無(wú)法輸入中文
??3.4.2 無(wú)法滑動(dòng)滾輪
?3.5 組件與 API 2
??3.5.1 概念混淆:組件 VS API
??3.5.2 API 查詢(xún)不到對(duì)應(yīng)的方法
?3.6 flex 布局 2
??3.6.1 基礎(chǔ)概念
??3.6.2 左右布局
??3.6.3 混合布局
?3.7 background-image 套用本地圖片無(wú)效 1
?3.8 1
?3.9 搜索框 2
??3.9.1 margin-top 無(wú)法上浮
??3.9.2 改造 WeUI 搜索框
?3.10 微信小程序分享 1
?3.11 border-box 設(shè)置 1
?3.12 自定義導(dǎo)航條 6
??3.12.1 WeUI 選項(xiàng)卡
??3.12.2 自定義選項(xiàng)卡效果與實(shí)現(xiàn)
??3.12.3 綁定事件如何傳遞數(shù)據(jù)
??3.12.4 不允許駝峰
??3.12.5 獲取 data 數(shù)據(jù)
??3.12.6 實(shí)現(xiàn)文字省略
?3.13 黑科技: 2
??3.13.1 被遺棄的
??3.13.2 四種彈窗寫(xiě)法
?3.14 小程序解析 HTML 6
??3.14.1 解析 HTML 的三種方法
??3.14.2 wxParse
??3.14.3 rich-text
??3.14.4 web-view
?3.15 詭異的 open-type 1
?3.16 1
?3.17 下拉刷新和上拉加載 2
?3.18 獲取 input 的值 1
?3.19 onLaunch 加載問(wèn)題 2
??3.19.1 小程序執(zhí)行順序
??3.19.2 路由守衛(wèi)
?3.20 request 封裝與 api 抽離 1
?3.21 判斷數(shù)據(jù)是否讀取完 1
?3.22 客服系統(tǒng)研究 1
?3.23 文件在線(xiàn)預(yù)覽 2
?3.24 盡量使用 ES6 1
?3.25 視頻功能實(shí)現(xiàn) 1


二 前言

?返回目錄

本文章原名【微信小程序 100 坑】

?微信小程序的開(kāi)發(fā)教程,或許寫(xiě)出來(lái)是非常受歡迎的。
?但是:

第一,微信小程序是國(guó)內(nèi)的,有中文文檔,雖然它的文檔說(shuō)明有點(diǎn)坑,但好歹有文檔,閱讀理解對(duì)小伙伴們來(lái)說(shuō)不是問(wèn)題。

第二, jsliang 的文筆并沒(méi)有想象中的那么好,想想如果我?guī)銈冏吡艘槐樾〕绦蜷_(kāi)發(fā),然后你們以為是一條平坦路,結(jié)果碰到一堆坑坑洼洼,咋辦?最后的鍋,會(huì)不會(huì)到我背啊,可怕!

?所以,在這里, jsliang 結(jié)合 “日常躺坑” ,先為你解決小程序的 100 個(gè)坑!雖然現(xiàn)在可能還不夠,但是第一天我就碰到 4/5 個(gè)了,我想我可以幫你們躺完 100 個(gè)的!!!
?現(xiàn)在的微信開(kāi)發(fā)者工具顯示的開(kāi)發(fā)版本是:"libVersion": "2.0.4"
?如果你開(kāi)發(fā)的版本已經(jīng)解決了這個(gè) bug ,或者你覺(jué)得這個(gè) bug 還有其他解決方法,或者你覺(jué)得這個(gè)玩意還有其他 bug ,請(qǐng)告訴我,我會(huì)補(bǔ)充到這篇文檔上,順帶記上您的大名,謝謝!
?QQ: 1741020489


三 填坑實(shí)戰(zhàn)

?返回目錄

?這里的坑:

有的來(lái)源于微信自帶的開(kāi)發(fā)文檔:小程序開(kāi)發(fā)文檔。在文檔中,你會(huì)發(fā)現(xiàn)很多的樂(lè)趣!畢竟,你不知道什么時(shí)候中文成為了你的語(yǔ)言障礙~

有的是開(kāi)發(fā)中遇到的,然后結(jié)合大量的百度結(jié)果,進(jìn)行的有效性總結(jié)。

?希望小伙伴在百度中或者無(wú)意看到這篇文章,請(qǐng)熟練使用瀏覽器的 Ctrl + F,查找需要的問(wèn)題答案。


3.1 swiper 輪播圖

?返回目錄

本組件目前已有 5 個(gè)坑,有興趣的小伙伴可以詳看。


? 代碼來(lái)源于該地址:微信組件 swiper 。

?為方便小伙伴查看,下面貼出原版代碼:

demo.wxml

  
    
      
    
  



 interval
 duration


demo.js
Page({
  data: {
    imgUrls: [
      "http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg",
      "http://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg",
      "http://img06.tooopen.com/images/20160818/tooopen_sy_175833047715.jpg"
    ],
    indicatorDots: false,
    autoplay: false,
    interval: 5000,
    duration: 1000
  },
  changeIndicatorDots: function(e) {
    this.setData({
      indicatorDots: !this.data.indicatorDots
    })
  },
  changeAutoplay: function(e) {
    this.setData({
      autoplay: !this.data.autoplay
    })
  },
  intervalChange: function(e) {
    this.setData({
      interval: e.detail.value
    })
  },
  durationChange: function(e) {
    this.setData({
      duration: e.detail.value
    })
  }
})


?好的,上面就是微信官方文檔的演示代碼,如果你跟著演示代碼走了一遍碰到疑問(wèn)的話(huà),看看這里我挖的土是不是能填好你的坑:


3.1.1 行內(nèi)樣式無(wú)效

?返回目錄

?demo.wxml 中出現(xiàn)的 這行, widthheight 的行內(nèi)屬性是忽悠老百姓的,它并沒(méi)卵用 !我們需要在 slide-image 這個(gè) class 類(lèi)中修改 widthheight。簡(jiǎn)而言之,行內(nèi)樣式都是騙人的,乖,我們還是去 demo.wxss 寫(xiě)樣式吧~


3.1.2 圖片樣式修改不了

?返回目錄

?在任何出現(xiàn)圖片的地方(包括但不限于輪播圖),如果你發(fā)現(xiàn)不僅行內(nèi)寫(xiě)法無(wú)效之外,還發(fā)現(xiàn)單純地給圖片加 class,去 *.wxss 寫(xiě)樣式也無(wú)效的話(huà)。那么,我建議小伙伴最好采用樣式加重法,即 .image-wrap .image 這種寫(xiě)法格式,來(lái)確保圖片樣式能進(jìn)行修改。詳細(xì)用法可看下文。


3.1.3 swiper 屬性值設(shè)置

?返回目錄

?swiper 屬性值。官方文檔說(shuō)明:

?雖然,它的屬性名和屬性值是這么說(shuō)的。但是,用的時(shí)候,首先你需要在 demo.wxml 中的 swiper 綁定這個(gè)屬性名,然后在 demo.js 中設(shè)置其屬性值。值得注意的是,它的綁定值,稍微不同于 Vue, 需要設(shè)置 {{}} 形式。如果文字描述你看得不是很清楚,可以參照下面的代碼進(jìn)行理解。


3.1.4 輪播圖圖片跳轉(zhuǎn)

?返回目錄

?關(guān)于輪播圖的地址跳轉(zhuǎn),在微信小程序的官網(wǎng)是沒(méi)用提及的,也是 jsliang 去百度查看了下,才知道怎么設(shè)置(可能是我一開(kāi)始就挑戰(zhàn)的難度太高了么 -_-|| ),在下面 jsliang 貼出來(lái)代碼~想知道怎么解決的可以去看看:首先,在 data 中設(shè)置 link ;然后,設(shè)置 navigator 導(dǎo)航遍歷 item.link


3.1.5 wx:key

?返回目錄

?關(guān)于 wx:keywx:key 的作用是:當(dāng)數(shù)據(jù)改變觸發(fā)渲染層重新渲染的時(shí)候,會(huì)校正帶有 key 的組件,框架會(huì)確保他們被重新排序,而不是重新創(chuàng)建,以確保使組件保持自身的狀態(tài),并且提高列表渲染時(shí)的效率。但是,在其 swiper 中,小程序本身是沒(méi)有寫(xiě)的,所以它會(huì)帶有 warning ,這里也是個(gè)小坑, jsliang 也是百度了下也知道這件事:點(diǎn)我了解。


3.1.6 實(shí)戰(zhàn)代碼

?返回目錄

?下面給出這 5 個(gè)坑的解決代碼,如有不對(duì),盡情指出:

index.wxml

  
    
    
      
        
          
        
      
    
  


index.wxss
.carousel .slide-image {
  width: 100%;
  height: 420rpx;
}


index.js
Page({
  data: {
    imgUrls: [
      {
        link: "../index/index",
        url: "http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg",
      },
      {
        link: "../demo/demo",
        url: "http://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg",
      },
      {
        link: "../logs/logs",
        url: "http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg"
      }
    ],
    indicatorDots: true,
    autoplay: true,
    interval: 5000,
    duration: 1000
  }
})


3.2 tabBar 與 switchTab

?返回目錄

本組件目前已有 3 個(gè)坑,有興趣的小伙伴可以詳看。

?tabBar :底部菜單欄,需要在 app.json 中設(shè)置。使用方法:見(jiàn)下文。
?navigator :導(dǎo)航切換。使用方法:地址
?switchTab :控制 tabBar 的切換。使用方法:地址


3.2.1 底部導(dǎo)航跳轉(zhuǎn)

?返回目錄

?在這里,我們講下 tabBar 的坑,如果你在 app.json 中設(shè)置了 tabBar

app.json
"tabBar": {
    "list": [{
      "pagePath": "pages/index/index",
      "text": "首頁(yè)",
      "iconPath": "./public/index_tabBar1_nor.png",
      "selectedIconPath": "./public/index_tabBar1.png"
    }, {
      "pagePath": "pages/demo/demo",
      "text": "發(fā)現(xiàn)",
      "iconPath": "./public/index_tabBar2_nor.png",
      "selectedIconPath": "./public/index_tabBar2.png"
    }, {
      "pagePath": "pages/logs/logs",
      "text": "我的",
      "iconPath": "./public/index_tabBar3_nor.png",
      "selectedIconPath": "./public/index_tabBar3.png"
    }]
  }


?那么,我們就需要通過(guò)設(shè)置 switchTab 來(lái)控制底部導(dǎo)航的跳轉(zhuǎn),而不能通過(guò) navigator 來(lái)跳轉(zhuǎn):

demo.wxml

  


demo.js
linkTo: function () {
  wx.switchTab({
    url: "../index/index"
  });
},


3.2.2 自定義底部導(dǎo)航

?返回目錄

?那么問(wèn)題又來(lái)了,當(dāng)我們切換到子頁(yè)面的時(shí)候,我們發(fā)現(xiàn) tabBar 這個(gè)底部導(dǎo)航欄不見(jiàn)了,然后問(wèn)了下 Ansen江 ,他說(shuō)之前是整個(gè)小程序都有的,有些頁(yè)面還要想方設(shè)法去隱藏。
?但是現(xiàn)在嘛……它沒(méi)了!沒(méi)了啊!!!在微信小程序的文檔沒(méi)看到有喚起底部導(dǎo)航條的方法,難道我要做一個(gè)導(dǎo)航條了么 -_-||
?回答是:yes!
?所以,下面給出該底部導(dǎo)航條 tabBar 的實(shí)現(xiàn)情況和代碼片段:

注:圖片寬高均為 54rpx

*.wxml


  
    
    首頁(yè)
  
  
    
    在線(xiàn)咨詢(xún)
  
  
    
    電話(huà)咨詢(xún)
  
  
    
      立即訂購(gòu)
    
  


*.wxss
.nav {
  display: flex;
  justify-content: space-around;
  font-size: 20rpx;
  border: 1px solid #ccc;
  position: fixed;
  bottom: 0;
  background: #fff;
}
.nav view {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.nav image {
  width: 54rpx;
  height: 54rpx;
}
.nav text {
  margin-top: 7rpx;
}
.nav-home {
  border-right: 1px solid #ccc;
  width: 130rpx;
  padding-top: 5rpx;
}
.nav-service {
  border-right: 1px solid #ccc;
  width: 130rpx;
  padding-top: 5rpx;
}
.nav-phone {
  width: 130rpx;
  padding-top: 5rpx;
}
.nav-buy {
  background: #eb333e;
  color: #fff;
  width: 360rpx;
  height: 98rpx;
  line-height: 80rpx;
  font-size: 34rpx;
}


*.js
callWaiter: function(res) {
  wx.makePhoneCall({
    phoneNumber: "13264862250",
    success: function(res) {
      console.log("撥打成功");
      console.log(res);
    },
    fail: function(res) {
      console.log("撥打失敗");
      console.log(res);
    },
    complete: function(res) {
      console.log("撥打完成");
      console.log(res);
    }
  })
},
goHome: function() {
  wx.switchTab({
    url: "../index/index"
  })
},


3.2.3 自定義組件

?返回目錄

?在最近的工作中,又發(fā)現(xiàn)一個(gè)小問(wèn)題:

?像這個(gè)導(dǎo)航條,它需要根據(jù)頁(yè)面所在的模塊,動(dòng)態(tài)地展示不同位置的狀態(tài)為活躍,而且它是需要在多個(gè)頁(yè)面重復(fù)出現(xiàn)的,如果每個(gè)頁(yè)面我都要復(fù)制粘貼一遍,到時(shí)候要修改起來(lái)的時(shí)候,麻煩不說(shuō),最重要的是,它可能影響我前端的性能了,能不能直接將其封裝起來(lái)呢?

?自定義組件:鏈接

?是的,發(fā)現(xiàn)在小程序文檔中是存在這個(gè)東西的。當(dāng)然,至于過(guò)程中我百度了幾篇文章來(lái)輔助寫(xiě)出下面的代碼,你猜?

?子組件寫(xiě)法

navBar.wxml


  
    
    
    首頁(yè)
  
  
    
    
    發(fā)現(xiàn)
  
  
    
    
    我的
  


navBar.wxss
/* 底部導(dǎo)航條 */
.navBar {
  width: 100%;
  padding: 18rpx 0;
  border-top: 1rpx solid #cccccc;
  display: flex;
  justify-content: space-around;
  position: fixed;
  bottom: 0;
  background: #fff;
}
.navBar image {
  width: 55rpx;
  height: 55rpx;
}
.navBar view {
  display: flex;
  flex-direction: column;
  align-items: center;
  font-size: 20rpx;
  color: #999999;
}
.navBar-user text {
  color: #d0a763;
}


navBar.js
// pages/componentNavBar/navBar.js
Component({
  /**
   * 組件的屬性列表
   */
  properties: {
    homeActive: {
      type: Boolean,
      value: false
    },
    exploreActive: {
      type: Boolean,
      value: false
    },
    userActive: {
      type: Boolean,
      value: false
    }
  },

  /**
   * 組件的初始數(shù)據(jù)
   */
  data: {

  },

  /**
   * 組件的方法列表
   */
  methods: {
    // 返回首頁(yè)
    goHome: function (e) {
      wx.switchTab({
        url: "../index/index",
      })
    },
    // 返回發(fā)現(xiàn)頁(yè) 
    goExplore: function (e) {
      wx.switchTab({
        url: "../explore/explore",
      })
    },
    // 返回我的頁(yè)面
    goUser: function (e) {
      wx.switchTab({
        url: "../user/user",
      })
    },
    showCode: function(e) {
      console.log(e);
      let that = this;
      console.log(that.data);
    }
  }
})


navBar.json
{
  "component": true,
  "usingComponents": {}
}


?然后,在父組件的使用,只需要:

*.wxml

  


*.json
{
  "usingComponents": {
    "navBar": "../componentNavBar/navBar"
  }
}


*.js
data: {
  userActive: true
},


?怎樣?這就是自定義組件的寫(xiě)法,是不是覺(jué)得特好用涅,一次寫(xiě)完,終身受用。


3.3 px、rem 與 rpx

?返回目錄

本節(jié)目前已有1個(gè)坑,有興趣的小伙伴可以詳看。

?在微信中,它自帶了一套屬于自己的單位:rpxrpx 不同于之前我們認(rèn)識(shí)的 pxremem ,如果你的設(shè)計(jì)稿是 750 px 的,那么很容易的, 1px = 1rpx ,但是,如果設(shè)計(jì)稿不是 750 px ,那么將造成一個(gè) bug ,至于這個(gè) bug 如何解決……
?-_-|| 誰(shuí)知道呢……要不先把UI設(shè)計(jì)師宰了?
?知識(shí)補(bǔ)充:關(guān)于 rpx 。


3.4 微信 web 開(kāi)發(fā)者工具

?返回目錄

本節(jié)目前已有 2 個(gè)坑,有興趣的小伙伴可以詳看。


3.4.1 無(wú)法輸入中文

?返回目錄

?如果你在開(kāi)發(fā)過(guò)程中,發(fā)現(xiàn)只能寫(xiě)英文了,而中文無(wú)法輸入了,千萬(wàn)別急,也別怪輸入法出 bug 了,你只需要:重啟開(kāi)發(fā)工具。


3.4.2 無(wú)法滑動(dòng)滾輪

?返回目錄

?如果你某時(shí)刻,突然發(fā)現(xiàn)你沒(méi)法滾動(dòng)代碼進(jìn)行查看,而是需要拖動(dòng)滾動(dòng)條才行,請(qǐng)別怪你的鼠標(biāo),你可以去瀏覽器打開(kāi)一篇文章看看,enm...你的鼠標(biāo)還是好的~所以,請(qǐng):重啟開(kāi)發(fā)工具。


3.5 組件與 API

?返回目錄

本節(jié)目前已有 2 個(gè)坑,有興趣的小伙伴可以詳看。
3.5.1 概念混淆:組件 VS API

?返回目錄

?首先,科普下 組件 與 API 是什么:

組件:對(duì)數(shù)據(jù)和方法的封裝,使用組件可以實(shí)現(xiàn)拖放式編程、快速的屬性處理以及真正的面向?qū)ο蟮脑O(shè)計(jì)【百度百科】。那么,可以理解為:開(kāi)發(fā)中常用的一些部件,我們都可以封裝起來(lái),然后在需要的時(shí)候拿來(lái)用,即為組件。

API:預(yù)先定義的函數(shù),提供應(yīng)用程序與開(kāi)發(fā)人員無(wú)需訪(fǎng)問(wèn)源碼,基于某軟件或硬件得以訪(fǎng)問(wèn)一組例程的能力【百度百科】。就是說(shuō)已經(jīng)寫(xiě)好的一些 Function 或者后端接口,前端直接調(diào)用就行了。

?但是,在微信小程序官方文檔中,組件與API,拆分地有點(diǎn)不科學(xué)。
?例如:輪播圖底部導(dǎo)航條

一個(gè)在組件中,一個(gè)在 API 中;

一個(gè)在 wxmlwxssjs 中要設(shè)置對(duì)應(yīng)的參數(shù),一個(gè)只需要在 app.json 中設(shè)置就行。

?可能微信小程序考慮到底部導(dǎo)航條不應(yīng)該有太大的變化(例如讓你修改太多樣式或者 js ),所以將導(dǎo)航條內(nèi)嵌至源碼中了。
?但是,這可能導(dǎo)致什么重要影響嗎?是的,如果底部導(dǎo)航條需要進(jìn)行修改呢?例如:3.2.3 自定義組件。這樣的情況下,我們的開(kāi)發(fā)時(shí)間就有所增加了。


3.5.2 API 查詢(xún)不到對(duì)應(yīng)的方法

?返回目錄

?如果小伙伴你經(jīng)常有去看微信小程序官方文檔的話(huà),那么你一定會(huì)有一件事需要吐槽,那就是:
?明明上次我見(jiàn)到過(guò)某個(gè) API 實(shí)現(xiàn)了我需要做的功能,但是改天我回去查找的時(shí)候,它卻提示我沒(méi)有這個(gè)玩意,這是什么鬼?!
?是的,跟我們 3.13 黑科技: 這一章中講到的 這個(gè)黑科技一樣,有時(shí)候官方文檔也不是萬(wàn)能的,它總會(huì)有這樣那樣的毛病,導(dǎo)致我們找不到需要的東西,只能去百度了 -_-||


3.6 flex 布局

?返回目錄

本節(jié)目前已有 3 個(gè)坑,有興趣的小伙伴可以詳看。

?Flex布局又稱(chēng)彈性布局,在小程序開(kāi)發(fā)中比較適用。但是由于 jsliang 之前沒(méi)怎么用過(guò) Flex 布局,所以在這里咱們特意去踩下坑,充實(shí)下自己。【小程序開(kāi)發(fā)之頁(yè)面布局】【阮一峰-Flex 布局教程】
?在我們布局頁(yè)面的時(shí)候,最好看看 阮一峰 的教程,平時(shí)遇到布局的問(wèn)題的時(shí)候,我都習(xí)慣去上面 阮一峰 的文章看看:


3.6.1 基礎(chǔ)概念

?返回目錄

?基礎(chǔ)概念:地址

  
  display: flex;

  
  flex-direction: row | row-reverse | column | column-reverse;
  
  
  flex-wrap: nowrap | wrap | wrap-reverse;
  
  
  flex-flow:  || ;
  
  
  justify-content: flex-start | flex-end | center | space-between | space-around;
  
  
  align-items: flex-start | flex-end | center | stretch | baseline;
  
  
  align-content: flex-start | flex-end | center | space-between | space-around | stretch;


3.6.2 左右布局

?返回目錄

?實(shí)現(xiàn)效果如下:

?如圖,這是我們要實(shí)現(xiàn)的左右布局效果。那么,在微信小程序要怎么做呢?

*.wxml

  
    熱門(mén)推薦
  
  
    
  
  
    查看全部 >
  


*.wxss
.top-recommended-headlines {
  display: flex;
  align-items: flex-end;
  height: 31rpx;
  line-height: 31rpx;
  margin-bottom: 10rpx;
}
.top-recommended-headlines-left text {
  font-size: 32rpx;
  font-weight: bold;
}
.top-recommended-headlines image {
  width: 366rpx;
  height: 31rpx;
  margin-left: 10rpx;
}
.top-recommended-headlines-right navigator {
  font-size: 26rpx;
  color: #a9a9a9;
  margin-left: 50rpx;
}


3.6.3 混合布局

?返回目錄

?實(shí)現(xiàn)效果如下:

?如圖,這是我們要實(shí)現(xiàn)的左右布局效果。那么,在微信小程序要怎么做呢?

*.wxml

  
    
      
      {{item.title}}
    
    
      
      {{item.content}}
    
    
      {{item.datatime}}
      {{item.reader}}閱讀
      #{{item.label}}#
    
  
  
    
  


*.wxss
.weui-tab__content-item3 {
  padding-left: 30rpx;
  padding-right: 30rpx;
  margin-top: -10rpx;
  margin-bottom: 10rpx;
}
.weui-tab__content-item3:first-child {
  padding: 40rpx 30rpx 0;
}
.weui-tab__content-item3-question image {
  width: 30rpx;
  height: 30rpx;
}
.weui-tab__content-item3-question text {
  font-size: 30rpx;
  line-height: 46rpx;
  font-weight: bold;
  color: #333;
  margin-left: 10rpx;
}
.weui-tab__content-item3-answer image {
  width: 30rpx;
  height: 30rpx;
}
.weui-tab__content-item3-answer text {
  font-size: 26rpx;
  line-height: 42rpx;
  color: #a9a9a9;
  margin-left: 10rpx;
}
.weui-tab__content-item3-detail {
  display: flex;
  justify-content: space-between;
  font-size: 26rpx;
  color: #a9a9a9;
}
.weui-tab__content-item3-detail-label {
  color: #d0a763;
}
.weui-tab__content-item3-gap image {
  width: 100%;
  height: 30rpx;
}


*.js
tabs3Content: [
  {
    title: "員工發(fā)明創(chuàng)造是否屬于職務(wù)發(fā)明的認(rèn)證標(biāo)準(zhǔn)?",
    content: "隨著企業(yè)對(duì)知識(shí)產(chǎn)權(quán)在企業(yè)發(fā)展中核心競(jìng)爭(zhēng)力的認(rèn)識(shí)力提高,企業(yè)保護(hù)自身知識(shí)產(chǎn)權(quán)的意識(shí)不斷增強(qiáng),使其技術(shù)得......",
    datatime: "2018-03-05",
    reader: "2081",
    label: "知識(shí)產(chǎn)權(quán)"
  }
]


3.7 background-image 套用本地圖片無(wú)效

?返回目錄

本節(jié)目前已有 1 個(gè)坑,有興趣的小伙伴可以詳看。

?在小程序中,如果你使用 wxss,你是可以發(fā)現(xiàn)有 background-image 的提示的。但是,如果你設(shè)置它的背景圖是本地圖片,你會(huì)發(fā)現(xiàn),它是不生效的。
?解決方案:

在使用背景圖片的時(shí)候用網(wǎng)絡(luò)圖片,就是用外鏈的形式,比如你將這張圖片放到你的服務(wù)器,如:https://xxxx/xxx.jpg

將背景圖片使用編碼base64進(jìn)行轉(zhuǎn)換,可以在這個(gè)網(wǎng)址進(jìn)行 點(diǎn)我前往 轉(zhuǎn)換,如:background-image: url("轉(zhuǎn)換后得到的編碼文本"),如果多次使用的話(huà)可以將該值設(shè)置為全局變量,再在js文件進(jìn)行引用即可。

使用 image 組件 + position 定位而不是使用 background-image


3.8

?返回目錄

本節(jié)目前已有 1 個(gè)坑,有興趣的小伙伴可以詳看。

?兩者的區(qū)別是, 是一個(gè)組件,會(huì)在頁(yè)面上做渲染; 不是一個(gè)組件,它僅僅是一個(gè)包裝元素,只接受控制屬性,不會(huì)在頁(yè)面中做任何渲染。
?所以,如果你僅僅是需要包裹,而不是渲染一個(gè)層,可以使用 提升性能。


3.9 搜索框

?返回目錄

本節(jié)目前已有 2 個(gè)坑,有興趣的小伙伴可以詳看。


3.9.1 margin-top 無(wú)法上浮

?返回目錄

?首先,我們要實(shí)現(xiàn)的效果是:

?然后, jsliang 的想法是:

*.wxml

  
  
  


*.wxss
.search {
  height: 100rpx;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: center;
  position: relative;
}
.search-product-input {
  background: #f5f5f5;
  width: 650rpx;
  height: 65rpx;
  border-radius: 30rpx;
  font-size: 30rpx;
  padding-left: 20rpx;
}
.search-placeholder {
  font-size: 26rpx;
  text-align: center;
  margin-top: -65rpx;
  z-index: 2;
}
.search-placeholder-icon {
  width: 24rpx;
  height: 24rpx;
}
.search-placeholder-text {
  margin-left: 10rpx;
}


?你注意到了嗎?在 *.wxml 中, jsliang 設(shè)置了個(gè)空的 ,如果你把這個(gè) 去掉,你會(huì)驚奇地發(fā)現(xiàn),它……下來(lái)了……

?好吧,可能有其他的實(shí)現(xiàn)方式,但是如果你下次使用這種方式,注意上面這個(gè)坑~


3.9.2 改造 WeUI 搜索框

?返回目錄

?回頭看了下 WeUI 的實(shí)現(xiàn)方式,發(fā)現(xiàn)跟我的思路是挺像的,關(guān)于 input 的實(shí)現(xiàn)方式,現(xiàn)在依據(jù) WeUI ,成功實(shí)現(xiàn)了輸入框:

?源碼奉上:

*.wxml


  
    
      
        
        
        
          
        
      
      
    
    
    
  


*.js
Page({
  data: {
    inputShowed: false,
    inputVal: ""
  },
  showInput: function () {
    this.setData({
      inputShowed: true
    });
  },
  hideInput: function () {
    this.setData({
      inputVal: "",
      inputShowed: false
    });
  },
  clearInput: function () {
    this.setData({
      inputVal: ""
    });
  },
  inputTyping: function (e) {
    this.setData({
      inputVal: e.detail.value
    });
  }
})


*.wxss
.search {
  height: 100rpx;
  padding: 18rpx 30rpx;
}
.weui-search-bar {
  padding: 0;
  background-color: #fff;
  border-top: none;
  border-bottom: none;
  height: 64rpx;
}
.weui-search-bar__form {
  border: none;
}
.form-border {
  border: 1rpx solid #f5f5f5;
  background: #f5f5f5;
}
.weui-search-bar__label {
  background: #f5f5f5;
  border-radius: 30rpx;
}
.weui-search-bar__cancel-btn {
 font-size: 26rpx; 
 background: rgb(8, 202, 186);
 color: #fff;
 padding: 2rpx 20rpx 0 20rpx;
 border-radius: 10rpx;
}
.weui-search-bar__submit-btn {
  font-size: 26rpx; 
  background: rgb(8, 200, 248);
  color: #fff;
  padding: 10rpx 20rpx 0 20rpx;
  border-radius: 10rpx;
}


3.10 微信小程序分享

?返回目錄

本節(jié)目前已有 1 個(gè)坑,有興趣的小伙伴可以詳看。

?官方文檔:地址
?在這里,提醒廣大小伙伴注意了,注意了,注意了!重要的事說(shuō)三遍。
?當(dāng)你新建 page 的時(shí)候,微信 web 開(kāi)發(fā)者工具會(huì)自動(dòng)幫你添加分享事件:

/**
  * 用戶(hù)點(diǎn)擊右上角分享
  */
onShareAppMessage: function (res) {
  // 實(shí)現(xiàn)分享功能
  return {
    title: this.data.productName,
    path: "/pages/indexProductDetail.js?productId=" + this.data.productId,
    imageUrl: this.data.videoImageSrc,
    success: (res) => {
      console.log("分享成功~");
    },
    fail: (res) => {
      console.log("分享失敗~");
    }
  }
}


?所以,如果你在前面定義了,它會(huì)在最下面偷偷幫你清空,然后你就覺(jué)得無(wú)法自定義分享事件……
?是的,jsliang 打死都不承認(rèn)這是我自己的鍋,新手注意!新手注意!!新手注意!!!


3.11 border-box 設(shè)置

?返回目錄

本節(jié)目前已有 1 個(gè)坑,有興趣的小伙伴可以詳看。

?熟知盒模型的小伙伴應(yīng)該知道,盒模型有兩種計(jì)算方式:

box-sizing: border-box;

box-sizing: content-box;

?在 border-box 中,整個(gè) view 的寬、高,包括 marginpaddingborder
?而在 content-box 中,整個(gè) view 的寬、高,則不包括上面元素。

?如上圖,如果一個(gè) view ,你的代碼如下:

view {
  box-sizing: border-box;
  margin: 10rpx;
  width: 100rpx;
  height: 100rpx;
  padding: 10rpx;
}


?那么,你的整個(gè)寬高還是 100rpx
?但是,如果你的代碼如下:

view {
  box-sizing: content-box;
  margin: 10rpx;
  width: 100rpx;
  height: 100rpx;
  padding: 10rpx;
}


?那么,你的整個(gè)盒子寬高是 120rpx

?如果你在設(shè)計(jì)頁(yè)面中,發(fā)現(xiàn)內(nèi)容區(qū)被撐爆了,那么,請(qǐng)檢查下現(xiàn)在的 border-box 是什么。


3.12 自定義選項(xiàng)卡

?返回目錄

本節(jié)目前已有 6 個(gè)坑,有興趣的小伙伴可以詳看。


3.12.1 WeUI 選項(xiàng)卡

?返回目錄

?使用 WeUI 的導(dǎo)航條,首先需要引用 WeUI 的 CSS 樣式:地址

?下載 weui.wxss 并在 app.wxss 中引用即可

app.wxss
/* 引用WeUI */
@import "weui.wxss";


?然后,我們直接往頁(yè)面加入它的選項(xiàng)卡并根據(jù)項(xiàng)目需求修改其樣式:


*.wxml

  
    
      
        
          {{item}}
        
      
      
    
    
      
      
      
      
      
      
    
  


*.wxss
.tab {
  font-size: 26rpx;
}
.tab image {
  width: 173rpx;
  height: 29rpx;
}
.weui-navbar {
  border-top: 1rpx solid #efefef;
  border-bottom: 1rpx solid #efefef;
}
.weui-navbar__slider {
  background: #d0a763;
  width: 4em;
}
.weui-navbar__item.weui-bar__item_on {
  color: #d0a763;
}
.weui-tab__content {
  margin-bottom: 100rpx;
}


*.js
var sliderWidth = 52; // 需要設(shè)置slider的寬度,用于計(jì)算中間位置

Page({

  /**
   * 頁(yè)面的初始數(shù)據(jù)
   */
  data: {
    // 選項(xiàng)卡導(dǎo)航
    tabs: ["全部", "已付款", "待付款"],
    activeIndex: 1,
    sliderOffset: 0,
    sliderLeft: 0,
  },
  // 選項(xiàng)卡切換
  tabClick: function (e) {
    this.setData({
      sliderOffset: e.currentTarget.offsetLeft,
      activeIndex: e.currentTarget.id
    });
  },

  /**
   * 生命周期函數(shù)--監(jiān)聽(tīng)頁(yè)面加載
   */
  onLoad: function (options) {
    // 計(jì)算搜索框活躍條
    var that = this;
    wx.getSystemInfo({
      success: function (res) {
        that.setData({
          sliderLeft: (res.windowWidth / that.data.tabs.length - sliderWidth) / 2,
          sliderOffset: res.windowWidth / that.data.tabs.length * that.data.activeIndex
        });
      }
    });
  }
})

?2018-11-15:新增一個(gè) bug 修復(fù),就是在第一個(gè) tab 能流暢切換的情況下,第二個(gè)及其他的 tab,需要多次滑動(dòng)才能上拉加載。這時(shí)候,只需要在 weui-tab__content 這個(gè)類(lèi)新增三行代碼就可以解決該問(wèn)題:

*.css
.weui-tab__content {
  padding: 30rpx 30rpx 0;
  box-sizing: border-box;
  height: 100%;
  overflow: hidden;
}


3.12.2 自定義選項(xiàng)卡效果與實(shí)現(xiàn)

?返回目錄

?自定義選項(xiàng)卡的代碼實(shí)現(xiàn):

?實(shí)現(xiàn)效果圖如下:

?實(shí)現(xiàn)代碼如下:

*.wxml

  
    {{item.label}}
  
  
    
      
        
      
      
        
      
      
        
      
      
        
      
      
        {{item.title}}
        
          發(fā)布時(shí)間:{{item.datatime}}
          生效時(shí)間:{{item.effectiveTime}}
        
      
    
    
      
    
  


*.wxss
.weui-tab__nav {
  background: #f5f5f5;
  border: 1rpx 0rpx solid #e6e6e6;
  height: 90rpx;
  padding: 17rpx 41rpx;
  display: flex;
  justify-content: space-between;
}
.weui-tab__nav text {
  border-radius: 56rpx;
  height: 56rpx;
  line-height: 56rpx;
  padding: 15rpx 23rpx;
  font-size: 26rpx;
  font-weight: bold;
}
.weui-tab__nav-active {
  color: #fefefe;
  background: #d0a763;
}
.weui-tab__content-item2 {
  display: flex;
  justify-content: space-between;
  padding: 25rpx 30rpx;
}
.weui-tab__content-item-descritpion {
  display: flex;
  justify-content: space-between;
}
.weui-tab__content-item-descritpion image {
  width: 60rpx;
  height: 70rpx;
}
.hide {
  display: none;
}
.weui-tab__content-item-descritpion-content {
  margin-left: 26rpx;
}
.weui-tab__content-item-descritpion-content-title {
  font-size: 28rpx;
  font-weight: bold;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
}
.weui-tab__content-item-descritpion-content-datatime {
  font-size: 22rpx;
  color: #bbb;
}
.weui-tab__content-item-descritpion-content-datatime1 {
  margin-right: 35rpx;
}
.weui-tab__content-item-download-state image {
  width: 64rpx;
  height: 64rpx;
}


*.js
data: {
  tabs2Nav: [
    {
      id: "1",
      label: "法律大全",
      state: 1
    },
    {
      id: "2",
      label: "合同模板",
      state: 0
    },
    {
      id: "3",
      label: "民事",
      state: 0
    },
    {
      id: "4",
      label: "行政",
      state: 0
    },
    {
      id: "5",
      label: "執(zhí)行",
      state: 0
    }
  ],
  tabs2Content: [
    {
      title: "中華人名共和國(guó)民用航空法(2015年...).doc",
      url: "https://wxmcard.imusic.cn/testfordocdownload.doc",
      datatime: "2018-01-26",
      effectiveTime: "2018-01-26",
      type: "1"
    },
    {
      title: "原生申訴表格.xls",
      url: "https://wxmcard.imusic.cn/testfordocdownload.doc",
      datatime: "2018-01-26",
      type: "2"
    },
    {
      title: "法律常識(shí)大匯集及范例.ppt",
      url: "https://wxmcard.imusic.cn/testforpptdownload.pptx",
      datatime: "2018-01-26",
      effectiveTime: "2018-01-26",
      type: "3"
    },
    {
      title: "事業(yè)單位法律基礎(chǔ)知識(shí)總結(jié).pdf",
      url: "https://wxmcard.imusic.cn/testforpdfdownload.pdf",
      datatime: "2018-01-26",
      effectiveTime: "2018-01-26",
      type: "4"
    }
  ],

  // 選項(xiàng)卡第二屏分組
  tabs2Content1: [
    {
      title: "中華人名共和國(guó)民用航空法(2015年...).doc",
      datatime: "2018-01-26",
      effectiveTime: "2018-01-26",
      type: "1"
    },
    {
      title: "原生申訴表格.xls",
      datatime: "2018-01-26",
      type: "2"
    },
    {
      title: "法律常識(shí)大匯集及范例.ppt",
      datatime: "2018-01-26",
      effectiveTime: "2018-01-26",
      type: "3"
    },
    {
      title: "事業(yè)單位法律基礎(chǔ)知識(shí)總結(jié).pdf",
      datatime: "2018-01-26",
      effectiveTime: "2018-01-26",
      type: "4"
    }
  ],
  tabs2Content2: [
    {
      title: "合同模板.doc",
      datatime: "2018-01-26",
      effectiveTime: "2018-01-26",
      type: "1"
    }
  ],
  tabs2Content3: [
    {
      title: "民事合同模板.doc",
      datatime: "2018-01-26",
      effectiveTime: "2018-01-26",
      type: "1"
    }
  ],
  tabs2Content4: [
    {
      title: "行政合同模板.doc",
      datatime: "2018-01-26",
      effectiveTime: "2018-01-26",
      type: "1"
    }
  ],
  tabs2Content5: [
    {
      title: "執(zhí)行合同模板.doc",
      datatime: "2018-01-26",
      effectiveTime: "2018-01-26",
      type: "1"
    }
  ]
},
// 選項(xiàng)卡2切換
tabs2NavClick: function(e) {
  var that = this;
  console.log("完整的數(shù)據(jù)是:");
  console.log(that.data.tabs2Nav);
  
  console.log("點(diǎn)擊的標(biāo)簽是:");
  console.log(e.currentTarget.dataset.labelid);

  var newTabs2Content;

  console.log("正在經(jīng)歷的標(biāo)簽是:");
  for(var i=0; i
注意

?由于 SF 可能有字?jǐn)?shù)限制,故 章節(jié) 12.1 之后的內(nèi)容需要小伙伴前往 GitHub 地址查看

?GitHub 地址



jsliang 的文檔庫(kù) 由 梁峻榮 采用 知識(shí)共享 署名-非商業(yè)性使用-相同方式共享 4.0 國(guó)際 許可協(xié)議進(jìn)行許可。
基于https://github.com/LiangJunro...上的作品創(chuàng)作。
本許可協(xié)議授權(quán)之外的使用權(quán)限可以從 https://creativecommons.org/l... 處獲得。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/53307.html

相關(guān)文章

  • 信小程序 bug 中營(yíng)

    摘要:利用這篇教程存儲(chǔ)一些常用的微信小程序開(kāi)發(fā)技巧,方便查找。但是第一,微信小程序是國(guó)內(nèi)的,有中文文檔,雖然它的文檔說(shuō)明有點(diǎn)坑,但好歹有文檔,閱讀理解對(duì)小伙伴們來(lái)說(shuō)不是問(wèn)題。 Create by jsliang on 2018-9-17 17:58:56 Recently revised in 2018-11-19 08:19:13 ?Hello 小伙伴們,如果覺(jué)得本文還不錯(cuò),記得給個(gè)...

    PascalXie 評(píng)論0 收藏0
  • 信小程序 bug 中營(yíng)

    摘要:利用這篇教程存儲(chǔ)一些常用的微信小程序開(kāi)發(fā)技巧,方便查找。但是第一,微信小程序是國(guó)內(nèi)的,有中文文檔,雖然它的文檔說(shuō)明有點(diǎn)坑,但好歹有文檔,閱讀理解對(duì)小伙伴們來(lái)說(shuō)不是問(wèn)題。 Create by jsliang on 2018-9-17 17:58:56 Recently revised in 2018-11-19 08:19:13 ?Hello 小伙伴們,如果覺(jué)得本文還不錯(cuò),記得給個(gè)...

    lordharrd 評(píng)論0 收藏0
  • 信小程序資源匯總

    awesome-github-wechat-weapp 是由OpenDigg整理并維護(hù)的微信小程序開(kāi)源項(xiàng)目庫(kù)集合。我們會(huì)定期同步上的項(xiàng)目到這里,也歡迎各位 UI組件開(kāi)發(fā)框架實(shí)用庫(kù)開(kāi)發(fā)工具服務(wù)端項(xiàng)目實(shí)例Demo UI組件 weui-wxss ★1873 - 同微信原生視覺(jué)體驗(yàn)一致的基礎(chǔ)樣式庫(kù)zanui-weapp ★794 - 好用易擴(kuò)展的小程序 UI 庫(kù)wx-charts ★449 - 微信小程...

    Olivia 評(píng)論0 收藏0
  • 信小程序從入坑到放棄之坑八:textarea在蘋(píng)果手機(jī)中的大Bug

    摘要:順便補(bǔ)充一句,微信官方提供的判斷依舊不全面,最新出來(lái)的蘋(píng)果手機(jī)還沒(méi)有完全支持相關(guān)的坑可以在官方社區(qū)的問(wèn)答中找到。 首次在這里寫(xiě)點(diǎn)東西,還請(qǐng)各位大佬擔(dān)待點(diǎn)。 摘要:昨天的placeholder-class只是希望各位看官注意,而今天的textarea就絕對(duì)是一個(gè)超級(jí)大坑!而且如果看官手中沒(méi)有蘋(píng)果手機(jī)測(cè)試的話(huà),這個(gè)可就真的是個(gè)坑了!為啥?難道要等到用戶(hù)向你反饋你們產(chǎn)品有bug???.......

    dantezhao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<