在ios里面,當一個文本框的樣式為fixed時候,如果這個文本框獲得焦點,它的位置就會亂掉,由于ios里面做了自適應居中,這個fixed的文本框會跑到頁面中間。 這也是你說的 “ 多出70px ”的原因。
解決辦法有兩個:
可以在文本框獲得焦點的時候將fixed改為absolute,失去焦點時在改回fixed,但是這樣會讓屏幕有上下滑動的體驗不太好。
.fixfixed { position:absolute;
}
$(document)
.on('focus', 'input', function(e) {
$this.addClass('fixfixed');
})
.on('blur', 'input', function(e) {
$this.removeClass('fixfixed');
});
還有一種就是用一個假的fixed的文本框放在頁面頂部,一個absolute的文本框隱藏在頁面頂部,當fixed的文本框獲得焦點時候將其隱藏,然后顯示absolute的文本框,當失去焦點時,在把absolute的文本框隱藏,fixed的文本框顯示。
.fixfixed {
position:absolute;}$(document)
.on('focus', 'input', function(e) { $absolute..show();
$this.hide();
})
.on('blur', 'input', function(e) { $fixed..show();
$this.hide();
});
題主可以試一下。;)