在触屏设备中拖动 overflow 元素
在 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 元素的更多相关文章
- jquery -- 触屏设备touch事件
几种普及得比较好的触摸事件,你可以在绝大多数现代浏览器中来测试这一事件(必须是触屏设备哦): touchstart:触摸开始的时候触发 touchmove:手指在屏幕上滑动的时候触发 touchend ...
- 在触屏设备上面利用html5裁剪图片
前言 如今触屏设备越来越流行,并且大多数已经支持html5了.针对此.对触屏设备开发图片裁剪功能, 让其能够直接处理图片.减轻服务端压力. 技术点 浏览器必须支持html5,包含fileReader. ...
- 在触屏设备上面利用html5裁剪图片(转)
前言 现在触屏设备越来越流行,而且大多数已经支持html5了.针对此,对触屏设备开发图片裁剪功能, 让其可以直接处理图片,减轻服务端压力. 技术点 浏览器必须支持html5,包括fileReader, ...
- [Winform]关于cefsharp触屏设备长按文本内容,崩溃问题的修复
摘要 在之前遇到cefsharp,在触屏电脑上,长按文本内容,会崩溃的问题. 相关文章 当时遇到这样的问题,在cefsharp项目下提交了bug.已经修复,可以参考当时我提的bug,以及解决过程,可参 ...
- vuejs中拖动改变元素宽度实现宽度自适应大小
需求效果: 原理:拖动效果的实现基本都是dom操作来实现的,通过拖动分隔线,计算分隔线与浏览器边框的距离(left),来实现拖动之后的不同宽度的计算:当拖动分隔线1时,计算元素框left和mid:当拖 ...
- 触屏设备上的多点触碰检测C++代码实现
转自:http://aigo.iteye.com/blog/2272698 代码还是参考自Epic官方的塔防项目:StrategyGame 看了下C++的API,现成的API中貌似只支持单点触碰检测, ...
- 让BOOTSTRAP默认SLIDER支持触屏设备
var isTouch=('ontouchstart' in window); if(isTouch){ $(".carousel").on('touchstart', funct ...
- (转)iOS Wow体验 - 第七章 - 操作图例与触屏人机工学
本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第七章译文精选,其余章节将陆续放出.上一篇:Wow ...
- 移动端touch触屏滑动事件、滑动触屏事件监听!
一.触摸事件 ontouchstart.ontouchmove.ontouchend.ontouchcancel 目前移动端浏览器均支持这4个触摸事件,包括IE.由于触屏也支持MouseEvent,因 ...
随机推荐
- mysql之——存储过程 + 游标 + 事务
下面是自己曾经编写过的mysql数据库存储过程,留作存档,以后用到的时候拿来参考. 其中,涉及到了存储过程.游标(双层循环).事务. [说明]:代码中的注释只针对当时业务而言,无须理会. 代码如下: ...
- DOM in Angular2
<elementRef> import {ElementRef} from "@angular/core"; constructor(private element: ...
- [Gauss]POJ3185 The Water Bowls
题意:反正就是要给的一串01的变成全0 能影响自己和左右 最少需要几步 01方程组 异或解 ][]; // 增广矩阵 ]; // 解 ]; // 标记是否为自由未知量 int n; void debu ...
- MySQL学习笔记之一
MySQL装有一个名为mysql的命令行,在提示符下输入mysql将出现如下的简单提示: ➜ ~ mysql Welcome to the MySQL monitor. Commands end wi ...
- Android开发UI之去掉title bar
去掉屏幕上的title bar有3个方法: 1.java代码实现: @Override publicvoid onCreate(Bundle savedInstanceState) { super.o ...
- mapreduce实现"浏览该商品的人大多数还浏览了"经典应用
输入: 日期 ...cookie id. ...商品id.. xx xx xx 输出: 商品id ...
- DNS----域名解析系统
DNS就是域名解析系统,它可以将IP转换成域名,也可以将域名转换成IP 1. 安装DNS服务 开始—〉设置—〉控制面板—〉添加/删除程序—〉添加/删除Windows组件—〉“网络服务”—〉 ...
- BrnShop开源网上商城第四讲:自定义插件
重要通知:BrnShop企业版NOSQL设计(基于Redis)已经开源!源码内置于最新版的BrnShop中,感兴趣的园友可以去下载来看看.官网地址:www.brnshop.com. 好了现在进入今天的 ...
- 基于WebForm+EasyUI的业务管理系统形成之旅 -- 数据统计(Ⅳ)
上篇<基于WebForm+EasyUI的业务管理系统形成之旅 -- 首页快捷方式>,主要介绍通过添加首页快捷方式,快速进入各个应用菜单功能. 将常用的菜单功能作为快捷方式,避免由于寻找诸多 ...
- [POJ1969]Count on Canton
NOIP1999普及组 Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 9333 Accepted: 5469 Descr ...