在 Android 和 iOS 等触屏设备中,如果网页中某元素设置 overflow: auto 或者 overflow:scroll,那么问题就来了。在 Android 3.0 之前以及 iPhone OS 3.0 之前的自带浏览器中,你无法用手指拖动该元素所在区域,这样就相当于 overflow: hidden 了。在 Android 3.0 中,这个问题解决了,但是该溢出区域不会显示滚动条。而在 iPhone OS 3.0 中这个问题却是以另一种方式解决:我们只能用两个手指拖动溢出区域,而且该区域同样不会显示滚动条。一直到了 iOS 5.0,苹果公司才完整解决了这个问题,这时候可以单指拖动,而且可以通过设置 CSS 属性 -webkit-overflow-scrolling: touch; 以显示滚动条。

对于早期 Android 和 iOS 的这个问题,导致很多用户可能就不知道该区域可以拖动。为满足触屏用户,我们针对桌面浏览器设计好的页面布局,就需要作适当的调整。最简单的做法是改用 height:auto,如果此法不可行可以用 iScroll 4 这个 JavaScript 库。

对于 iframe 元素,也有类似的问题。我们可以将它放在一个大小确定的 div 中,并且设置该 div 的属性为 overflow:auto; -webkit-overflow-scrolling: touch; 。当然,iframe 元素也必须设置样式为 display:block; width: 100%; height: 100%;

对于非自带浏览器,Chrome for Android 是支持拖动溢出元素,而且开始也支持 -webkit-overflow-scrolling: touch; 属性,但是最近删除了这个属性。其它浏览器例如 Firefox Mobile 或者 Opera Mobile,有待测试。

参考资料:
[1] Div Overflow and iPhone Browsing
[2] Issue 6864 - android -Web browser - Inner Scrolling - Android
[3] Scrolling a overflow:auto; element on a touch screen device
[4] Android browser bug? div overflow scrolling - Stack Overflow
[5] Android 设备页面内 div(容器,非页面)overflow:scroll; 失效解决 - Cat的日志[6] New Mobile Safari stuff in iOS5: position:fixed, overflow:scroll, new input type support
[7] scroll - Two finger iPhone scrolling - Stack Overflow
[8] Chrome Browser for Android no longer supports -webkit-overflow-scrolling?[9] Strategies for the iFrame on the iPad Problem[A] CSS2 in Mobile #overflow - quirksmode.org
[B] Overflow scrolling - barrow.io
[C] Overthrow - A overflow:auto polyfill for use in responsive design

在触屏设备中拖动 overflow 元素的更多相关文章

  1. jquery -- 触屏设备touch事件

    几种普及得比较好的触摸事件,你可以在绝大多数现代浏览器中来测试这一事件(必须是触屏设备哦): touchstart:触摸开始的时候触发 touchmove:手指在屏幕上滑动的时候触发 touchend ...

  2. 在触屏设备上面利用html5裁剪图片

    前言 如今触屏设备越来越流行,并且大多数已经支持html5了.针对此.对触屏设备开发图片裁剪功能, 让其能够直接处理图片.减轻服务端压力. 技术点 浏览器必须支持html5,包含fileReader. ...

  3. 在触屏设备上面利用html5裁剪图片(转)

    前言 现在触屏设备越来越流行,而且大多数已经支持html5了.针对此,对触屏设备开发图片裁剪功能, 让其可以直接处理图片,减轻服务端压力. 技术点 浏览器必须支持html5,包括fileReader, ...

  4. [Winform]关于cefsharp触屏设备长按文本内容,崩溃问题的修复

    摘要 在之前遇到cefsharp,在触屏电脑上,长按文本内容,会崩溃的问题. 相关文章 当时遇到这样的问题,在cefsharp项目下提交了bug.已经修复,可以参考当时我提的bug,以及解决过程,可参 ...

  5. vuejs中拖动改变元素宽度实现宽度自适应大小

    需求效果: 原理:拖动效果的实现基本都是dom操作来实现的,通过拖动分隔线,计算分隔线与浏览器边框的距离(left),来实现拖动之后的不同宽度的计算:当拖动分隔线1时,计算元素框left和mid:当拖 ...

  6. 触屏设备上的多点触碰检测C++代码实现

    转自:http://aigo.iteye.com/blog/2272698 代码还是参考自Epic官方的塔防项目:StrategyGame 看了下C++的API,现成的API中貌似只支持单点触碰检测, ...

  7. 让BOOTSTRAP默认SLIDER支持触屏设备

    var isTouch=('ontouchstart' in window); if(isTouch){ $(".carousel").on('touchstart', funct ...

  8. (转)iOS Wow体验 - 第七章 - 操作图例与触屏人机工学

    本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第七章译文精选,其余章节将陆续放出.上一篇:Wow ...

  9. 移动端touch触屏滑动事件、滑动触屏事件监听!

    一.触摸事件 ontouchstart.ontouchmove.ontouchend.ontouchcancel 目前移动端浏览器均支持这4个触摸事件,包括IE.由于触屏也支持MouseEvent,因 ...

随机推荐

  1. delphi xe5 android sample 中的 SimpleList 是怎样绑定的

    C:\Users\Public\Documents\RAD Studio\12.0\Samples\FireMonkeyMobile 例子中的绑定方式如下图: 1.拖拽一个listview到界面上,然 ...

  2. C# xml2json

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  3. MySql排序性能对比

  4. HDU 1160 FatMouse's Speed(DP)

    点我看题目 题意 :给你好多只老鼠的体重和速度,第 i 行代表着第 i 个位置上的老鼠,让你找出体重越大速度越慢的老鼠,先输出个数,再输出位置. 思路 :看题的时候竟然脑子抽风了,看了好久愣是没明白题 ...

  5. [OJ] Data Stream Median (Hard)

    LintCode 81. Data Stream Median (Hard) 思路: 用一个大根堆保存较小的一半数, 一个小根堆保存较大的一半数. 每次根据num和两个堆顶的数据决定往哪个堆里面放. ...

  6. 正则表达式(javascript)学习总结

    正则表达式在jquery.linux等随处可见,已经无孔不入.因此有必要对这个工具认真的学习一番.本着认真.严谨的态度,这次总结我花了近一个月的时间.但本文无任何创新之处,属一般性学习总结. 一.思考 ...

  7. 《深入理解linux内核》第二章 内存寻址

    三种不同的内存地址 逻辑地址(logical address)包含在linux实际指令中的地址,即分段式地址,是对应的硬件平台段式管理转换前地址由16位的段选择符(segment selector)和 ...

  8. module_init宏解析

    在init.h中我们看到 #define module_init(x) __initcall(x); 还看到 #define __initcall(fn) device_initcall(fn) 还有 ...

  9. poi大数据导入解决方法

    This one comes up quite a lot, but often the reason isn't what you might initially think. So, the fi ...

  10. MFC CVIew关闭时崩溃

    记得看视频的时候老师说过    创建CView的时候,也就是创建视图的时候,不要使用  Cview      m_view;这种方式 而是使用Cview  *  pView=new   Cview() ...