小程式開發告一段落,總結一下這段時間小程式開發遇到的問題及解決方案,react沖沖沖! ! !
在wxss中,定義變數:width:var(–width–);
在js中,定義變數:viewWidth,並給予這個變數賦予想要的值
在wxml中,使用wxss中的變數和js中的變數:style="–width–: {{ viewWidth }}px"
在實現直播的功能時,我們需要彈出紅包等遮蓋video的處理,此時會發現,使用z-index屬性在小程序中是無效的,微信開發者文檔提供了cover-view,cover-imge等控制實現遮罩的功能。
這裡值得注意的是cover-view中的background-image屬性是無效的,所以我們要放置背景圖時需要使用到cover-image,並且將它的position設為absolute, top為0, left也為0即可。
首先是將這個scroll的高度定死,讓scroll自動滑動到某個item的位置:
1 2 3 4 5 6 |
|
為scroll添加樣式:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
可以看到在小程式上的實現,明顯比在網頁上要簡單,我們只需要一個scroll-into-view
的屬性,並且為每個item添加一個id即可。
那麼有沒有純css的實作呢?當然。
我們將item都放在一個盒子中,讓盒子的相對於list底部對齊,overflow則進行scroll,這樣同樣能實現現在的效果。
這次開發,需要實現一個輸入框點擊,軟鍵盤彈起,選擇顏色功能。我們看下效果圖:
那麼考慮幾個問題:
1、選擇顏色時鍵盤失去焦點會縮起
微信小程式提供了一個hold-keyboard
屬性
我在input 中設定了hold-keyboard="true"
2、軟鍵盤彈出時會自動把頁面上推,但是我們只是想要軟鍵盤把input框上推而不是整個頁面。
分析這個問題,首先是考慮純css解決方案,把頁面設為fixed,然而不起作用;接下來考慮頁面彈起時減去軟鍵盤的高度讓它恢復到原位,這會帶來兩個問題:1)軟鍵盤彈起後才能取得軟鍵盤高度,這樣一來頁面的下落會產生嚴重的滯後;2)同樣的不起作用
這個問題最終的解決方案是這樣的:
首先查看官方文檔,微信小程式提供了一個adjust-position
屬性
# 設定adjust-position=“false"
,此時的確不會進行頁面的上推了,但是我們需要的input框上推如何實現?
我們可以在input的方法參數e.detail.height中拿到軟鍵盤的高度,設定input的高度為e.detail.height的高度即可。
最終程式碼:
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
|
至於說上面的catchtap則很好理解了,當我們要點擊任意處導致失去焦點時,必定要在外層綁定bindtap事件,那麼此處就需要使用catchtap阻止事件的冒泡。
值得一提的是,微信小程式也提供了一個wx.onKeyboardHeightChange(function callback)
方法來監聽鍵盤的高度變化,但是親測這個方法並沒有很好用,嘗試了一下就棄之不用了。
我们都知道 HTTP 协议有一个缺陷:通信只能由客户端发起。那么在这种情况下,如果服务器有连续的状态变化,客户端要获知就非常麻烦。我们只能使用"轮询",最典型的应用场景就是聊天室了。
轮询的效率低,非常浪费资源。因此,工程师们一直在思考,有没有更好的方法。WebSocket 就是这样发明的。
那么如何在微信小程序中使用websocket呢?先来看看本次的需求:
在观看直播的过程当中,用户会进行聊天,服务器要将用户的弹幕信息推送到每个用户的手机端。
weapp.socket.io是基于socket.io的微信程序环境中的客户端,以及socket.io-client浏览器版本的完整功能。
安装方式:
1 |
|
简单使用的代码:
1 2 3 4 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
|
想了解更多编程学习,敬请关注php培训栏目!
以上是匯總微信小程式開發問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!