如果要求兼容IE10以下浏览器,可以扭头就走
安卓与IOS浏览器的区别
- safari 中伪元素不支持 CSS3 动画。
在项目中肯定有很多前端开发人员使用 css 的伪元素属性进行页面构建。虽然这种方式很方便,但是在 safari 中并不支持伪元素的 CSS3 动画效果。
- safari 中当一个元素的高度为零时,下边的同级元素的上外边距会覆盖这个元素。
在 IE、chromet、FF 中,即使一个元素的高度为 0,也会把它当作块级元素看待,在页面中占据相应的位置。但是在 safari 中,高度为 0 的元素会被直接忽略。
- ios 系统中在移动浏览器的页面中给按钮加 JS 事件,其按钮必须是原生 HTML 按钮或者由 标签自定义构成。
在 IOS 系统中,浏览器只支持给原生 HTML 按钮或 标签加 JS 事件,其他元素默认不开启事件,比如click等,这就导致一部分操作在安卓上正常在ios上异常。当然也有方法可以绕过这个问题,比如直接在html上给元素添加onclick等事件开启事件监控。
- 在移动浏览器中给根元素(例如:html)添加 overflow:hidden,只有在某些安卓自带浏览器(例如华为的自带浏览器)中才有效。
overflow:hidden 这个 CSS 样式是大家常用到的。大家用这个样式可以实现很多目的。其中一个常用的就是隐藏内容溢出,把浏览器的滚动条隐藏。这个在 PC 端浏览中毫无问题。但是除了少数安卓自带浏览器,在大多数移动浏览器中,给根元素(例如:html)添加这个样式就会失效。除非给根元素同时添加有实际数值的高度。为了适应移动端频幕的多种尺寸,只能运用 JS 动态获取视窗的高度,然后给根元素设置相同的高度,方可把移动浏览器的滚动条隐藏。
- 在某些安卓系统手机自带浏览器(例如:华为手机)中,当父级元素是弹性盒子布局时(含有 - webkit-box-flex 属性),其子元素的 margin-bottom 失效,不能撑开父级元素。
直接将外边距(margin)改为内边距 (padding) 就可解决。
- 在 safair 中使用 Date.parse() 解析时间字符串,其格式必须是 YYYY/MM/DD HH:MM:SS。
Date.parse() 方法解析一个表示某个日期的字符串,并返回从 1970-1-1 00:00:00 UTC 到该日期对象(该日期对象的 UTC 时间)的毫秒数,如果该字符串无法识别,或者一些情况下,包含了不合法的日期数值(如:2015-02-31),则返回值为 NaN。
上述是 JavaScript 参考文档的说明。严格来说,其解析的时间字符串必须是 YYYY/MM/DD HH:MM:SS。但是,在 IE、chrome、FF 中,也可以解析 YYYY-MM-DD HH:MM:SS 或者 YYYY.MM.DD HH:MM:SS 这两种非标准格式的时间字符串。而 safari 只能解析标准格式。因此,开发人员在使用这个方法时,最好先把非标准格式转换成标准格式,这样就可以避免兼容问题。
- 在 IOS 系统中 H5 播放器不支持自动播放。
在 iphone 和 ipad 上用 HTML5 播放器时,不能自动播放,apple 的解释说是为用户节省流量。
最好的方法就是在 IOS 系统的浏览器中给页面根元素绑定一次 touchstart 事件播放流媒体文件,模拟自动播放。
- 标准浏览器是只认识 documentElement.scrollTop 的,但 chrome 却不认识这个,在有文档声明时,chrome 也只认识 document.body.scrollTop。
document.body.scrollTop 与 document.documentElement.scrollTop 两者有个特点,就是同时只会有一个值生效。比如 document.body.scrollTop 能取到值的时候,document.documentElement.scrollTop 就会始终为 0;反之亦然。所以,如果要得到网页的真正的 scrollTop 值,可以这样:
// 第一种方式
var scrollTop = document.body.scrollTop + document.documentElement.scrollTop;
// 第二种方式
var scrollTop = document.body.scrollTop > 0 ? document.body.scrollTop : document.documentElement.scrollTop;
// 第三种方式
var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
任选上述其中一种方式都可以解决。
- webkit内核(包括blink)浏览器,文字大小的最小值是12px,而safari浏览器可以设置小于12px的文字大小,如果想要前者也支持12px以下文字,需要用css3的缩放(transform)属性。
PC端浏览器存在的问题
- 我们常说的事件处理时的 event 属性,在标准浏览器其是传入的,IE 下由 window.event 获取的。并且获取目标元素的方法也不同,标准浏览器是 event.**target,而老版本 IE 下是 event.srcElement**
https://developer.mozilla.org/zh-CN/docs/Web/API/Window/event https://developer.mozilla.org/zh-CN/docs/Web/API/Event/srcElement
- 绑定事件方式不同,老版本IE(9以下)使用attachEvent来绑定事件,而其他浏览器使用addEventListener来绑定事件,并且两者表现也不是完全相同。
- 老版本IE基本不支持CSS3和HTML5属性,并且对部分CSS2属性的支持也存在问题。
PC端浏览器兼容移动端浏览器的调整
- PC端页面通过滚动条滚动,而移动端通过手指上下滑动,默认情况下,移动端滑动会给人一种顿挫的感觉,手指一离开页面就停了。需要添加以下属性让移动端页面流畅滚动。
-webkit-overflow-scrolling: touch;
各种浏览器的默认样式不同,需要你通过Normalize.css来统一这些样式,让你的页面各种浏览器上尽量相同。
需要添加meta元素,使页面在移动端正常显示,因为移动端往往是x倍屏,打开网页时,画面往往会变得巨大化。下面代码的作用是让当前
viewport
的宽度等于设备的宽度,同时不允许用户手动缩放。<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">