一、IOS
1.滾動穿透問題
在自己設定左右兩側滾動時,有時IOS開啟了本身的滾動,有時上層觸摸到下層的滾動此時讓IOS寫一個方法可自由開啟或者關閉滾動
對應的會出現滑動位置無法設定問題,此時調用ios本身滾動位置,去除h5滾動位置
2.vant在低版本IOS手機中日期選擇器(van-datetime-picker)無法拉動問題
主要在IOS11以下出現的問題,微信中有部分也出現類似問題
參考:https://github.com/youzan/vant/issues/2865
https://youzan.github.io/vant/#/zh-CN/datetime-picker
處理方案添加樣式
.van-picker-column{
position: relative;
z-index: 1;
&:before{
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
content: '';
}
&>ul{
z-index: -1;
position: relative;
}
}
這樣處理下基本可以,其中由于個人導緻另外一個問題出現
原因參考:
<van-popup v-model="show" position="bottom">
<van-datetime-picker
v-model="currentDate"
type="date"
:min-date='new Date()'
@cancel='onCancel'
@confirm='onSureDate'
v-if='disChoose'
/>
<van-datetime-picker
v-model="currentDate"
type="date"
v-else
@cancel='onCancel'
@confirm='onSureDate'
/>
</van-popup>
其中就是new Date()這個指派,每次滑動都重新擷取指派,導緻多次快速滑動出現卡頓,這個頁面無法,直接在頁面進來的時候指派
即: :min-data = 'minData'
mounted() {
this.minData = new Date()
}
3.input框設定disabled時字型顯示很模糊
ios的disbaled為0.3,是以樣式設定opacity: 1;
.van-field__control:disabled {
color: #969799 !important;
-webkit-text-fill-color: #969799;
-webkit-opacity: 1;
opacity: 1;
}
二、Android安卓
1.font-weight不生效問題
font-weight: 600 // 不生效
font-weight: bold // 生效
2.有時input輸入框被覆寫問題
- scrollIntoView(alignWithTop) ,alignWithTop為true時與目前可視區域頂部對其,false與底部對其,預設true
-
scrollIntoViewIfNeeded(alignCenter) 隻在目前元素在視窗的可見範圍内不可見的情況下,才滾動浏覽器視窗或容器元素,最終讓目前元素可見。如果目前元素在視窗中可見,這個方法不做任何處理。如果将可選參數alignCenter設定為true,則表示盡量将元素顯示在視窗中部(垂直方向)------Safari、Chrome實作了這個方法
更多的參考:https://www.cnblogs.com/mopagunda/p/4899389.html
<van-field
v-model="value.numbers"
:type='inputType'
@focus="onFoucus "
:maxlength='6'
@input='InputField($event, value, key)'
style='vertical-align: middle;'
/>
// 監聽手機型号,判斷是否安卓,是的話才進入函數處理,vant的擷取焦點時調用
onFoucus (e) {
if (this.isIOS) {
return
}
setTimeout(() => {
e.target.scrollIntoView(false)
e.target.scrollIntoViewIfNeeded()
}, 200)
}
多次點選input輸入框依舊會觸發這種情況,故而将focus事件轉換成click事件
<van-field
v-model="value.numbers"
:type='inputType'
@click="onClick "
:maxlength='6'
@input='InputField($event, value, key)'
style='vertical-align: middle;'
/>
onClick (e) {
if (this.isIOS) {
return
}
this.timer && clearTimeout(this.timer)
// 防抖處理
this.timer = setTimeout(() => {
e.path[0].scrollIntoViewIfNeeded()
}, 500)
}
不相容問題
由于使用了muse-ui,經排查主要是muse-ui版本問題,安裝了3.0.2版本
處理:
移除依賴:npm uninstall muse-ui
指定版本,重新安裝:npm install [email protected] -s
問題檢視:https://github.com/youzan/vant/issues/3015
樣式轉換
npm install px2rem-loader --save-dev
npm i lib-flexible --save
詳情參看:
https://blog.csdn.net/weixin_42941619/article/details/87356942