在 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. oracle dblink 配置两个ip

    create database link test_link connect to xx identified by xx using '(DESCRIPTION = (ADDRESS_LIST = ...

  2. C# List<> 删除

    List<string> l = new List<string>() { "A1", "A2", "A3", &q ...

  3. Web.xml配置详解之context-param(转)

    本文转自:http://blog.csdn.net/liaoxiaohua1981/article/details/6759206 格式定义: <context-param> <pa ...

  4. Java 单链表逆序

    代码: package com.wangzhu.linkedlist; public class LinkedListDemo { /** * @param args */ public static ...

  5. 第八章CDC设备

    8.1 CDC设备介绍 USB的CDC类是USB通信设备类(Communication Device Class)的简称.CDC类是USB组织定义的一类专门给各种通信设备(电信通信设备和中速网络通信设 ...

  6. 把硬盘格式化成ext格式的cpu占用率就下来了

    把硬盘格式化成ext格式的cpu占用率就下来了我是使用ext4格式 @Paulz 还有这种事情? 现在是什么格式?- - ,你自己用top命令看一下啊就知道什么东西在占用cpu了下载软件一半cpu都用 ...

  7. HDU 2493 Timer 数学(二分+积分)

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2493 题意:给你一个圆锥,水平放置,圆锥中心轴与地面平行,将圆锥装满水,在圆锥某一表面开一个小洞,流出来 ...

  8. FastJSON学习

    这几天在用FastJSON,发现需要测试一些关键点,包括: 1.是否支持内部类:测试结果是支持,但是需要设置为静态类(static) 2.是否支持继承的自动序列化及反序列化:测试结果是支持 3.缺字段 ...

  9. 【CF】328 D. Super M

    这种图论题已经变得简单了... /* D */ #include <iostream> #include <string> #include <map> #incl ...

  10. php.ini 干了些啥?

    今天又重新看了一遍php.ini 的各种配置介绍,感觉还是官网说的比较靠谱,朋友,你所要找的,都在这里了. http://www.php.net/manual/zh/ini.core.php