<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[IE8 - 葵中剑]]></title><description><![CDATA[Just Sword Wang's Blog]]></description><link>https://swordair.com/</link><image><url>https://swordair.com/favicon.png</url><title>IE8 - 葵中剑</title><link>https://swordair.com/</link></image><generator>Ghost 3.42</generator><lastBuildDate>Sat, 17 Dec 2022 16:59:45 GMT</lastBuildDate><atom:link href="https://swordair.com/tag/ie8/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[一个IE8的新起点]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>上周，淘宝宣布不再支持IE6以及IE7，作古的浏览器访问淘宝会看到升级浏览器的提示，当真算得上是一个时代的终结，而这个时间点距离我自己写的<a href="http://swordair.com/goodbye-to-dying-ie6-and-ie7/">告别垂死的IE6与IE7</a>足近5年之多。作为从IE6时代一路走来的前端工作者，在这样的变迁交汇点难免徒生各种感慨，还有——落寞。</p>
<p>怀着复杂的心理我们需要告别日以继夜为之奋斗的抑或是狂喜抑或是抓狂的岁月，努力甩开在某种程度上已经充当技术壁垒的浏览器兼容，现在开始，将是一个IE8开始的新起点。</p>
<p>甩开IE6和IE7，web开发者特别是前端得到了哪些解放？为此我简单罗列了一些最为<strong>常见</strong>的情况。</p>
<ul>
<li><strong><code>inline-block</code></strong>，我们终于可以摆脱<code>*display:inline;*zoom:1;</code>的诅咒，自由使用这个常见的属性。</li>
<li><strong><code>box-sizing</code></strong>，IE8+使得border-box可以开始发挥它的威力，虽然低版本firefox可能还会遇到些问题，但我相信我们可以说服测试同学，因为已经没有IE的阻挠。</li>
<li><strong><code>:before</code> <code>:after</code> 伪元素</strong>，终于可以自由使用这两个常用的伪元素，IE8虽然只是部分支持，但绝大多数使用场景已无问题。</li>
<li><strong><code>display:table-cell</code></strong>，表格展现可以开始用其他结构模拟了，当然还有万年话题“垂直居中”也终于不再是话题。</li>
<li><strong>更少的浮动bug</strong>，总而言之，不是没有浮动bug，但危害已经变得非常可控。</li></ul>]]></description><link>https://swordair.com/new-beginning-of-ie8/</link><guid isPermaLink="false">59fe0cf19855590d8c9147cb</guid><category><![CDATA[IE8]]></category><dc:creator><![CDATA[Sword Wang]]></dc:creator><pubDate>Sun, 17 Apr 2016 13:12:17 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>上周，淘宝宣布不再支持IE6以及IE7，作古的浏览器访问淘宝会看到升级浏览器的提示，当真算得上是一个时代的终结，而这个时间点距离我自己写的<a href="http://swordair.com/goodbye-to-dying-ie6-and-ie7/">告别垂死的IE6与IE7</a>足近5年之多。作为从IE6时代一路走来的前端工作者，在这样的变迁交汇点难免徒生各种感慨，还有——落寞。</p>
<p>怀着复杂的心理我们需要告别日以继夜为之奋斗的抑或是狂喜抑或是抓狂的岁月，努力甩开在某种程度上已经充当技术壁垒的浏览器兼容，现在开始，将是一个IE8开始的新起点。</p>
<p>甩开IE6和IE7，web开发者特别是前端得到了哪些解放？为此我简单罗列了一些最为<strong>常见</strong>的情况。</p>
<ul>
<li><strong><code>inline-block</code></strong>，我们终于可以摆脱<code>*display:inline;*zoom:1;</code>的诅咒，自由使用这个常见的属性。</li>
<li><strong><code>box-sizing</code></strong>，IE8+使得border-box可以开始发挥它的威力，虽然低版本firefox可能还会遇到些问题，但我相信我们可以说服测试同学，因为已经没有IE的阻挠。</li>
<li><strong><code>:before</code> <code>:after</code> 伪元素</strong>，终于可以自由使用这两个常用的伪元素，IE8虽然只是部分支持，但绝大多数使用场景已无问题。</li>
<li><strong><code>display:table-cell</code></strong>，表格展现可以开始用其他结构模拟了，当然还有万年话题“垂直居中”也终于不再是话题。</li>
<li><strong>更少的浮动bug</strong>，总而言之，不是没有浮动bug，但危害已经变得非常可控。</li>
<li><strong>部分外观可控的select组件</strong>，模拟select组件在响应式的体验很难完美，对于select有了更多的控制权的现在，还有什么理由单纯因为外观需要去模拟呢？</li>
<li><strong><code>:first</code> <code>:last</code> 伪类</strong>，虽然很希望能从<code>nth-child</code>开始，但很遗憾IE8+的起点只能是<code>:first</code>和<code>:last</code>，但这真的也已经非常不错了。</li>
<li><strong>更正常的z-index</strong>，也许我们有时还在为IE6&amp;7的z-index的部分问题而困扰，那么看来以后我们又可以多保住几根珍贵的头发了:)</li>
</ul>
<p>如果说IE9是微软开始拥抱标准的开始，那么IE8可以说是IE开始显得比较正常的开端。当xp系统远去，带走的是系统默认浏览器IE6，那么究竟何时，我们才能等到IE8的末路？也许还需要5年吧，虽然我觉得这次应该用不了这么久。</p>
<p>已经没有过多时间来叹息已经成为历史的东西了，即便那是我们曾经逝去的青春。web走向何方我们依旧需要用自己的双脚全力追赶并跟上节奏，才能见证这一切的玄妙变迁。</p>
<p>BGM @ Wild Side by Roberto Cacciapaglia</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[IE Alpha Filter Bug: #02050a色值像素透明化]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>IE的透明滤镜bug算的上是IE为数众多bug里的不起眼的角色，直到之前我确实的遇到了它，我想我根本不会去关注非标准的IE滤镜带来的各种问题。这个bug的表现非常的直观，filter透明度渐变后，图片的某些点变成了透明的了！比如如果这个时候背景是白的，就是白色的噪点。这在banner切换时表现的非常明显——渐变是产生噪点，渐变完成后噪点也会一直残留：</p>
<p><img src="https://swordair.com/content/images/2013/Dec/ie_alpha_filter_bug.jpg" alt="ie alpha filter bug"></p>
<p>这个Bug在IE6 7 8里都存在，实际上只要使用了透明滤镜就会表现出来，并且非常有趣的是，它只对一种颜色值有反应：<strong>#02050a</strong></p>
<p>为什么是这个颜色？恐怕只有微软才知道。一开始我只是以为只有一些偏黑色的图片会出现这样的情况，但后来经过一系列测试我才发现原来出现的噪点如此固定以至于所有噪点所在的像素点原来的色值都是#02050a，决然不是巧合。然后，如果google这个&quot;#02050a&quot;，就能找到关于它的各种文章了，可以说这个色值就是这个bug的关键字。</p>
<p><strong>原因是IE6 IE7 IE8在对JPG图像应用透明滤镜时，会将特定色值#02050a的像素点转换成完全透明的点</strong>。仅限于JPG图像，PNG以及GIF并不存在这个问题。目前，这个经典bug微软并没有什么解释，对于偶然遇到这个问题的<strong>解决方案</strong>也就无非下面几种：</p>
<ul>
<li>不使用JPG，当然很多时候必须使用。</li>
<li>在图像中避免色值#02050a，这又是比较难做到的，因为JPG压缩造成的色值抖动无从控制，而偏偏JPG又是bug的一个成因。</li></ul>]]></description><link>https://swordair.com/ie-alpha-filter-bug-pixel-color-value-02050a-transparency/</link><guid isPermaLink="false">59fe0cf19855590d8c91471a</guid><category><![CDATA[IE6]]></category><category><![CDATA[IE7]]></category><category><![CDATA[IE8]]></category><category><![CDATA[IE]]></category><category><![CDATA[Bug]]></category><dc:creator><![CDATA[Sword Wang]]></dc:creator><pubDate>Wed, 12 Oct 2011 21:18:43 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>IE的透明滤镜bug算的上是IE为数众多bug里的不起眼的角色，直到之前我确实的遇到了它，我想我根本不会去关注非标准的IE滤镜带来的各种问题。这个bug的表现非常的直观，filter透明度渐变后，图片的某些点变成了透明的了！比如如果这个时候背景是白的，就是白色的噪点。这在banner切换时表现的非常明显——渐变是产生噪点，渐变完成后噪点也会一直残留：</p>
<p><img src="https://swordair.com/content/images/2013/Dec/ie_alpha_filter_bug.jpg" alt="ie alpha filter bug"></p>
<p>这个Bug在IE6 7 8里都存在，实际上只要使用了透明滤镜就会表现出来，并且非常有趣的是，它只对一种颜色值有反应：<strong>#02050a</strong></p>
<p>为什么是这个颜色？恐怕只有微软才知道。一开始我只是以为只有一些偏黑色的图片会出现这样的情况，但后来经过一系列测试我才发现原来出现的噪点如此固定以至于所有噪点所在的像素点原来的色值都是#02050a，决然不是巧合。然后，如果google这个&quot;#02050a&quot;，就能找到关于它的各种文章了，可以说这个色值就是这个bug的关键字。</p>
<p><strong>原因是IE6 IE7 IE8在对JPG图像应用透明滤镜时，会将特定色值#02050a的像素点转换成完全透明的点</strong>。仅限于JPG图像，PNG以及GIF并不存在这个问题。目前，这个经典bug微软并没有什么解释，对于偶然遇到这个问题的<strong>解决方案</strong>也就无非下面几种：</p>
<ul>
<li>不使用JPG，当然很多时候必须使用。</li>
<li>在图像中避免色值#02050a，这又是比较难做到的，因为JPG压缩造成的色值抖动无从控制，而偏偏JPG又是bug的一个成因。要避免使用到这个色值唯一的做法可能是用色阶把图片稍微调亮一些。</li>
<li>调整图片的背景到色值#02050a，这样做的目的是透明化的像素直接看到的是背景，多少可以避免一些视觉上的影响</li>
<li>停止使用滤镜，这点似乎也不可能，但至少我们可以在渐变结束之后移除滤镜，而不是任其停留在 alpha(opacity=100) 而无所作为。这样做的好处是，可以保证图片在渐变结束之后，不再显示残留的噪点。<code>obj.style.filter = '';</code></li>
</ul>
<p>实际上，黑色图片的使用本来就相对较少，所以可能永远都不会遇到这个问题。但是一旦遇到，#02050a就会像灾星一样跟着你让你觉得很不舒服。</p>
<p>最后，在我的测试过程中还发现了一个<strong>有趣的现象</strong>：无论是在一开始还是在bug产生之后，使用浏览器的缩放，即Ctrl + 然后 Ctrl -，或者按住Ctrl滚动滚轮，那么这个bug就会自动消失！并且在页面刷新之前都不会再存在！</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[博客放弃兼容IE6以及IE7]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>就在几天前，WordPress宣布在最近一次的更新里不在支持IE6，这一举措加速了IE6的死亡。虽然我的博客早已经在顶部挂起公告，希望IE6和IE7的用户能升级他们的浏览器，但其实仍然安分地继续做着尽可能的IE6兼容。不过这次真的打算放弃了，既然连wordpress都宣布了不支持IE6，维护者也不应该拘泥下去，尽管我的wp版本始终是2.9.3...</p>
<p>IE6是伟大的，2001年8月发布，到现在10年时间，寿命之长恐怕真的是要空前绝后了。虽然web开发者对IE6深恶痛绝，但同时却也不能忘记IE6给开发者带来的价值——它曾经一度提高了web开发的门槛，虽然幅度有限。所以前端对IE6的感情是复杂的，失去了眼中钉的同时，也失去了一个挑战的舞台——<strong>IE6总能给我们惊喜，不管那惊喜是不是我们想要的</strong>——当然通常不是。</p>
<p>国内的IE6仍然是大多数，虽然系统升迁win7导致IE8也不少，但若要国内的网站放弃IE6远远还不够——甚至我自己的系统里就是IE6。根据5月份<a href="http://www.sitepoint.com">sitepoint</a>的浏览器市场份额报告，IE6的比例已经下降到了4.37%，不过在国内恐怕在这后面加个数字都不止。其他IE版本里，IE7占9.78%，IE8占30.20%，IE9占0.75%，可见正常情况IE8才是最为流行的IE</p>
<p>我的网站IE占比34.57%，其中IE6占比23.22%，也就是说，我的网站IE6占比7.</p>]]></description><link>https://swordair.com/abandon-compatible-to-ie6-and-ie7/</link><guid isPermaLink="false">59fe0cf19855590d8c914707</guid><category><![CDATA[Blog]]></category><category><![CDATA[IE6]]></category><category><![CDATA[IE7]]></category><category><![CDATA[IE8]]></category><category><![CDATA[IE9]]></category><dc:creator><![CDATA[Sword Wang]]></dc:creator><pubDate>Sun, 29 May 2011 16:54:29 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>就在几天前，WordPress宣布在最近一次的更新里不在支持IE6，这一举措加速了IE6的死亡。虽然我的博客早已经在顶部挂起公告，希望IE6和IE7的用户能升级他们的浏览器，但其实仍然安分地继续做着尽可能的IE6兼容。不过这次真的打算放弃了，既然连wordpress都宣布了不支持IE6，维护者也不应该拘泥下去，尽管我的wp版本始终是2.9.3...</p>
<p>IE6是伟大的，2001年8月发布，到现在10年时间，寿命之长恐怕真的是要空前绝后了。虽然web开发者对IE6深恶痛绝，但同时却也不能忘记IE6给开发者带来的价值——它曾经一度提高了web开发的门槛，虽然幅度有限。所以前端对IE6的感情是复杂的，失去了眼中钉的同时，也失去了一个挑战的舞台——<strong>IE6总能给我们惊喜，不管那惊喜是不是我们想要的</strong>——当然通常不是。</p>
<p>国内的IE6仍然是大多数，虽然系统升迁win7导致IE8也不少，但若要国内的网站放弃IE6远远还不够——甚至我自己的系统里就是IE6。根据5月份<a href="http://www.sitepoint.com">sitepoint</a>的浏览器市场份额报告，IE6的比例已经下降到了4.37%，不过在国内恐怕在这后面加个数字都不止。其他IE版本里，IE7占9.78%，IE8占30.20%，IE9占0.75%，可见正常情况IE8才是最为流行的IE</p>
<p>我的网站IE占比34.57%，其中IE6占比23.22%，也就是说，我的网站IE6占比7.73%，其实比例也已经相当低。</p>
<p><img src="https://swordair.com/content/images/2013/Dec/ie_share.png" alt="ie share"></p>
<p>至于IE7，虽然相对于IE6有所改进，但遗憾的是其引入了很多新的问题，导致往往IE6正常的情况下IE7反而令人费解。我不喜欢IE7，但容忍IE6，试想一个10年的浏览器，我还能奢求什么呢？它出生的时代满足了当时的需求，这就足够了。但IE7显然不够资格让人们容忍，幸好它不随任何一个操作系统发布，不然完全能和IE6一起称霸非标准web领域。——结论是这两者果然还是要一起放弃支持啊！</p>
<p>自IE9开始拥抱标准以来，标准的形势已经越来越明朗。最近各大浏览器都死命的在飙版本号——特别是Chrome，也许到明年都Chrome20了也说不定~但这样一种浪潮不正显得浏览器市场欣欣向荣么？不过开发者恐怕也要紧跟着折腾了。过几天撤了虚拟机里的XPwithIE6&amp;7，剩下数G空间——当然我只是在为下载腾地方罢了。</p>
<p>为了某某.avi的磁盘空间而删掉自己的调试虚拟机因而说神马不支持IE6和IE7，是多么的有说服力的理由啊~~！</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[漫谈font-size]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>起因是下面的这句话：</p>
<pre><code>font-size: 75%; /* Resets 1em to 11px */
</code></pre>
<p>这是我曾经喜欢的wordpress主题 Bito 的第一句CSS。印象里还是记得默认值是16px，那么75%就是12px了。不过这只是表面问题，其实大部分人都不怎么关系字体大小的本质。</p>
<h2 id>从标准看起</h2>
<p><a href="http://www.w3schools.com/css/pr_font_font-size.asp">W3Cschools的font-size参考</a>相当简单，只是简单的列举了属性的可取值。并且<a href="http://www.w3.org/TR/2009/CR-CSS2-20090908/fonts.html#propdef-font-size">CSS2.1 Specification RC20090908</a>里，关于font-size的定义也并不多。</p>
<p>大体上，font-size的值非常宽泛，即可以是关键词定义的绝对值，可以是百分比或者 em 的相对值，还可以是绝对单位px。在实际工作中，我自己都似乎快习惯于用px定义字体大小，很少使用到那些关键字或者比例，但可能这不是个好习惯。回想自己学习CSS的过程里的例项，大部分都是用em或者百分比的。</p>
<h2 id="px">关于px</h2>
<p>对font-size直接应用px值，这样做非常精确，而且也方便，所以我们习以为常。当对font-size赋予px值意味着浏览器将会把文本渲染成指定的像素那般高。并且通常情况是，西文字符在9px以下、中文字符在12px以下时，文字将难以辨认。使用像素单位的主要问题是两个：</p>]]></description><link>https://swordair.com/discussion-on-font-size/</link><guid isPermaLink="false">59fe0cf19855590d8c9146d6</guid><category><![CDATA[Chrome]]></category><category><![CDATA[CSS]]></category><category><![CDATA[FireFox]]></category><category><![CDATA[IE8]]></category><category><![CDATA[Opera]]></category><category><![CDATA[Safari]]></category><category><![CDATA[Windows]]></category><category><![CDATA[XHTML]]></category><dc:creator><![CDATA[Sword Wang]]></dc:creator><pubDate>Wed, 07 Jul 2010 16:16:24 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>起因是下面的这句话：</p>
<pre><code>font-size: 75%; /* Resets 1em to 11px */
</code></pre>
<p>这是我曾经喜欢的wordpress主题 Bito 的第一句CSS。印象里还是记得默认值是16px，那么75%就是12px了。不过这只是表面问题，其实大部分人都不怎么关系字体大小的本质。</p>
<h2 id>从标准看起</h2>
<p><a href="http://www.w3schools.com/css/pr_font_font-size.asp">W3Cschools的font-size参考</a>相当简单，只是简单的列举了属性的可取值。并且<a href="http://www.w3.org/TR/2009/CR-CSS2-20090908/fonts.html#propdef-font-size">CSS2.1 Specification RC20090908</a>里，关于font-size的定义也并不多。</p>
<p>大体上，font-size的值非常宽泛，即可以是关键词定义的绝对值，可以是百分比或者 em 的相对值，还可以是绝对单位px。在实际工作中，我自己都似乎快习惯于用px定义字体大小，很少使用到那些关键字或者比例，但可能这不是个好习惯。回想自己学习CSS的过程里的例项，大部分都是用em或者百分比的。</p>
<h2 id="px">关于px</h2>
<p>对font-size直接应用px值，这样做非常精确，而且也方便，所以我们习以为常。当对font-size赋予px值意味着浏览器将会把文本渲染成指定的像素那般高。并且通常情况是，西文字符在9px以下、中文字符在12px以下时，文字将难以辨认。使用像素单位的主要问题是两个：</p>
<ol>
<li>当把文字设定为固定px值后，IE6以下浏览器将不能对其缩放。</li>
<li>固定尺寸后失去级联特性。</li>
</ol>
<p>老外的眼里，第一点似乎是个大问题，因为他们把网站的可访问性和易用性看的很重，无法看清字几乎是不能容忍的。而第二点，只要不做弹性布局或者设置字体调节器之类的应用，并且针对的只是显示器，也就不是大问题。这恐怕也是导致px这么泛滥的原因。好用，简单，并且最重要的是——精确。</p>
<p>但是对于易用性来说，px似乎不是个好东西。<br>
<a href="http://www.w3.org/TR/1999/WAI-WEBCONTENT-19990324/#tech-relative-units">W3C Web 可访问性指南</a>：在标记语言的属性值和样式表属性值里使用相对单位而不是绝对单位。[...]比如，在CSS里，使用 ‘em’ 或者 百分比长度 而不是使用绝对单位 ‘pt’ 或者 ‘cm’ 。</p>
<h2 id>百分比的使用</h2>
<p>百分比和em都是相对值，相对于父元素的字体大小。1em等于1个字体的大小，<a href="http://css-tricks.com/">Chris Coyier</a>认为em是基于大写字母 M 的宽度(除此以外，我找不到更好的参考)。使用百分比和em可以很好使得各个元素间产生级联的比例关系。</p>
<p>鉴于windows的浏览器，默认的字体大小是medium，即 16ppem (后面会讲到)下显示为16px。所以75%就是12px，而62.5%就是10px。</p>
<p>基于<a href="http://webtech-walker.com/archive/2008/05/16032443.html">font-sizeのパーセント表記一覧</a>里的百分比的零散表格，我重新组织了下面这张整表。下表仅仅作为参考，因为百分比的微弱递减或递增不会对文本产生可视化的效果(当然也有例外)，反而容易产生出混乱的级联百分比关系。</p>
<table>
	<tr>
		<th>值\相对值</th>
		<th>12px</th>
		<th>13px</th>
		<th>14px</th>
		<th>15px</th>
		<th>16px</th>
	</tr>
	<tr>
		<th>10px</th>
		<td>84%</td>
		<td>77%</td>
		<td>72%</td>
		<td>67%</td>
		<td><span style="color:red;">63%</span></td>
	</tr>
	<tr class="even">
		<th>11px</th>
		<td>92%</td>
		<td>85%</td>
		<td>79%</td>
		<td>74%</td>
		<td>69%</td>
	</tr>
	<tr>
		<th>12px</th>
		<td>100%</td>
		<td>93%</td>
		<td>86%</td>
		<td>80%</td>
		<td><span style="color:red;">75%</span></td>
	</tr>
	<tr class="even">
		<th>13px</th>
		<td>109%</td>
		<td>100%</td>
		<td>93%</td>
		<td>87%</td>
		<td>82%</td>
	</tr>
	<tr>
		<th>14px</th>
		<td>117%</td>
		<td>108%</td>
		<td>100%</td>
		<td>94%</td>
		<td>88%</td>
	</tr>
	<tr class="even">
		<th>15px</th>
		<td>125%</td>
		<td>116%</td>
		<td>108%</td>
		<td>100%</td>
		<td>94%</td>
	</tr>
	<tr>
		<th>16px</th>
		<td>134%</td>
		<td>124%</td>
		<td>115%</td>
		<td>107%</td>
		<td>100%</td>
	</tr>
	<tr class="even">
		<th>17px</th>
		<td>142%</td>
		<td>131%</td>
		<td>122%</td>
		<td>114%</td>
		<td>107%</td>
	</tr>
	<tr>
		<th>18px</th>
		<td>150%</td>
		<td>139%</td>
		<td>129%</td>
		<td>120%</td>
		<td>113%</td>
	</tr>
	<tr class="even">
		<th>19px</th>
		<td>159%</td>
		<td>147%</td>
		<td>136%</td>
		<td>127%</td>
		<td>119%</td>
	</tr>
	<tr>
		<th>20px</th>
		<td>167%</td>
		<td>154%</td>
		<td>143%</td>
		<td>134%</td>
		<td>125%</td>
	</tr>
	<tr class="even">
		<th>21px</th>
		<td>175%</td>
		<td>162%</td>
		<td>150%</td>
		<td>140%</td>
		<td>132%</td>
	</tr>
	<tr>
		<th>22px</th>
		<td>184%</td>
		<td>170%</td>
		<td>158%</td>
		<td>147%</td>
		<td>138%</td>
	</tr>
	<tr class="even">
		<th>23px</th>
		<td>192%</td>
		<td>177%</td>
		<td>165%</td>
		<td>154%</td>
		<td>144%</td>
	</tr>
	<tr>
		<th>24px</th>
		<td>200%</td>
		<td>185%</td>
		<td>172%</td>
		<td>160%</td>
		<td>150%</td>
	</tr>
	<tr class="even">
		<th>25px</th>
		<td>209%</td>
		<td>193%</td>
		<td>179%</td>
		<td>167%</td>
		<td>157%</td>
	</tr>
	<tr>
		<th>26px</th>
		<td>217%</td>
		<td>200%</td>
		<td>186%</td>
		<td>174%</td>
		<td>163%</td>
	</tr>
