看到标题也许有些人要疯了,都什么年代了还用quirksmode?本来我也是持有这种想法的,不过在工作中真正使用过一次之后,感觉还是很不错。

首先说一下背景。现在又是一个浏览器大战的时代,ie6,7,8,9  Firefox 3.6,4  Chrome , Opera 10,11,还有好多好多不知名的小牌浏览器,历史上从来没有如此丰富过。丰富的浏览器促进了行业的发展,但同时也为前端开发带来巨大的挑战,我们的产出必须要经过大部分浏览器的测试。万幸的是,除ie以外的浏览器,基本上渲染上大同小异,可以合并为一个调试。问题就在于ie,现在的发行版本6,7,8,9,可能存在每个浏览器都渲染的不一样的情况。特别是对于一些要求精细的应用,各种几像素的偏差往往很伤脑筋。

这个时候,也许考虑一下quirksmode,一切又会不一样。在quirksmode下,所有大于5.5版本的ie浏览器,都会降级到5.5版本,以5.5的渲染方式去渲染页面。也就是会出现怪异的盒模型等等问题。但是,其实换个角度想想,所有ie的平台又统一了。我们现在只需要编写两套样式,一套给在quirksmode下的ie,一套给标准浏览器,就万事大吉。

更进一步,我们会发现css中有这么一个属性——box-sizing。它有两个取值,border-box & content-box。如果给设置为border-box,则会按照怪异模式盒模型去渲染,content-box则是w3c的盒模型。 其实对于怪异模式和标准模式,一个很大的区别就是盒模型上的解析不同。给所有元素设置一个box-sizing:border-box,把标准盒模型切换到了怪异盒模型上,也相当于我们把刚才的两套模式相互拉近了一大步。

实际操作中,对于复杂精细的应用,这样会节省大量的调试时间。特别是现在比较有用的选择器、各种特效,都是基本不支持ie6的。各种ie5.5的渲染bug,我们在ie6也几乎都会遇到。在ie6还不能放弃的现在,我们本来写的也是一套很古老的、充满各种bug fix的css文件,何不更古老一点,换回的是兼容性更强、hack更少的代码,还是有很强的可操作性的。

关于quirksmode的具体描述,可以参见ppk的文章:http://www.quirksmode.org/css/quirksmode.html

box-sizing 参见: http://www.quirksmode.org/css/box.html

转载于:https://www.cnblogs.com/demix/archive/2010/12/11/1902759.html

使用quirksmode来简化开发相关推荐

  1. 分享13个帮助你简化开发的jQuery插件

    为什么80%的码农都做不了架构师?>>>    日期:2012-7-23  来源:GBin1.com jQuery的社区力量的重要体现就是jQuery插件,我们每隔一段时间就会在jQ ...

  2. 使用Lombok简化开发及无效解决方案

    使用Lombok简化开发 介绍 △Lombok是什么 Lombok是一款小巧的代码生成工具.官方网址:http://projectlombok.org/ LomBok主要特性有:自动生成默认的gett ...

  3. java xfire webservice 异步_[Java教程]Java中使用webservice,简化开发(xfire的webservice)...

    [Java教程]Java中使用webservice,简化开发(xfire的webservice) 0 2016-01-07 15:00:11 首先,使用到的jar先导入项目中, xbean-sprin ...

  4. fastjson maven依赖_Spring Boot 使用 Maven 定制一个 parent 简化开发

    1/ 场景 有很多小应用,有一些公共的特点,比如说都依赖了spring-boot.log4j2.lombok.fastjson等等,为了方便开发,可以使用Maven定制一个parent来简化开发,统一 ...

  5. 2万字总结《MybatisPlus—为简化开发而生》

    <MybatisPlus-为简化开发而生> 文章目录 <MybatisPlus-为简化开发而生> 1.简介 2.特性 3.快速入门 1.创建数据库`mybatis-plus` ...

  6. 简化开发流程--UEditor富文本编辑器

    为了减少开发成本,简化开发流程.百度为开发者们提供了一款UEditor文本编辑器,下面我们一起来学习如何使用UEditor进行开发. 这里是UEditor的下载地址:https://ueditor.b ...

  7. cesium雷达图_20个简化开发任务的 JavaScript库

    所谓JavaScript库就是预先写好的可以简化基于JavaScript的应用程序开发的,尤其是Ajax和其它以web为中心的技术的 JavaScript代码集.JavaScript主要用于写内嵌于H ...

  8. SpringBoot最佳实践-Lombok简化开发

    Lombok 简化JavaBean开发 <dependency><groupId>org.projectlombok</groupId><artifactId ...

  9. 入职开发很少写代码_如何简化开发人员入职:将开发环境作为代码

    入职开发很少写代码 Imagine that only a decade ago system administrators deployed, configured, and maintained ...

最新文章

  1. Navicat添加新数据、保存当前修改
  2. Datawhale组队学习周报(第032周)
  3. R语言sign函数判断数值为正数或者负数实战
  4. vue组件间的传值方式及方法调用汇总
  5. EOS 源代码解读 (2)插件-插件模板
  6. MD5加密解密简介和应用
  7. PPT幻灯片转换成word的软件
  8. android广播代码汇总一__无序广播
  9. 目标检测——COCO数据集上SOTA模型的学习笔记
  10. excel的操作中,需要将特定的符号(如逗号)全部替换成软回车
  11. 利用装饰器实现mock和api的局部分离切换
  12. Android10动态权限提前,Unity2019中的android动态申请权限(Permissions)
  13. 无线通信基础(一):无线网络演进
  14. 十字链表存储稀疏矩阵
  15. python迅雷下载任务出错_迅雷任务包含违规内容无法继续下载 迅雷任务出错修改host方法...
  16. k8s中各组件和kube apiserver通信时的认证和鉴权
  17. 海康USB摄像头----MV-CAO13-21UM工业摄像头的调用---python实现
  18. Ubuntu16.04安装gazebo8并加载模型库
  19. 脚本不得关闭非脚本打开的窗口。Scripts may close only the windows that were opened by it...
  20. 阿里云镜像站DNS——Linux配置方法

热门文章

  1. stm32 串口通信数据移位寄存器_STM32串口接RS485丢码问题已解决*_*
  2. cif t t操作流程图_Danish:STATA 操作正态检验、卡方检验和T检验
  3. 停车场管理系统linux实现,基于Linux的停车场管理系统的设计与实现
  4. 用计算机模仿真实系统的技术叫,计算机模拟技术.pdf
  5. mysql io 100_MySQL服务器 IO 100%的案例分析
  6. oledb连接服务器的文件,请教OLEDB链接和ODBC链接连接的不同和对系统的要求...
  7. android设计风格是什么软件下载,基于MaterialDesign设计风格的妹纸app的简单实现
  8. 最大子串和 python_5. 最长回文子串(Python)
  9. visual foxpro 程序员指南_1024程序员节:盘点小红书今年发生的重要bug
  10. win10无法修改mac地址_路由器无线MAC地址过滤如何设置