众所周知,IE有一个经典的“差了2像素”的问题,现在在IE9的第四个平台预览中这个问题已经可以解决了!

不过有一个前提是,你必须“IE9标准模式”打开网页才行,默认情况下如果一个网页的DTD是“<!DOCTYPE html>”,“IE9标准模式”就会启用。

好吧,IE的“2像素”偏差主要是来自于那个浏览器显示区域的那个鸡肋的“内陷”边框,正好2像素宽。有意思的是刚才我跟一个朋友提起这件事他居然大惊“原来是历史遗留问题么”XD

其实在从这个2像素偏差的问题刚引起广泛关注的时候,就有一些人注意到把body的边框干掉就没问题了。

可是从IE6到IE8一直有一个问题就是标准模式下body的边框并不是浏览器内容区的边框,而是另有所指,当时还有一些其它方面的原因综合在一起,都是阻碍了Web标准化进程的因素——从这个角度来说,IE真是罪该万死。

补充:经3楼“司徒拔's Paradise”提醒后,我发现在IE6中可以通过为html元素设置css边框规则来消除这个多余的凹陷边框;但在IE8中仍然不行(手头没有IE7暂时没法测试)。

而现在IE9的新“IE9标准模式”(真拗口)会干脆不显示这个边框,于是这个2像素偏差的问题也就解决了。

有些人可能早就注意到在“IE9标准模式”中那个内陷边框已经被干掉了,但是看起来在IEBlog特别提起这件事之前很多人还没发现2像素的问题已经解决了呢。我也没发现XD


在前两天的一些讨论中有人提到了使用闭包来确保代码的完整性——虽然当时有些偏题,但我自己也是很喜欢这个技巧的。

我习惯的写法和常见的写法稍微有一点差别,但那只是一两个字符的差别,所以我也一直不觉得有什么必要特意去提。

鉴于这篇博文只说“2像素”的问题字数实在太少,就在这里把这个技巧也提一下吧。

单纯以创建作用域为目的的保护性的闭包,一般来说是写成这样的:

(function(){/* ... */
})();

由于以function关键字开头的语句会被一些JavaScript引擎当作函数声明,所以在这个“看起来像是声明”两边加上括号表示“这是一个函数表达式”让它能够正常工作。

但是增加一对括号两个字符的做法总让我觉得不太舒服,所以经过一些小小的摸索之后我开始采用这种写法:

!function(){/* ... */
}();

少了一个字符之后,我觉得舒服多了,虽然本质上说只是减少了一个字符而已,实际运行起来还要因为多一个逻辑运算而多耗费一点时间——不过我想对于一个包含了大量代码内容的闭包来说多一个逻辑否并不会有太大影响,就一直这样用了。

当然啦,你可能并不同意我的看法,而采用较为谨慎的括号写法。

也许有人会对这个“!”感到困惑,比方说“函数的逻辑否不应该是false吗”?

其实跟采用括号的原因一样,这里用了感叹号只是想告诉解释器“这里是一个函数表达式,不是一个函数声明语句”;

而“!”的操作优先级也是低于“()”这个表示“执行”的操作符的。

在ECMAScript中,操作优先级最高的是“关系操作(运算)符”,也就是表示成员的“.”、“[]”和表示执行的“()”,接着才是“一元操作(运算)符”,包括表示逻辑否的“!”在内。

所以,就算是把“!”写在开头,也不会影响到后面函数的执行。

转载于:https://www.cnblogs.com/NanaLich/archive/2010/08/24/ie9-the-2px-issue-resolved.html

