webkit-overflow-scrolling 隐藏绝对定位的 div

Posted

技术标签:

【中文标题】webkit-overflow-scrolling 隐藏绝对定位的 div【英文标题】:webkit-overflow-scrolling is hiding absolute positioned div 【发布时间】:2015-12-31 20:13:52 【问题描述】:

我先给出例子和截图:

html

<div class="add-link-box">
<div class="add-link-box-close-button" id="add-link-box-close-button">X</div>
<form name="add-link" id="add-link-form" method="post" action="" enctype="multipart/form-data">
<div style="width: 90%;" class="alink-field">Add A Link</div>
<div class="mobile-form-frame" id="mobile-form-frame">
<div class="alink-field mobile-alink"><label for="link-url">Link Address:</label></div>
<div class="alink-field"><input type="text" name="linkurl" id="link-url" class="add-link-form" 
placeholder="www.awebsite.com"></div>
<div class="alink-field mobile-alink"><label for="link-description">Link Description:</label></div>
<div class="alink-field"><input type="text" name="linkdescription" id="link-description" class="add-link-form" placeholder="my
website"></div>
<div class="alink-field mobile-alink"><label for="link-image">Link Image:</label></div>
<div class="alink-field"><input type="file" name="linkimage" id="link-image" class="add-link-form"></div>
<div class="alink-field"><input type="button" name="submit" value="Submit Link" class="add-link-form" id="add-link-submit"></div>
<div class="alink-field"><input type="reset" name="reset" value="Clear" class="add-link-form" id="reset"></div>
</div>
</form>
</div>

CSS:

.add-link-boxborder: 2px #006BB5 solid; color: #006BB5; font-family: bonvenocf; text-align: center; font-size: 16pt; margin: 10px; height: 90%; margin-top: 30px; overflow: auto; -webkit-overflow-scrolling: touch;

.mobile-form-frameoverflow: auto; height: 90%;

.add-link-box-close-buttonposition: absolute; display: block; right: 5px; top: 5px; width: 20px; height: 20px; padding: 2px; line-height: 18px; font-size: 18pt; text-align: center; cursor: pointer; font-weight: bold; color: #FF0000;

.add-link-box-close-button:hovercolor: #FF0000;

.alink-fieldwidth: 90%; margin: 0px; display: block; padding: 10px; margin-left: auto; margin-right: auto; text-align: center;

.mobile-alinktext-align: left;

问题来了:

mobile-form-frame类中添加-webkit-overflow-scrolling: touch;时(为了在ios设备上实现原生滚动),关闭这个div的“X”是隐藏的。如果我们删除-webkit-overflow-scrolling: touch;,它不会。我已经进行了一些搜索,但找不到其他遇到过同样问题的人。我不明白为什么这会导致绝对定位的 div add-link-box-close-button 被遮挡。谁能帮我解决这个问题?这实际上是 iOS 上 Safari 中的一个错误吗?

我已经包含了屏幕截图来展示我正在体验的结果。

编辑:上面的 html 用 position: fixed; 包裹在容器 div 中

【问题讨论】:

游戏已经很晚了,但你见过这个解决方案吗:***.com/questions/9801687/… 您找到解决方案了吗?我看到了同样的问题,这真的让我很烦恼。基本上,任何打开了触摸滚动的容器似乎都被不可分割地对待:它里面的定位元素不能显示在它外面,而它外面的定位元素不能显示在里面的任何元素后面,不管 z 索引如何被指定。这真的搞砸了我的设计师指定的 UI,它需要有选择地使滚动列表中的元素变暗...... 【参考方案1】:

使用这个 CSS

.add-link-box 
    position: relative;

【讨论】:

【参考方案2】:

不是专家只是一个想法,如果您移动“X”z-index 会怎样?你试过吗?

也许 X 已显示但不在前景中。只是一个想法

【讨论】:

以上是关于webkit-overflow-scrolling 隐藏绝对定位的 div的主要内容,如果未能解决你的问题,请参考以下文章

-webkit-overflow-scrolling:touch 和“点击状态栏滚动到顶部”

Sencha Touch 2 & webkit-overflow-scrolling: 触摸

-webkit-overflow-scrolling:在 chrome 和 ios 上无法识别触摸

以编程方式停止-webkit-overflow-scrolling

-webkit-overflow-scrolling:touch 有多少支持

-webkit-overflow-scrolling:touch; Apple的iOS8中断了