</table>
<p>之所以选择了参考了这位日本开发者的资料是有原因的。比如，我们常常全局定义字体的相对medium(通常为16px)的62.5%，也就是10px，然后再对文档的个个其他部分定义em值。相对于10px，1.2em就是12px，1.6em就是16px，依次类推。这样的比例使用起来很直观，并且会在所有的浏览器里表现完好，当然除了IE。</p>
<p>IE会错误的显示字体大小(感觉上是字体框架有细微的变大)，并且仅限于中文。除非我们将比例设置成63%而不是62.5%。所以当我看到这张表中63%的时候，我觉得同是非西欧字符，这张表应该更具有参考价值。不过这些值我也没能自己去全部测试，偷懒一下～</p>
<p>em似乎比百分数更加直观，而且对于一个字体的宽度的把握往往也更容易。同时它们有相同的级联性，使用的时候总是要避免规则的叠加。比如定义 div{font-size:1.2em;} ，那么在div里包含div就会出问题。1.2emx1.2em的叠加会使得文字比想象中的大——但这还不要紧，如果使用的是0.8em？缩小倍率的多次叠加很快会使得文字变得无法分辨。</p>
<p>无论是em还是百分比，都是相对值。并且常常相对于medium。但是关于medium这类关键字，就有了更多的话题。</p>
<h2 id>关键字</h2>
<p>我对于font-size的理解一直停留在上面说的那些，直到半个月前，我读到这篇<a href="http://style.cleverchimp.com/font_size_intervals/altintervals.html">Toward a standard font size interval system</a>。</p>
<p>回到之前的<a href="http://www.w3.org/TR/2009/CR-CSS2-20090908/fonts.html#propdef-font-size">CSS2.1 Specification RC20090908</a>，标准把关键字定义为这样：</p>
<table>
	<tr>
		<th>CSS absolute-size values</th>
		<td>xx-small</td>
		<td>x-small</td>
		<td>small</td>
		<td>medium</td>
		<td>large</td>
		<td>x-large</td>
		<td>xx-large</td>
		<td style="background:#eee;">&nbsp;</td>
	</tr>
	<tr>
		<th>HTML font sizes</th>
		<td>1</td>
		<td style="background:#eee;">&nbsp;</td>
		<td>2</td>
		<td>3</td>
		<td>4</td>
		<td>5</td>
		<td>6</td>
		<td>7</td>
	</tr>
