主要說一下微信小程序和以前的web開發中表現不一致的元素。html
有時候,咱們須要實現自定義轉發的功能,可是從新設置button元素的樣式,這個時候你可能會發現無論怎麼設置button的樣式,它的邊框都去不掉。後來才知道原來是after僞元素的緣由(若是是瀏覽器的話,若是有僞元素在開發者工具能直接看到,小程序就不行,這點我以爲仍是有點坑的)。html5
解決方案:ios
.btn::after{
border:none;
}
複製代碼
順便列一下微信小程序button的默認樣式:web
button {
position: relative;
display: block;
margin-left: auto;
margin-right: auto;
padding-left: 14px;
padding-right: 14px;
box-sizing: border-box;
font-size: 18px;
text-align: center;
text-decoration: none;
line-height: 2.55555556;
border-radius: 5px;
-webkit-tap-highlight-color: transparent;
overflow: hidden;
color: #000000;
background-color: #F8F8F8;
}
複製代碼
默認行高,padding,margin這幾個屬性仍是要注意一下的。npm
小程序的image元素有一個mode屬性來設置圖片裁剪、縮放的模式,並且image組件默認寬度300px、高度225px。 也就是說,若是不設置mode屬性,只設置width的值,圖片確定是會變形的,由於該圖片的高度如今是225px而不是自適應的。json
提供兩種解決方案:小程序
// mode 有 13 種模式,其中 4 種是縮放模式,9 種是裁剪模式。
// 我經常使用的模式是:
// widthFix 寬度不變,高度自動變化,保持原圖寬高比不變
// 也就是說設置mode="widthFix"後只設置width屬性,圖片也能夠自適應
// wxml
<image
mode="widthFix"
class="info--head"
src="{{src}}"></image>
// wxss
.info--head {
width: 750rpx;
}
複製代碼
設置position: fixed;
的元素不能存在於 scroll-view 元素內,最好是在最外層,不然在ios系統上就會出現各類問題的。微信小程序
生命週期依次爲: 主頁面onLoad -> 主頁面onShow -> 主頁面onReady -> 子頁面onLoad -> 子頁面onShow -> 子頁面onReady -> 子頁面onUnload -> 主頁面onShow。api
能夠看到在這個過程當中子頁面的onHide並不會觸發。瀏覽器
上一個tab頁onHide -> 當前tab頁onShow。
能夠看到在 1 和 2 的過程當中,tab頁都不會觸發 onUnload 事件。
頁面隱藏/切入後臺時觸發。 如 navigateTo 或 底部 tab 切換到其餘頁面,小程序切入後臺等。
頁面卸載時觸發。如 redirectTo 或 navigateBack 到其餘頁面時。
這個但是個我遇到的一個大坑,當調用 wx.chooseImage 這個API的時候,竟然會觸發 該頁面的onHide 和 onShow 事件,多是由於我對 切入後臺時觸發onHide理解的不夠深入???以前作的那個項目和 即時通信IM 有關,我說爲何選擇圖片以後聊天記錄怎麼就亂了呢,當時真的坑了我很多時間,真的是一個蘿蔔一個坑。
主要是想在退出頁面的時候清除定時器,可是因爲對 onHide 和 onUnload 觸發時機理解的不夠深入,還專門開了 debug 具體調試了一下生命週期,這下算是大體上明白了。
還有一點,很重要,若是是在 webview 內有定時器,在退出小程序頁面的時候必定要將 webview 的 src 屬性設置爲 空, 否則webview好像並不會銷燬?反正個人定時器還在,設置src爲空便可解決。
官方的介紹只有4步:
npm install
;照作一遍以後,嗯,很好。
what???個人操做有誤嗎?總共也才4步,難道這我都能出錯?後來查了一下,發現還少了很重要的一步: package.json文件。對呀,平時作項目的時候這個文件都是最不可或缺的,怎麼到了微信小程序就給忘了呢,看來仍是讀書太少了。npm init
在項目根目錄下新建package.json文件。我上次寫小程序都是一年之前了,因此我以爲新增的API可能你們都很熟悉了,不喜輕噴哈。
該API用來獲取圖片的width, height, path, orientation,type 等信息,能夠看到不只能獲取圖片的寬度和高度,還能將 網絡圖片的地址換成本地圖片的地址,固然了,網絡圖片需先配置download域名才能生效。
經過指定 encoding 就能夠獲得相似於 html5 FileReader 的效果,好比將文件讀取爲 base64。小程序支持的 encoding 仍是比較多的,能夠本身看看官方文檔的。
這個API主要是用來獲取文件的大小,也就是size屬性。若是還須要文件摘要,可使用下面的API。
這個API主要是用來獲取文件的size和digest信息,目前支持 md5 和 sha1 兩種。
在作即時通信的時候,若是收到新消息,在增長內容之後也要滾動頁面至底部;下拉刷新也得回到頂部。這個時候該API就頗有用了,要否則很無奈呀,我記得一年之前好像是沒有這個功能的。
其實列舉的都是我在作 小程序 和 騰訊雲IM 即時通信的時候須要使用的API,騰訊雲IM官方文檔只有web端的,小程序的直接讓你參考web端的,由於API的差別,基本上全部功能都須要本身封裝,通常的還好,IM上傳圖片這個可就坑了,IM只能發送base64編碼的文件,要不是看到小程序支持了base64編碼,我都差點放棄了。
在不考慮壓縮圖片的狀況,從選擇圖片到發送IM圖片消息,光是小程序這邊我就得調用4個API,小程序就不能簡化一下嗎?
這簡直就是一個巨坑,作項目以前我去社區看了一下,發現這個API如今不能彈窗提醒了,必須用戶點擊按鈕才能獲取,就是說沒有按鈕,連彈窗都彈不出來的。針對這個問題,我直接給後臺說了,那邊竟然說是別人家的就不用點擊按鈕就能獲取,到你這怎麼還得點擊按鈕?我跟你說,讓用戶點擊按鈕確定是不現實的,那多影響用戶體驗,你本身想辦法去。
what???官方都說的那麼明確了,只有3種解決辦法,每一種都繞不開按鈕,我能怎麼辦?最後費了半天口舌,再加上我把別人家的小程序也都放到他們跟前,讓他們一個個看清有沒有按鈕,總算是搞定了。
說實話,做爲一個開發者,我仍是更喜歡web這種開發的平臺,微信小程序真的是一步一個坑,若是能夠,真的不想作微信小程序呀! 惋惜沒有若是o(╥﹏╥)o。