Web 兼容性指南

Web 开发比较头疼的问题之一就是处理浏览器的兼容性。

  • 首先,HTML、CSS 和 JS 都有不同的版本,各版本的语法不一样。
  • 其次,浏览器有多个厂家,每个厂家对于语言标准的支持也不一样。
  • 最后,浏览器也有不同的版本,每个版本的情况也不一样。

以上这些原因就造成了同一份代码在不同浏览器上表现不一致,简而言之就是兼容性问题

本文主要介绍当前一些常见的兼容性问题以及解决方案,由于博主从事移动端的网页开发,所以会重点介绍移动端的一些兼容性问题。

浏览器介绍

  • 使用 Trident 内核的浏览器:IE、Maxthon、TT;
  • 使用 Gecko 内核的浏览器:Netcape6 及以上版本、FireFox;
  • 使用 Presto 内核的浏览器:Opera7 及以上版本;
  • 使用 Webkit 内核的浏览器:Safari、Chrome。

不过我们这里谈论浏览器的兼容性,主要谈论主流浏览器,如 IE、FireFox 以及 Chrome,因为它们分别属于不同的浏览器内核,所以以它们为例进行讨论。

有人看到这里可能要问,为什么没有 360 浏览器、QQ 浏览器或 UC 浏览器?事实是国内几乎所有浏览器都是使用的上述浏览器内核,只不过外面换了一层皮肤而已。

兼容性说明

对于浏览器的兼容问题,一般分三个方面:

  • HTML 兼容
  • CSS 兼容
  • JavaScript 兼容

大多数我们遇到的兼容性难题是 CSS 某些属性浏览器不支持导致的,这里推荐一个网站 Can I use,可以帮我们检测某个 CSS 属性的浏览器兼容性情况。

例如查看 flex 的兼容性:

flexbox

从网站上搜索的结果来看,IE 10 开始支持 flexbox 布局,但是需要在属性前面添加前缀 -ms-

问题清单

  • 默认样式
  • 盒模型
  • PostCSS
  • Polyfill
  • <meta> 标签处理
  • 1px 边框问题
  • 300 毫秒点击延迟问题
  • 点透问题
  • 图片分辨率问题(@2x与@3x图)

问题详情

默认样式

谈起浏览器兼容性,默认样式可以说是一个最常见的问题。

问题描述

我们可以随便写几个 HTML 标签,让后在不同的浏览器中打开,我们会发现它们的边距、边框、大小等都会有不同。

解决方法

一、简单粗暴

/* 如果要解决默认边距问题,可以采用如下方法 */

* {
   
  padding: 0;
  margin: 0;
}

这种方法有些问题,现在一般不推荐了。一方面 * 导致 CSS 渲染引擎在渲染 CSS 的时候,使用 * 遍历整个 DOM 树,影响性能渲染性能。另一方面 * 的威力太大,管你是谁,统统重置,把很多没有必要的都重置了。

二、引入 reset.css

最先作者是 Eric Meyer,目的是在各个浏览器达到统一的效果。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值