open-data頭像如何設定樣式
- 設定成 { display: block; overflow: hidden; } 就可以正常設定樣式了,包括圓形頭像等
使用者授權按鈕設計思路
- 授權按鈕設計成全屏透明的,使用者點選螢幕任意位置即可發起授權
小程式中使用Promise
- 引用npm中的es6-promise即可;
- 使用下面的函式包裹微信API即可將其轉為Promise方式呼叫:
function promise(fn) {
return function (obj = {}) {
return new Promise((resolve, reject) => {
obj.success = res => resolve(res);
obj.fail = res => reject(res);
fn(obj);
})
}
}
...
呼叫方式:
utils.promise(wx.request)({ url: ... }).then(response => { ... }) ...
利用::after偽元素新增半透明背景
.elem { /* 元素本身新增樣式 */
position: relative; /* 為了後面的偽元素以本元素為定位基準 */
z-index: 10; /* 渲染在偽元素之上 */
/* 其它樣式,大小,字型等 */
}
.elem::after { /* 給元素新增::after偽元素並設定為半透明:*/
content: "";
position: absolute;
left: 0;
background-color: white;
opacity: 0.2;
/* 其它樣式,大小應和主元素一致 */
}
開發階段給所有元素新增虛線邊框
- 小程式WXSS似乎不支援”*”選擇器,因此只能用以下笨辦法:
/* 僅供測試,釋出版請刪除 */
view,icon,text,rich-text,progress,image,button,textarea,open-data,navigator,canvas,checkbox,form,input,label,picker,radio,slider,switch {
outline: 1px dashed lightblue;
}
漸變背景支援
- 為了在開發工具生效,需要使用”-webkit-“字首:
.mainbg {
background: -webkit-linear-gradient(left,#18b6ff,#aa29ff);
background: linear-gradient(left,#18b6ff,#aa29ff);
}
佔據垂直方向的剩餘空間
- 使用CSS的calc函式,結合vw, vh等單位,可以動態設定CSS長度
{ height: calc(100vh - 300rpx); }
讓小程式支援服務端Session
- 主要就是要新增Cookie支援,可以包裝一下wx.request方法實現
1) 解析response的Set-Cookie應答頭,並將cookie儲存在本地
2) 以後每次請求把本地儲存的cookie放到Cookie請求頭中
開發工具OK,但手機實測WebSocket會話丟失
- 使用上面的方法包裝了wx.request,可以正常使用基於Cookie的伺服器Session,在開發工具上,連線WebSocket也可以在握手時正常獲取Session中的屬性,但手機實測時發現Session丟失
- 經研究,估計因為開發者工具是基於Chrome瀏覽器的,因此WebSocket請求也自動帶上了瀏覽器快取的Cookie,但手機上實現機制不同,因此沒有帶Cookie請求頭
- 包裝一下wx.connectSocket,新增Cookie請求頭即可
點選使用者頭像跳轉頁面
- open-data上面不能繫結事件,簡單實現可以用navigator包裹open-data,不用寫js程式碼即可實現點選跳轉頁面;
- navigator相當於html的a元素,預設為inline,可修改display樣式為block
過載按鈕的樣式
- 因為分享、客服之類的功能只能通過按鈕喚起,不能使用view或navigator,因此為了介面統一,需要過載按鈕的樣式
- 我的程式的風格是半透明背景按鈕,使用::after偽元素實現,這裡發現一個奇葩的坑:似乎按鈕的預設樣式把它的::after偽元素縮小到了原大小的一半,因此需要增加一行transform把它恢復原大小:
.btn::after {
...
transform: scaleX(1) scaleY(1);
}
關於轉發
- 需要在Page中新增onShareAppMessage方法,否則點右上角選單不會出現轉發選項
- 除了右上角選單外,可以使用open-type=”share”的按鈕
- 可以通過onShareAppMessage的引數中的from欄位區分事件來源是選單還是按鈕
- 通過onShareAppMessage方法返回的物件來定製轉發介面顯示的內容
- 另外,在返回的物件上可新增success/fail回撥方法來判斷轉發是否成功以便在程式中發放獎勵。注意,這裡有一個坑,在開發者工具(v1.02.1805181)上回撥是不會被呼叫的,只有在手機上才有效。
阿里雲RDS支援emoji表情符號
- 很多微信使用者的名字裡麵包含emoji字元,必須解決此問題
- 建立資料庫時需要指定字符集為utf8mb4
- 確保MySQL資料庫版本5.7以上
- 確保mysql-connector-java版本5.1.13以上
- 阿里雲RDS後臺->例項詳情->引數設定,修改character_set_server的值為utf8mb4
SVG向量圖支援驗證
- 經測試,三端均支援SVG背景圖,支援”data:image/svg+xml,…”內嵌svg圖片
- image物件,可以src直接引用本地或網路svg圖片,但不支援”data:image/svg+xml,…”直接內嵌svg圖片
CSS3 clip-path支援驗證
iOS CSS3動畫BUG
- 經驗證,iOS上,使用CSS3 animation實現動畫,迴圈播放的沒有問題,但固定次數播放的則有問題
- 因此,單次播放的動畫應考慮用transition實現