</table>
回顾略显古老的[HTML 3.2 Reference Specification - Font](http://www.w3.org/TR/REC-html32#font)，这七个关键字是否是对应于已经实现的HTML font标记不得而知，但是上面的对应关系并不是一一对应的，medium对应的是size 3。[Html Font Size Tutorial CSS Style](http://www.htmlcss.org/font-size.html)上可以清楚的看到全部的关键字效果。
<p>下面这张图，更加直观些。但是注意第二行。同样对于English Font加上larger，IE8和FF渲染为18px，Opera、Chrome和Safari则渲染为19px。</p>
<p><img src="https://swordair.com/content/images/2013/Dec/font_size_compare.png" alt="font size compare"></p>
<p>下面的表截取自<a href="http://style.cleverchimp.com/font_size_intervals/altintervals.html">Toward a standard font size interval system</a>里的Synoptic table，对应于windows常用的96dpi的情况。是的，96dpi，我们几乎从来不去改变这个默认的值，除非也许某个人因为高分屏字太小的折磨，而主动调大到了120dpi。</p>
<table cellpadding="3" cellspacing="0">
	<tr>
		<td style="text-align:right;background:black;color:#FFCC00;">CSS absolute size keywords:</td>
		<td style="background:#FFFFCC;">xx-small</td>
		<td style="background:#FFFF99;">x-small</td>
		<td style="background:#FFFF66;">small</td>
		<td style="background:#FFFF00;">medium</td>
		<td style="background:#FFFF66;">large</td>
		<td style="background:#FFFF99;">x-large</td>
		<td style="background:#FFFFCC;">xx-large</td>
		<td style="background:#808080;">&nbsp;</td>
	</tr>
		<td style="text-align:right;background:black;color:#FFCC00;">HTML absolute font sizes:<br>(interpolated Mozilla values)</td>
		<td style="background:#FFFFCC;">1</td>
		<td style="background:#808080;">&nbsp;</td>
		<td style="background:#FFFF66;">2</td>
		<td style="background:#FFFF00;">3</td>
		<td style="background:#FFFF66;">4</td>
		<td style="background:#FFFF99;">5</td>
		<td style="background:#FFFFCC;">6</td>
		<td style="background:#FFFFCC;">7</td>
	<tr>
		<td style="text-align:right;background:black;color:#FFCC00;">HTML headings:<br>(interpolated Mosaic values)</td>
		<td style="background:#FFFFCC;">h6</td>
		<td style="background:#808080;">&nbsp;</td>
		<td style="background:#FFFF66;">h5</td>
		<td style="background:#FFFF00;">h4</td>
		<td style="background:#FFFF66;">h3</td>
		<td style="background:#FFFF99;">h2</td>
		<td style="background:#FFFFCC;">h1</td>
		<td style="background:#808080;">&nbsp;</td>
	</tr>
	<tr>
		<td style="text-align:right;background:#FFCC00;color:black;">normalized scaling factor:</td>
		<td>60% - 3:5</td>
		<td>75% - 3:4</td>
		<td>89% - 8:9</td>
		<td>100% - 1:1</td>
		<td>120% - 6:5</td>
		<td>150% - 3:2</td>
		<td>200% - 2:1</td>
		<td>300% - 3:1</td>
	</tr>
	<tr>
		<td style="text-align:right;background:black;color:#FFCC00;">px computed from a 16 ppem base:<br><br>e.g., 12pt @ 96ppi or 16pt @ 72ppi<br>(XP 5.0 UA default)</td>
		<td>10px<br><br><span style="font-size:10px">E</span></td>
		<td>12px<br><br><span style="font-size:12px">E</span></td>
		<td>14px<br><br><span style="font-size:14px">E</span></td>
		<td>16px<br><br><span style="font-size:16px">E</span></td>
		<td>19px<br><br><span style="font-size:19px">E</span></td>
		<td>24px<br><br><span style="font-size:24px">E</span></td>
		<td>32px<br><br><span style="font-size:32px">E</span></td>
		<td>48px<br><br><span style="font-size:48px">E</span></td>
	</tr>
</table>
<p>牵扯到一个很重要的概念，ppem。它指的是Pixels per em，即每个字体大小的像素数，定义了字符在屏幕上的易读性。关于更多的信息，我强烈建议阅读<a href="http://style.cleverchimp.com/font_size_intervals/altintervals.html">Toward a standard font size interval system</a>原文。</p>
<p>当把xp的dpi从96调整到120， 整个系统的尺寸，包括图形和文字都被放大了。此时，如果打开IE，font-size:medium 不再是16px，而是20px。虽然我也试过Chrome和FireFox，但它们没有变化。我不明白原因，如果有人知道，麻烦请告诉我声: ）</p>
<p>这再次的提醒了我们，CSS不是只为显示器而设计的，而且也不是专为windows而设计的。我们有时可能需要考虑更多更多。<br>
水平有限，文中如有错误望指正~</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[跨浏览器边框探索]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>虽然起了一个看似很牛逼的题目，但本文可以说完全是蛋疼的人的一种消遣~通常开发人员都有自己的放松方式。写文章用不了太久，倒是图材准备了老半天。谨以此文，让我们来消遣下各个浏览器对于边框的理解方式。</p>
<p>参与此次测试的浏览器包括windows下的几乎全部：ie6，ie7，ie8，ie9preview，chrome，firefox，safari，opera，seamonkey。各版本皆为网上下载的最新版。并且由于这次的测试里，<strong>IE678的表现一致，firefox和seamonkey又是裙带，所以合并作IE8和firefox</strong>。下图就是这次浏览器的截图：</p>
<p><img src="https://swordair.com/content/images/2013/Dec/browser__border_icon.jpg" alt="browser border icon"></p>
<p><strong>上面的这种排列顺序是故意的</strong>。下面的测试里就会显示出其原因，截图也都是按照这个顺序排列的。</p>
<p>首先看下面这张图，六种浏览器里显示了一个20X20的DIV，其边框为<code>top:2px</code>，其余1px。似乎没有什么不同。这是由于1px的细微让我们没有在意。(事实上这整个问题我们本来就不需要在意~)</p>
<p><img src="https://swordair.com/content/images/2013/Dec/browser_border_0.gif" alt></p>
<p>先把问题简单化，单边2px，三边1px，并将结果放大5倍，我们能清楚的看到这种差异——opera和safari相反，ie8缺胳膊少腿，下面三个家伙一致~这里要注意到的是第二行3者在交汇处都有渐进效果。</p>
<p><img src="https://swordair.com/content/images/2013/Dec/browser_border_1.gif" alt></p>
<p>也许我们该让这种效果变得更加明显。当仅仅加粗单边之后(10px)，IE8的怪癖显露无疑。opera和safari依旧相对。下面3个统一战线的渐进变的更加明显。</p>]]></description><link>https://swordair.com/cross-browser-border-exploration/</link><guid isPermaLink="false">59fe0cf19855590d8c9146cd</guid><category><![CDATA[Chrome]]></category><category><![CDATA[CSS]]></category><category><![CDATA[FireFox]]></category><category><![CDATA[IE6]]></category><category><![CDATA[IE7]]></category><category><![CDATA[IE8]]></category><category><![CDATA[IE9]]></category><category><![CDATA[Opera]]></category><category><![CDATA[Safari]]></category><dc:creator><![CDATA[Sword Wang]]></dc:creator><pubDate>Thu, 13 May 2010 16:16:58 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>虽然起了一个看似很牛逼的题目，但本文可以说完全是蛋疼的人的一种消遣~通常开发人员都有自己的放松方式。写文章用不了太久，倒是图材准备了老半天。谨以此文，让我们来消遣下各个浏览器对于边框的理解方式。</p>
<p>参与此次测试的浏览器包括windows下的几乎全部：ie6，ie7，ie8，ie9preview，chrome，firefox，safari，opera，seamonkey。各版本皆为网上下载的最新版。并且由于这次的测试里，<strong>IE678的表现一致，firefox和seamonkey又是裙带，所以合并作IE8和firefox</strong>。下图就是这次浏览器的截图：</p>
<p><img src="https://swordair.com/content/images/2013/Dec/browser__border_icon.jpg" alt="browser border icon"></p>
<p><strong>上面的这种排列顺序是故意的</strong>。下面的测试里就会显示出其原因，截图也都是按照这个顺序排列的。</p>
<p>首先看下面这张图，六种浏览器里显示了一个20X20的DIV，其边框为<code>top:2px</code>，其余1px。似乎没有什么不同。这是由于1px的细微让我们没有在意。(事实上这整个问题我们本来就不需要在意~)</p>
<p><img src="https://swordair.com/content/images/2013/Dec/browser_border_0.gif" alt></p>
<p>先把问题简单化，单边2px，三边1px，并将结果放大5倍，我们能清楚的看到这种差异——opera和safari相反，ie8缺胳膊少腿，下面三个家伙一致~这里要注意到的是第二行3者在交汇处都有渐进效果。</p>
<p><img src="https://swordair.com/content/images/2013/Dec/browser_border_1.gif" alt></p>
<p>也许我们该让这种效果变得更加明显。当仅仅加粗单边之后(10px)，IE8的怪癖显露无疑。opera和safari依旧相对。下面3个统一战线的渐进变的更加明显。</p>
<p><img src="https://swordair.com/content/images/2013/Dec/browser_border_2.gif" alt></p>
<p>假如颠倒下会是怎样？3边加厚，结果是有些出乎意料的。opera的表现很诡异，换句话说，它顶上的那条线，在上面的例子里“优先”了只是一种巧合。IE表现的更加像opera，而不是它缺胳膊少腿的一贯形象。safari贯彻始终，并且，下面三个家伙的结果也是意料之内的。</p>
<p><img src="https://swordair.com/content/images/2013/Dec/browser_border_3.gif" alt></p>
<p>回到最开始第一幅图的地方。用4种颜色分别画4条边。这里仍旧是放大5倍，现在就能更加清楚的看到IE8的做法。</p>
<p><img src="https://swordair.com/content/images/2013/Dec/browser_border_4.gif" alt></p>
<p>在边框宽度都相同的情况下，每个浏览器都表现的挺好。对于边框斜角的应用我最早在《Eric Meyer on CSS 1》里看到。这种45度斜角使用上没有危险性，但是其他角度就未必是这样了，特别是用在双线的时候。<br>
这里留意下面三个截图，FF和chrome，ie9的表现是不同的。可以看到渐进的处理方式不相同。chrome和ie9交汇处有白边，但是FF没有。</p>
<p><img src="https://swordair.com/content/images/2013/Dec/browser_border_5.gif" alt></p>
<p>下面就是双线了，这又出了一个问题，就是ie9的双线是糊的...由于用的是4条等宽边框，其它看起来似乎都不错。</p>
<p><img src="https://swordair.com/content/images/2013/Dec/browser_border_6.gif" alt></p>
<p>于是，换用一种糟糕点的角度呢？ie8首先不成框样，居然用空隙...感觉上非常粗糙。另外ie9糊的真水...</p>
<p><img src="https://swordair.com/content/images/2013/Dec/browser_border_7.gif" alt></p>
<p>当我再尝试一些角度时，Opera也出问题了，它的边框显得多余很难看，简直和ie8有的一拼...</p>
<p><img src="https://swordair.com/content/images/2013/Dec/browser_border_8.gif" alt></p>
<p>当然，本来浏览器对于线型的解释就不同，所以实线之外的，就没有什么参考价值了，这里仅做娱乐~~<br>
dotted之后，尽显衣钵本色。</p>
<p><img src="https://swordair.com/content/images/2013/Dec/browser_border_9.gif" alt></p>
<p>dashed又如何？同是webkit，表现却并不像刚才的dotted那么相同。ie8依旧很诡异，只有4个点，上下的线消失了...事实上，之所以这里把DIV加长到20x30，是因为，20x20，不够ie8显示这么宽的dashed线型，那4个点也会消失的~</p>
<p><img src="https://swordair.com/content/images/2013/Dec/browser_border_10.gif" alt></p>
<p>下面就是最有趣的地方了，当DIV的尺寸变成20x40，线宽如图所示，结果，ie8和ie9是可以合体的！！！它们的合体可以组成一个完整的独一无二的solid框！一像素都不差~</p>
<p><img src="https://swordair.com/content/images/2013/Dec/browser_border_11.gif" alt></p>
<p>当将DIV的尺寸加到的89x39的时候，ie8才完全显示出dashed框，并且此时chrome会突然变得和safari不同。</p>
<p><img src="https://swordair.com/content/images/2013/Dec/browser_border_12.gif" alt></p>
<p>好了，也算的上是一轮浏览器的探索了。或者说消遣，再或者说无用工。因为没有结论，只有现象，而且还是无用的现象。但仍然希望这能勉强算的上是块砖头，期待高见~</p>
<p><img src="https://swordair.com/content/images/2013/Dec/browser_border_dotted.gif" alt></p>
<!--kg-card-end: markdown-->]]></content:encoded></item></channel></rss>