iOS 11修复了Modal Bug

时间:2017-12-12 08:57:17

标签: javascript ios css reactjs safari

我有一个固定的模态,它有一些可滚动的内容和一些输入字段。我有一个问题,我专注于输入字段,弹出键盘,然后滚动。 与屏幕上实际呈现的内容相比,DOM元素似乎未对齐。 查看屏幕截图 - 突出显示的区域应该是“继续”按钮的位置。这意味着我无法按预期继续点击。

我认为这可能是个问题,但是修复似乎并没有完全发挥作用(在iPhone X上仍然存在问题)。

是否还有其他人遇到此问题或得到修复?

hackernoon.com/how-to-fix-the-ios-11-input-element-in-fixed-modals-bug-aaf66c7ba3f8 enter image description here

2 个答案:

答案 0 :(得分:0)

是的,我遇到过这个错误。虽然并不完美,但它不适用于每个网站,但光标仍然有点偏出,但它至少在输入字段内,你可以在字段之间跳过...这里是我的修复...

它还有助于使模态100%宽度。

我一直在关注此主题以获取iOS中修复程序的更新,似乎已接近 - https://bugs.webkit.org/show_bug.cgi?id=176896

@media
only screen /* iPhone X */
and (device-width : 375px) 
and (device-height : 812px) 
and (-webkit-device-pixel-ratio : 3),
only screen /* iPhone 8 */
and (device-width : 375px) 
and (device-height : 667px) 
and (-webkit-device-pixel-ratio : 2),
only screen /* iPhone 8 Plus */
and (device-width : 414px) 
and (device-height : 736px) 
and (-webkit-device-pixel-ratio : 3),
only screen /* iPhone 7 */
and (min-device-width : 375px)
and (max-device-width : 667px), 
only screen /* iPhone 7 Plus */
and (min-device-width : 414px)
and (max-device-width : 736px),
only screen /* iPhone 6 */
and (min-device-width : 375px) 
and (max-device-width : 667px),
only screen /* iPhone 6 Plus */
and (min-device-width : 414px) 
and (max-device-width : 736px),
only screen /* iPhone 5 & 5S */
and (min-device-width : 320px) 
and (max-device-width : 568px),
only screen /* iPad */
and (min-device-width : 768px) 
and (max-device-width : 1024px),
only screen /* iPad 3 and 4 */
and (min-device-width : 768px) 
and (max-device-width : 1024px)
and (-webkit-min-device-pixel-ratio: 2),
only screen /* iPad 1 and 2 */
and (min-device-width : 768px) 
and (max-device-width : 1024px) 
and (-webkit-min-device-pixel-ratio: 1),
only screen /* iPad Mini */
and (min-device-width : 768px) 
and (max-device-width : 1024px)
and (-webkit-min-device-pixel-ratio: 1) { 
html,body {
-webkit-overflow-scrolling : touch !important;
overflow: auto !important;
height: 100% !important;
}
}

答案 1 :(得分:0)

此解决方案帮助我修复了任何IOS模型。

StackBlitz

我已在上面的urL中解释过,但我会在这里解释一下以防万一...

首先,只使用此代码定位IOS设备。

//target ios
var isMobile = {
  iOS: function() {
    return navigator.userAgent.match(/iPhone|iPad|iPod/i);
  }
}
if(isMobile.iOS()) { 
  jQuery('body').addClass('apple-ios');
}

然后将此代码放入您的css:

body.apple-ios.modal-open {
  position: fixed;
  width:100%;
}

如果您使用的是wordpress和缓存插件,则需要清空所有缓存。

希望这对你有所帮助。