快捷搜索:

浏览器对于含小数值px(像素)解析的差异及小数值

浏览器对于含小数值px(像素)解析的差异及小数值如何解决兼容性问题

  说到解决兼容性问题,不得不提一下css hack,曾几何时我以会使用几个hack沾沾自喜,后来发现自己真是个vip级别的蠢蛋,会用几个hack只是中级阶段,真正厉害的人要以没有hack同样可以实现复杂页面的兼容性,这才叫厉害。所以后来,苦心研究如何无hack实现各个浏览器兼容性俱佳,最核心的就是布局方式,宜采用流动性布局,亦称自适应布局,我自己总结为三无原则:无浮动,无高度,无宽度。神似于武侠里的无招胜有招,忘记招式才是最高境界一样的道理asp学习。好,这个内容很大,洋洋洒洒几万字都说不尽,作罢。我这里就仅仅讲一讲一个可能很多人都没有注意到的浏览器之间的差异,并且如何利用这种差异解决浏览器之间的兼容性问题,这可是个很妙的东西哦,其精神内涵与砒霜治白血病是一致的。

  想必很少有人用小数值作为像素值吧。因为像素就是最小的单位了,要么1,2,3,要么就是0,没有什么小数一说的,表现上也不可能存在小数的。确实,很正确,但今天我就是颗螺丝——卯上了,我就要用小数值,怎么样!好,我们一起来看看结果。见下面的对比图:

  上面一行是11.9像素大小的文字,下面一行是11.4像素大小的文字,看看各个浏览器下都表现得怎么样:

  下面说正题,想必很多做前端的都知道,中文字体规规矩矩显示的下限像素值就是12像素,小于12像素,中文就会有些挤作一团,美感大降。对比上面的图,仔细看,您就会发现,当文字大小11.9像素时,IE6和Firefox等浏览器的表现是不一致的。IE6下显示的是11像素大小的文字效果,而Firefox等w3c标准的浏览器则12像素显示,这就是差异所在,也是本文的关键核心所在。但在12.4像素下,各个浏览器表现都是一致的。

  经过我的反复适应以及项目实践,证实了这个IE(IE8未测)与其他浏览器对于小数像素的解析差异:IE对小数像素采取取整的策略,类似于Math.floor属性,就算你大小为11.999999像素,最后还是显示11像素文字的大小(已测试);而Firefox等一些浏览器则采取四舍五入的策略,类似于Math.round属性,11.4像素就表现为11像素,11.5像素就表现为12像素(已测试)。由于平时很少有人用小数值,所以这种差异很少有人注意,所以很少有人关注。然而这个不起眼的浏览器差异有时候却是解决一些兼容性问题的绝妙武器。

  好,现在我们需要一个存在的兼容性问题。例如,淘宝首页css代码里面有这么一段hack,见下图(图对应淘宝网首页上部搜索选项卡样式):

  这段hack是个相差1像素的hack,用“*”表示区分IE和其他浏览器。好,大展身手的时候来了!刚在我们就提过验证过IE和其他浏览器对小数值的解析是有差异的差异的,准确说是小数点后大于5的小数值像素解析是有差异的,而这个差异正好可以解决这里的兼容性问题,于是这个hack就可以一脚踢掉了。直接改成下面的样式就可以了:

  不仅仅缩短的代码的长度,还节省了一个css hack。首先加载文件小了,其次去掉一个hack,资源消耗少了。不用小看这么一点小小的节省,这可是淘宝网的首页,每天的浏览量可是相当惊人的哦!

  附上demo实例页面验证结果图放大800倍的对比图,从photoshop上沿标尺可以读出padding值,您可以发现IE6下11像素,而Firefox浏览器下12像素。这与hack达到了同样的功效,但是代码却是没有hack,更简短更简明,更神奇,您不妨也试试!

  虽说这个小数值解决一些兼容性问题很神奇,但是它的缺点也很明显,就是适用范围问题,只能解决相差1像素的浏览器差异,只能解决IE下值小1像素的浏览器差异。

  课程开始: 前三节课,我们知道了什么是“内容块状元素和内联元素”,以及XHTML+CSS布局的核心概念“盒子模型”,同时又学习了一下页面布局中两种方法中的一种方法“浮动&...查看详情

  上节课我们将导航条做成了下面的效果但是此时的导航条还没有链接,还不能点击,这节课我们就要做一个完整的导航条【第四步】 我们需要将上面的导航条做以下几个修改 1)给上面的导航加上链接; 2)链接文字大小修改为12px; 3)并且规定链接样式,鼠标移上去和拿开的效果 修改方法如下 1...查看详情

  【第一步 整体布局与公共CSS定义】我们先来分析一下这个页面页面主要分5大块,顶部的Logo、导航条Nav、Banner、Content、Footer,如下图 下载 (116.12 KB)2009-6-1 09:22这样HTML就很容易写出来了复制代码代码如下: <div ...查看详情

  【第七步 内容左侧板块(ContentL)布局】 我们分析一下他的结构,主要包括标题和文章内容两块,并且标题和内容之间有一条虚线,而第二篇文章的内容部分是图片和文字相结合且文字环绕图片。 好~!既然搞清楚结构了,后面我们布局就容易了 我打算标题用<h1>标签,为什么这...查看详情

  如果下面的文字实在是无法理解透,那就记住这节课最后总结的一句话“如果用position来布局页面,父级元素的position属性必须为relative,而定位于父级内部某个位置的元素,最好用absolute,因为它不受父级元素的padding的属性影响,当然你也可以用...查看详情

  如果你还是不能太明白这句话,我们就做个实例,把我们第5节页面的头部blog区域用定位(position)来布局一下 HTML代码和原来的没有区别: 复制代码代码如下: <div id=Logo> <a href=# id=logoLink>&l...查看详情

  说到浏览器兼容性问题,就必须说CSS Hack!提到Hack大家肯定会想到电脑黑客(hacker)、和病毒程序联系到一块,不过在CSS中,Hack是指一种兼容CSS在不同浏览器中正确显示的技巧方法。说的更直白一些就是,你平时做个页面,布局正确,CSS正确,可就是在不同的浏览器中显...查看详情

  代码如下: HTML代码: 复制代码代码如下: <a id=theLink></a> CSS代码: 复制代码代码如下: #theLink{ display:block;/*因为标签a是内链元素,所以利用这句话将内链元素转化成块状元素,后面的width和...查看详情

  前言为了帮助确保你的网页在所有未来的IE版本都有一致的外观,IE8引入了文件兼容性。在IE6中引入一个增设的兼容性模式,文件兼容性使你能够在IE呈现你的网页时选择特定编译模式。新的IE为了确保网页在未来的版本中都有一支的外观,IE8引入了文件兼容性。当你引入一个增设的兼容性模式,...查看详情

  使用CSS来修饰滚动条 1.overflow内容溢出时的设置 overflow-x水平方向内容溢出时的设置 overflow-y垂直方向内容溢出时的设置 以上三个属性设置的值为visible(默认值)、scroll、hidden、auto。 2.scrollbar-3d-ligh...查看详情常用asp代码大全图片及名称下载网站免费安装软件常用asp代码大全图片下载网站安卓手机怎么下载软件

您可能还会对下面的文章感兴趣: