<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Yottaworks™ Studio &#187; CSS</title>
	<atom:link href="http://yottaworks.net/tag/css/feed/" rel="self" type="application/rss+xml" />
	<link>http://yottaworks.net</link>
	<description>Ideas, illustrations, tutorials and footprints of Kael</description>
	<lastBuildDate>Sat, 20 Feb 2010 09:58:30 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>需要我们注意的部分CSS兼容性问题</title>
		<link>http://yottaworks.net/article-235/</link>
		<comments>http://yottaworks.net/article-235/#comments</comments>
		<pubDate>Mon, 05 Nov 2007 11:58:23 +0000</pubDate>
		<dc:creator>Kael</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[<img src="/wp-content/uploads/2007/11/css-all-explorer.jpg" border="0" alt="" />
在使用CSS控制布局的时候，经常会因为浏览器的不同解析，出现让人头痛的兼容性问题。凯尔写这篇文章，意在让大家的设计更加轻松惬意，在抓狂之前从这里找出可能的原因。

下面这些文字，都是凯尔在近一年来为小站，为PJBlog做皮的过程中的一些心得，这里，凯尔抛砖引玉啦~]]></description>
			<content:encoded><![CDATA[<p><img src="/wp-content/uploads/2007/11/css-all-explorer.jpg" border="0" alt="" /><br />
在使用CSS控制布局的时候，经常会因为浏览器的不同解析，出现让人头痛的兼容性问题。凯尔写这篇文章，意在让大家的设计更加轻松惬意，在抓狂之前从这里找出可能的原因。<br />
下面这些文字，都是凯尔在近一年来为小站，为PJBlog做皮的过程中的一些心得，很庆幸自己总是在解决问题之后，将一些东西简单地写在记事本中。希望能给CSS新手一点启发，得到老手们的一些共鸣与指点。</p>
<p>这里，凯尔抛砖引玉啦~~进入正题——</p>
<p><strong>盒模型问题，避免将&#8221;padding/border&#8221;和&#8221;width&#8221;同时应用到同一元素</strong></p>
<p>盒模型的问题，也是最常见的。07年年初我写过一篇文章，讲到过<a href="/?p=142" target="_blank">盒模型问题的解决方法</a>。<br />
这个问题的产生，要“归功”于IE5对于盒模型的错误解析，让IE系列将这个BUG延续了很久，IE7后来才解决这个问题。</p>
<p><strong>避免使用不被少数浏览器支持的样式</strong></p>
<p><strong>1.</strong> <a href="/?p=227" target="_blank">&#8220;overflow-x&#8221; 和 &#8220;overflow-y&#8221;</a>，支持的浏览器：IE6，IE7，Firefox，Safari；不支持的浏览器：Opera（包括最新的Opera 9.24），在Opera中是完全无视的。</p>
<p><strong>2.</strong> &#8220;min-width&#8221;，别指望它在IE中会起作用，我们只有回避它，采用其他的方法实现该效果。</p>
<p><strong>避免使用私有样式</strong></p>
<p>你也许要说，为什么在Firefox中我的头像没有滤镜效果了？要注意，filter滤镜，自定义滚动条，或者自定义鼠标，都是<strong>IE的私有样式</strong>，而在其他浏览器中都不会发挥任何作用。这些IE专有的CSS扩展样式在正式标准中并不存在。</p>
<p><strong>规范地书写代码</strong></p>
<p>按照规范的顺序来定义某些属性中的各个值无疑是一种好的习惯，这样会减少我们出错的机会，比如：</p>
<p><strong>1.</strong> 图片的对齐 background-position，Firefox严格按照X坐标和Y坐标来解析，&#8221;background-position:top 2px;&#8221;在<strong>Firefox中就会解析错误</strong>（IE中正常）。虽然&#8221;background-position:top left;&#8221;（这里明确指出是Y坐标和X坐标）在Firefox中正常解析，但书写为&#8221;background-position:left top;&#8221;是好的习惯。</p>
<p><strong>2.</strong> 而在margin，padding的属性中，必须按照顺序书写。</p>
<p><strong>字体大小的设定</strong></p>
<p><strong>1.</strong> 字体大小尽量不要使用小数，因为不同的浏览器解释不一样，比如 &#8220;font-size:11.5px;&#8221; ，IE7认为是12px，Opera则认为是11px。<br />
<strong>2.</strong> 注意字体大小的极限。目前网页中主要使用的Windows宋体，在11像素或者更小的尺寸下，就会出现辨认的困难，即使浏览器使用Cleartype，表现也不好。<br />
11px的宋体字，在IE7中，会显示为12px；但是在FF中，仍然为11px，影响辨认。<br />
<strong>也就是说，宋体不要小于12px，这几乎是它的极限</strong>，至少要保证网页主题部分字体不小于12px。顺带说一句，对比宋体，微软雅黑使用更小的字号仍然可以非常优秀地显示，但是它没有完全普及。</p>
<p><strong>3.</strong> 在你的CSS代码中务必要定义字体的大小，因为不同的浏览器，不同的用户，默认的字体大小可能是不同的，所以你需要明确定义。</p>
<p>说了这么多，而最有效的方法就是在不同的浏览器上细心地调试了，代码写好了，首先在最新的浏览器上调试，而不是原来的版本。<br />
常见的浏览器，都还是要装到电脑上的，如IE7，IE6，Firefox，Safari，Opera。建议安装IE7，然后下载绿色版的IE6。</p>
<p>上面的内容，并不能达到全面和完备，只是自己遇到过的一些问题。今后会继续更新。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>PS：做个标题的图片，找了快一中午的素材，不容易呀……<br />
似乎太花了点，图片把标题的注意力抢走了 -。-</p>
]]></content:encoded>
			<wfw:commentRss>http://yottaworks.net/article-235/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>善用CSS，解决PJBlog的友情链接列表过长问题</title>
		<link>http://yottaworks.net/article-227/</link>
		<comments>http://yottaworks.net/article-227/#comments</comments>
		<pubDate>Thu, 25 Oct 2007 10:30:53 +0000</pubDate>
		<dc:creator>Kael</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[经营博客时间长了，友情链接的数量也会渐渐增加，使得侧边栏上出现长长的一条友情链接列表，影响界面的平衡。

解决的方法很多，比如修改commoncache.asp添加分页，使用marquee加入滚动，或者使用Flash分页，而一般情况下，这样都要修改原代码，而Flash对于每个皮肤都要另外修改外观。

其实，只要修改下CSS，添加简单的一句话，就可以解决这个问题。]]></description>
			<content:encoded><![CDATA[<p>经营博客时间长了，友情链接的数量也会渐渐增加，使得侧边栏上出现长长的一条友情链接列表，影响界面的平衡。<br />
解决的方法很多，比如修改commoncache.asp添加分页，使用marquee加入滚动，或者使用Flash分页，而一般情况下，这样都要修改原代码，而Flash对于每个皮肤都要另外修改外观。</p>
<p>其实，只要修改下CSS，添加简单的一句话，就可以解决这个问题：</p>
<p>打开PJBlog皮肤中名为typography.css的样式表，加入（并且添加必要的其他属性）：</p>
<blockquote><p>程序代码<br />
.LinkTable{ overflow: auto;  width: <span style="color: limegreen;"><strong>a</strong></span> px;  height: <span style="color: limegreen;"><strong>b</strong></span> px;}</p></blockquote>
<p>或者修改原有的LinkTable类的定义。最后效果如图：</p>
<p><img src="/wp-content/uploads/2007/10/link-table-sample-auto.png" border="0" alt="" align="left" /></p>
<p>这里，<br />
<strong>a</strong> 应该足够大，使得友情链接中的条目不会在水平方向上溢出（让水平方向不会出现滚动条）；<br />
<strong>b</strong> 为你想要的友情链接栏的高度（让垂直防线出现滚动条）。</p>
<p><strong>有人要问，为什么不使用 &#8220;overflow: scroll&#8221; 呢？</strong><br />
这样的话，就会同时出现垂直和水平方向上的滚动条，影响美观，也没有必要：<br />
<img src="/wp-content/uploads/2007/10/link-table-sample-scroll.png" border="0" alt="" /></p>
<p><strong>那么，我们为什么不使用 &#8220;overflow-x&#8221; 和 &#8220;overflow-y&#8221; 呢？</strong><br />
其实，</p>
<blockquote><p>程序代码<br />
.LinkTable{ overflow-x: hidden;  overflow-y: scroll; }</p></blockquote>
<p>不失为一个好的办法，它符合最初我们的想法。</p>
<p>但是我们知道， &#8220;overflow-x&#8221; 和 &#8220;overflow-y&#8221; 曾经是IE的专有属性，不能被其他浏览器支持。<br />
而在今天，许多其他的浏览器也开始支持这些属性了，比如Firefox，Safari；而最新版的Opera 9.24仍然不支持这两个属性，造成页面错乱。（2007年10月25日测试）<br />
所以，为了支持性，在有其他实现方法的时候，最好不使用 &#8220;overflow-x&#8221;。但是由于Opera的用户较IE来说很少，并且作为个人网站，如果不在乎这些问题，大可以图简便地使用 &#8220;overflow-x&#8221;。</p>
<p>CSS是强大的，在你想方设法达到某种要求的时候，首先要想到它。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>PS：其实友情链接，怎么说呢，一直是个麻烦的问题。<br />
一方面，在首页上显示很多友情链接，不太美观。但是，不完全显示，会影响点击率以及博友的意见。<br />
而使用滚动的，或者Flash分页的链接，也不一定会有好的效果。凯尔就有这样的经历，在朋友的网页上找寻自己博客链接的影子，盯着滚动条好久了，也没有看到自己的链接，而其实我的链接是有的。<strong>另外</strong>，使用marquee滚动和Flash分页也会或多或少地影响<a href="/?p=101" target="_blank">搜索引擎的抓取</a>，这将直接影响到你的站点在搜索引擎中的反向链接数据。</p>
]]></content:encoded>
			<wfw:commentRss>http://yottaworks.net/article-227/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>CSS兼容性解决方法（盒模型）- !important的IE7，Firefox问题</title>
		<link>http://yottaworks.net/article-142/</link>
		<comments>http://yottaworks.net/article-142/#comments</comments>
		<pubDate>Tue, 06 Mar 2007 21:17:33 +0000</pubDate>
		<dc:creator>Kael</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[在CSS标准中，一个盒模型包括4个区，分别是：内容、内边距（padding）、边框（border） 和外边距（margin）。
正是因为浏览器的不同解析，给CSS的设计带来一些困难。

仔细想想，<strong>其实问题就出在“width与padding/border-width的同时定义”上</strong>。
[以下略去约900字，点击日志标题查看全部内容]
]]></description>
			<content:encoded><![CDATA[<p>前面的很多内容属于引言部分，如果您对这些内容比较了解，可以直接跳到下面的“盒模型问题的解决”，查看主要的内容。</p>
<p><strong>首先谈谈!important问题的引起（盒模型问题）：</strong></p>
<p>在CSS标准中，一个盒模型包括4个区，分别是：内容、内边距（padding）、边框（border） 和外边距（margin）。而Width宽度的计算，CSS有它的标准。但是实际上，不同的浏览器的表现却不同。比如，</p>
<p>Firefox（FF）是准确按照CSS标准：<span style="color: blue;">width为内容的宽度</span>，也就是说：<br />
层的宽度 = &#8220;width&#8221; + &#8220;padding(left + right)&#8221; + &#8220;border-width(left + right)&#8221;；</p>
<p>而<span style="color: blue;">IE则把width作为整个层的宽度</span>：<br />
内容的宽度 = &#8220;width&#8221; &#8211; &#8220;padding(left + right)&#8221; &#8211; &#8220;border-width(left + right)&#8221;；</p>
<p><img src="/wp-content/uploads/2008/12/ie-series-box-bug.png" alt="" /></p>
<blockquote><p><del datetime="2008-12-04T07:42:54+00:00"><strong><span style="color: red;">2007.10.03 update</span></strong>：IE7在一次更新中修正了盒模型的BUG，与Firefox的解析一致。2007.10.03验证。</del></p></blockquote>
<p>IE的这种解析，被认为是一个BUG。但事实上，这种解释也不无道理，人们在设计页面的时候关注得更多的是盒子的大小，而不是内容的大小。正是因为浏览器的不同解析，给CSS的设计带来一些困难。</p>
<p>针对这个问题，我们经常使用!important来区分Firefox和IE6.0：</p>
<blockquote><p>#content<br />
{<br />
width: 414px !important;<br />
width: 400px;<br />
padding: 5px; /*只给出一个值，表示上右下左的边距都为5px*/<br />
border-width: 2px;<br />
}</p></blockquote>
<p>Firefox识别!important，而IE6不识别，且!important的width优先级高，因此FF理解为width: 400px，IE6.0理解为width: 414px，从而显示就相同了。</p>
<p>但是问题出在IE7，IE7.0对!important有了识别能力，但是对盒模型的解析却和IE6.0等一样，从而造成很大的麻烦。也就是说，!important的方法在IE7.0下变得不适用了。</p>
<p>而一般的情况下，border的使用相对较少的，并且border-width一般较小，因此最主要的问题就出在padding上了。网上很多人总结的经验是：padding要尽量少用，能用margin的，就别用padding。这种说法是消极的，问题的解决不应该总是回避。</p>
<p><span style="color: purple;"><strong>盒模型问题的解决：</strong></span></p>
<p>仔细想想，<strong>其实问题就出在“width与padding/border-width的同时定义”上</strong>，这个问题在CSS代码中一定要注意。而明白了这一点，解决的方法就不难想到了——</p>
<div><strong>当子元素的宽度固定时，padding在其父元素中指定</strong></div>
<p>只要添加一个无width定义的<span style="color: purple;">wrapper</span>层，把原来的一个content层拆分成2个层，<strong><span style="color: red;">分别</span></strong>地，在wrapper中定义padding和border-width，然后在content中定义width：</p>
<blockquote><p>#wrapper { padding: 5px; border-width: 2px; }</p>
<p>#content { margin: 0px; width: 400px; }<br />
&lt;div id=&#8221;wrapper&#8221;&gt;<br />
&lt;div id=&#8221;content&#8221;&gt;<br />
&#8230;<br />
&lt;/div&gt;<br />
&lt;/div&gt;</p></blockquote>
<p>这样问题就可以得到解决，FF，IE6.0以及IE7.0都会获得相同的显示效果。更重要的是，没有使用任何CSS hack。</p>
<p>这种解决方法可以说是最终的方案，使用CSS hack的方法只是目前过渡阶段的临时方法。<br />
对于网站构造，特别是对于样式比较复杂的网站，个人建议在重要的层快外加上wrapper层。</p>
<p>但是对于目前现成的模板，可以有选择修改部分样式，分别定义 &#8220;width&#8221; 与 &#8220;padding或者border-width&#8221; ，或者使用其他方法。</p>
<p><strong>是否适合所有的浏览器？</strong><br />
理论上，这种方法应该适用于各种浏览器。<br />
但是本人认为除非大型网站，兼容FF，IE6.0，IE7.0已经足够，这里也是主要针对这三个最主流的浏览器，IE更低版本，以及其他浏览器上的可行性有待验证。</p>
<p>PS：小站上面的很多地方使用了wrapper层，从而CSS样式表中没有使用一个!important。<br />
本文属于个人见解，欢迎大家指正和补充~</p>
<p><span style="color: red;">如需转载，请标明本站的有效链接:</span><a href="http://yottaworks.net">http://yottaworks.net</a></p>
]]></content:encoded>
			<wfw:commentRss>http://yottaworks.net/article-142/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>终于完成兼容性调试，用CSS hack区分IE6，IE7，Firefox</title>
		<link>http://yottaworks.net/article-123/</link>
		<comments>http://yottaworks.net/article-123/#comments</comments>
		<pubDate>Sat, 10 Feb 2007 22:29:43 +0000</pubDate>
		<dc:creator>Kael</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[今天本站终于完成对IE6.0的调整，解决了原来在IE6中网页上部无法显示，导致无法注册和登陆的问题，并且侧边栏也不会跑到日志主体下面了。
并且修改了一个小的BUG。

这段时间学习CSS的过程中，觉得CSS还真是个麻烦的东西。由于没有个统一的标准，因而不同的浏览器各成一家，造成对CSS样式表的“理解”不同，引起很麻烦的兼容问题。比如IE和Firefox对width的定义不同，默认的字体大小不同，IE7与Firefox对某些定义的优先级不一样……]]></description>
			<content:encoded><![CDATA[<p>今天本站终于完成对IE6.0的调整，解决了原来在IE6中网页上部无法显示，导致无法注册和登陆的问题，并且侧边栏也不会跑到日志主体下面了。<br />
并且修改了一个小的BUG。</p>
<p>这段时间学习CSS的过程中，觉得CSS还真是个麻烦的东西。由于没有个统一的标准，因而不同的浏览器各成一家，造成对CSS样式表的“理解”不同，引起很麻烦的兼容问题。比如IE和Firefox对width的定义不同，默认的字体大小不同，IE7与Firefox对某些定义的优先级不一样……</p>
<p>更讨厌的是，层中margin为负值的部分，IE6竟然干脆不显示，加上&#8221;overflow:visible&#8221;后也没有用，这完全可以说是IE6的一个BUG，一个大师级的BUG——这就是造成以前网页顶部截断的原因。而在IE7中，类似的问题就要少得多。个人还是建议使用IE7的（<a href="http://www.newhua.com/soft/48511.htm" target="_blank">点击这里进入华军软件网下载页面</a>）</p>
<p>尝试修改了好久，一直都是顾此失彼，最后只好放弃用同一个样式满足这3种浏览器的打算。可以说，很多网页在设计的时候，不得不为了兼容性的问题放弃一些很帅气的效果。</p>
<p>最终还是用CSS hack解决的，虽然hack是不符合规范的写法，如Jay所说的，在目前还没有很统一的标准这个过渡时期，用一用还是无妨的。</p>
<p>用hack解决兼容性问题的方法如下：</p>
<blockquote><p>#example { background: red; } /* Moz FF */<br />
* html #example { background: green; } /* IE6 */<br />
*+html #example { background: yellow; } /* IE7 */</p></blockquote>
<p>它的原理是这样的：第一行，3个浏览器都认识，但是Firefox不能理解下面2个，因此在FF中就会显示成红色。而IE6除了可以解读第一行外，还可以理解第二行，因而原来第一行的定义被后来读到的取代，从而显示出绿色。IE7同理。</p>
<p>不过要补充下，在兼容IE7的*+html的hack一定要在顶部加入!DOCTYPE 声明，否则无效<br />
&lt;!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.01 Transitional//EN&#8221;　&#8221;<a href="http://www.w3.org/TR/html4/loose.dtd" target="_blank">http://www.w3.org/TR/html4/loose.dtd</a>&#8220;&gt;</p>
<p>并且使用hack的方法较其他方法来说，相对简单，也很有效（但是个人从来都不认为CSS hack是好的办法，只是迫不得已使用），最后终于解决了在IE6，IE7，Firefox中的兼容性问题。<br />
上面的3个浏览器并不是全部，还有Opera，IE5.5及以下，Netscape等众多浏览器，但是看看Kael&#8217;s blog的虚拟主机的统计信息：<br />
<img src="/wp-content/uploads/2007/02/IE_percent_stat.png" border="0" alt="" /><br />
可以看到，在Kael&#8217;s blog申请统计服务以来的19041位访客中，使用Microsoft Internet Explorer和Mozilla Firefox已经占到了所有浏览器的98.9%，其他浏览器都不足1%。而我是以个人建站为主，完全没有必要为其他浏览器占有的那么点零星的小数点大动干戈，劳神费力了。</p>
<p>PS：从统计信息我们看到现在崛起的手机网络市场。<br />
使用Netscape（网景）访问小站的人数甚至没有手机浏览器的人多。</p>
]]></content:encoded>
			<wfw:commentRss>http://yottaworks.net/article-123/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
