对于 IOS 上的 Safari 和 Chrome,文本框到页面顶部的转换无法正常工作

Posted

技术标签:

【中文标题】对于 IOS 上的 Safari 和 Chrome,文本框到页面顶部的转换无法正常工作【英文标题】:Transition for text box to top of page not working properly for Safari and Chrome on IOS 【发布时间】:2016-09-28 05:44:55 【问题描述】:

页面底部有文本框。每当它被聚焦时,它应该被转换到页面的顶部。这是因为我想在输入时向用户显示建议。此实现适用于 PC 和 android 设备。而对于 ios 设备,当显示可视键盘时,文本框会离开视口,但当我按“完成”时会再次出现。

以下是我正在使用的 CSS:

#searchSection 
position: relative;
/*-webkit-overflow-scrolling: auto;*/
transition: all 0.5s;
-webkit-transition: all 0.5s; /*safari*/
-webkit-transition-delay: 0;
-moz-transition: all 0.5s;
-o-transition: all 0.5s;

#searchSection .focused 
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
height: 100%;
background: #e8e8e8;
width: 100%;
z-index: 1000;
/*-webkit-backface-visibility: hidden;*/

下面是修改类名的JS:

goog.events.listen(
        searchInput,
        goog.events.EventType.FOCUS, function () 
            goog.dom.classlist.add(searchSection, 'focused');
        
    );

是否有任何解决方案/解决方法?

【问题讨论】:

【参考方案1】:

根据我的经验,iOS 上的 Safari(Chrome 在那里使用相同的引擎)在具有 position: fixed 的容器中的输入存在问题。

我改用position: absolute 并在获得焦点之前滚动到输入元素来帮助自己。

【讨论】:

但是position: absolute 会在滚动时将 div 带出视口。 我用position: absolute; top: 0;将输入放在页面的最顶部,然后将页面滚动到顶部。我找不到另一种适用于 Safari 的方法。 这是解决方法,不是解决问题的方法,但绝对有帮助。我怎样才能只为IOS设备而不是其他设备?

以上是关于对于 IOS 上的 Safari 和 Chrome,文本框到页面顶部的转换无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

iOS cookie 设置问题:safari 和 chrome

Twilio 视频在 Android 上的 Chrome 和 iOS 上的 Safari 中失败,可在桌面上运行

通过 Chrome 调试运行在 IOS-safari 上的页面

带有自定义控件的视频无法在 iOS 上播放(Safari 和 Chrome)

HTML:单引号在此网站上显示为空格,但仅在某些浏览器中显示(即在桌面上的 Chrome 中,但在 iOS 上的 Safari 中不显示)

图像无法在 iOS 上的 Safari 上加载