IE的2像素偏差问题终于“将要”成为历史了(附js微技巧一则)相关推荐

  1. 2022,Go终于出八股文了(附100例代码实例)

    Go最近动静挺大的,刚刚发布的1.18包含以下几大特性: 1.泛型 2.模糊测试(Fuzzing) 3.工作空间(Workspaces) 4.20% 性能提升:Apple M1.ARM64 和 Pow ...

  2. 像素射击服务器维护公告图片,像素射击怎样导入自定义头像 - 历史资讯网

    本次给大家带来的是像素射击中自定义头像的使用方法,不少玩家发现别人用的是自定义的头像,但是游戏里并没有能够换自定义头像的地方,那这是怎么做到的呢?下面给大家讲解一下相关方法. 首先需要的条件如下 1. ...

  3. 变态跳台阶,很难很难,终于想出来了,附推导过程,为自己鼓掌

    https://www.nowcoder.net/practice/22243d016f6b47f2a6928b4313c85387?tpId=13&tqId=11162&tPage= ...

  4. Java的序列化特性将要退出历史舞台了

    甲骨文公司正计划将安全方面的一大棘手难题对象序列化功能从Java当中剔除出去.这项功能亦被称为Java对象序列化,主要用于将对象编码为字节流形式.除了用于轻量化持久性与通过套接字或Java RMI进行 ...

  5. 1024 程序员节狂欢盛会,等了一年终于来了(内附大会日程)

    风起岳麓,扶摇而上,约战湘江,谁与争锋!以"算力新时代·开源创未来"为主题的第三届 2022 长沙·中国 1024 程序员节于 10 月 23 日 - 25 日强势来袭!院士领衔. ...

  6. 终于有人来盘一盘安卓ASO技巧了,安卓市场aso优化技巧

    ASO,即应用商店优化,主要是提高APP在应用市场的关键词覆盖量,优化APP在应用市场的关键词排名和榜单排名. 大家一谈到ASO,不少人反应大多数是苹果iOS市场的优化,但其实安卓也是不可分割的大市场 ...

  7. 历时半年,我终于阿里上岸了,附面经和Java非科班学习心得

    个人经历 本科双非化学,跨考了电子硕士,研究生依然双非.无互联网实习,无比赛无论文.(研究生研究方向是车辆电子和楼宇自动化,有自动化和高校实训讲师相关的实习经历) 21年11开始学Java准备秋招. ...

  8. 无处不在的流计算到底是什么?终于有人讲明白了(附导图)

    导读:两千多年以前,孔老夫子站在大河边,望着奔流而去的河水,不禁感叹:"逝者如斯夫,不舍昼夜."老夫子是在叹惜着韶华白首,时光易逝! 两千多年以后的今天,当你我抱着手机读书.追剧. ...

  9. 在线视频应用:flash播放器换html5播放器常见的问题汇总

    谷歌Chrome 53产品的更新时屏蔽了部分Flash特定应用,Chrome 55浏览器将自动默认使用HTML 5视频,Chrome 58时直接以默认的方式禁止运行flash,至此,曾经无处不在的fl ...

最新文章

  1. windows下多版本python安装与pip安装和pip使用 吐血总结
  2. 详解基于CentOS6.2下DNS主从复制搭建与部署
  3. Scala集合与Java集合的对比
  4. qsort()编译器自带快速排序的用法
  5. LeetCode MySQL 1264. 页面推荐(union)
  6. Mac上设置图片或视频的默认打开软件的方法
  7. IO多路复用之select、poll、epoll介绍
  8. Iframe和母版页(.net)
  9. Unity读取TXT文本文件
  10. 微信小程序生成跳转体验版二维码
  11. 反编译软件JD-GUI
  12. Git 使用tag标签
  13. 高等数学笔记-乐经良老师-第六章-微分方程
  14. c语言.jpg图片转成数组_Heic图片格式转换器
  15. 儿童身高体重健康对照表
  16. 笨方法学Python—ex42:对象、类及从属关系
  17. 不做etl sql 怎么直接取_不管茄子怎么做,直接下锅是大错!多加1步,茄子更入味,不变色...
  18. 利用pandas自动化办公填表
  19. 任务管理器Recent
  20. “统信杯” 第十七届黑龙江省大学生程序设计竞赛 Let‘s Swap

热门文章

  1. C盘不够用了怎么办,看我4年未重做系统如何清理出25G的temp磁盘空间?
  2. ASP.NET Core微服务(二)——【ASP.NET Core Swagger配置】
  3. MySQL5.6 Waiting for Commit Lock
  4. MongoDB管理:慎用local、admin数据库
  5. linux系统时间修改及同步
  6. 从未后悔认识你,只是不知如何面对分开的结局
  7. python相关工具
  8. java io读书笔记(2)什么是stream
  9. Tomcat源码解读系列(二)——Tomcat的核心组成和启动过程
  10. 三角网导线平差实例_网平差三角网三边导线网.doc