<?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>vfresh &#187; JavaScript</title>
	<atom:link href="http://www.vfresh.org/category/js/feed" rel="self" type="application/rss+xml" />
	<link>http://www.vfresh.org</link>
	<description>专注前端技术</description>
	<lastBuildDate>Mon, 06 Sep 2010 03:21:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>JSLint for EditPlus 检验js语法</title>
		<link>http://www.vfresh.org/js/980</link>
		<comments>http://www.vfresh.org/js/980#comments</comments>
		<pubDate>Fri, 19 Mar 2010 08:43:52 +0000</pubDate>
		<dc:creator>vicZen</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[EditPlus工具]]></category>

		<guid isPermaLink="false">http://www.vfresh.org/?p=980</guid>
		<description><![CDATA[下载EditPlus.JSLint后解压到任意目录。 在EditPlus中依次点击[工具]->[配置用户工具]->[添加]->[应用程序] 按图中设置： 参数："$(FilePath)" 命令：WScript.exe "D:\editPlus\app\JSLint\JSLint.wsf" 注意将JSLint.wsf路径替换成你自己的 输出模式中的正则表达式栏： ^.+ >>>in \[(.+)\] \[line\: ([0-9]+)\,character\: ([0-9]+)\] 然后设定一个快捷键~ JSLint检查完后双击错误信息，就会自动将光标定位到出错行。 历史版本 EditPlus.JSLint v0.1 相关阅读zencoding(HTML) for EditPlus v1.1 zencoding(HTML) for EditPlus v1.0

<div class="relate-post"><h3>相关阅读</h3><ol class="list"><li><a href='http://www.vfresh.org/w3c/914' rel='bookmark' title='Permanent Link: zencoding(HTML) for EditPlus v1.1'>zencoding(HTML) for EditPlus v1.1</a></li>
<li><a href='http://www.vfresh.org/w3c/667' rel='bookmark' title='Permanent Link: zencoding(HTML) for EditPlus v1.0'>zencoding(HTML) for EditPlus v1.0</a></li>
</ol></div>]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/vfresh/downloads/detail?name=EditPlus.JSLint%20v0.1.zip" target="_blank">下载EditPlus.JSLint</a>后解压到任意目录。</p>
<p>在EditPlus中依次点击[工具]->[配置用户工具]->[添加]->[应用程序]</p>
<p>按图中设置：<br />
<img src="http://www.vfresh.org/wp-content/uploads/2010/03/EditPlus.JSLint.png" alt="" title="EditPlus.JSLint" width="481" height="589" /><br />
<strong>参数：</strong><code class="inline">"$(FilePath)"</code><br />
<strong>命令：</strong><code class="inline">WScript.exe "D:\editPlus\app\JSLint\JSLint.wsf"</code><br />
<small class="tip">注意将JSLint.wsf路径替换成你自己的</small><br />
<strong>输出模式中的正则表达式栏：</strong><br />
<code class="inline">^.+  >>>in \[(.+)\] \[line\: ([0-9]+)\,character\: ([0-9]+)\]</code></p>
<p>然后设定一个快捷键~<br />
JSLint检查完后双击错误信息，就会自动将光标定位到出错行。<br />
<span id="more-980"></span></p>
<h3>历史版本</h3>
<ol>
<li><a href="http://code.google.com/p/vfresh/downloads/detail?name=EditPlus.JSLint%20v0.1.zip">EditPlus.JSLint v0.1</a></li>
</ol>
<img src="http://www.vfresh.org/?ak_action=api_record_view&id=980&type=feed" alt="" />

<div class="relate-post"><h3>相关阅读</h3><ol class="list"><li><a href='http://www.vfresh.org/w3c/914' rel='bookmark' title='Permanent Link: zencoding(HTML) for EditPlus v1.1'>zencoding(HTML) for EditPlus v1.1</a></li>
<li><a href='http://www.vfresh.org/w3c/667' rel='bookmark' title='Permanent Link: zencoding(HTML) for EditPlus v1.0'>zencoding(HTML) for EditPlus v1.0</a></li>
</ol></div>]]></content:encoded>
			<wfw:commentRss>http://www.vfresh.org/js/980/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>各浏览器中cookie限制</title>
		<link>http://www.vfresh.org/js/957</link>
		<comments>http://www.vfresh.org/js/957#comments</comments>
		<pubDate>Fri, 19 Mar 2010 03:28:14 +0000</pubDate>
		<dc:creator>vicZen</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[浏览器兼容]]></category>

		<guid isPermaLink="false">http://www.vfresh.org/?p=957</guid>
		<description><![CDATA[&#160; Firefox(3.6) Opera(10.x) chrome(5.x) IE6 IE7/IE8 最多key个数 50个 30个 53个 20个 50个 key个数超出时 随机删除旧的 先进先出方式删除旧的 单key字节数① 4097 4051 4051 4096 5072 单key字节超出时 不进行写入操作 总字节数限制② 204850 4997 server端控制（见注2） 4096 10239 总字节超出后 不写入新的 400 Bad Request cookie无法读写 注①：包括key及value，以及分号、等号 注②：总字节数也受HTTP Server的设置影响；Apache用这2个参数调整：LimitRequestFieldSize 限制客户端发送的请求头的字节数 【默认 8190】LimitRequestLine 限制接受客户端发送的HTTP请求行的字节数【默认 8190】当cookie超出Server的设置大小后会出现400 Bad Request 结论：我们应该保证cookie key数量]]></description>
			<content:encoded><![CDATA[<table>
<thead>
<tr>
<th>&nbsp;</th>
<th>Firefox(3.6)</th>
<th>Opera(10.x)</th>
<th>chrome(5.x)</th>
<th>IE6</th>
<th>IE7/IE8</th>
</tr>
</thead>
<tfoot></tfoot>
<tbody>
<tr>
<th>最多key个数</th>
<td>50个</td>
<td>30个</td>
<td>53个</td>
<td>20个</td>
<td>50个</td>
</tr>
<tr>
<th>key个数超出时</th>
<td>随机删除旧的</td>
<td colspan="4" align="center" valign="middle">先进先出方式删除旧的</td>
</tr>
<tr>
<th>单key字节数<sub>①</sub></th>
<td>4097</td>
<td>4051</td>
<td>4051</td>
<td>4096</td>
<td>5072</td>
</tr>
<tr>
<th>单key字节超出时</th>
<td colspan="5" align="center" valign="middle">不进行写入操作</td>
</tr>
<tr>
<th>总字节数限制<sub>②</sub></th>
<td>204850</td>
<td>4997</td>
<td>server端控制（见注2）</td>
<td>4096</td>
<td>10239</td>
</tr>
<tr>
<th>总字节超出后</th>
<td colspan="2">不写入新的</td>
<td>400 Bad Request</td>
<td colspan="2">cookie无法读写</td>
</tr>
</tbody>
</table>
<ul>
<li>注①：包括key及value，以及分号、等号</li>
<li>注②：总字节数也受HTTP Server的设置影响；<br />Apache用这2个参数调整：<br /><a href="http://httpd.apache.org/docs/2.2/mod/core.html#limitrequestfieldsize" target="_blank">LimitRequestFieldSize</a> 限制客户端发送的请求头的字节数 【默认 8190】<br /><a href="http://httpd.apache.org/docs/2.2/mod/core.html#LimitRequestLine" target="_blank">LimitRequestLine</a>  限制接受客户端发送的HTTP请求行的字节数【默认 8190】<br />当cookie超出Server的设置大小后会出现400 Bad Request</li>
</ul>
<p><strong>结论：</strong>我们应该保证cookie key数量<=20，单key字节<=4000b，总字节数<=4000b<br />
但我们应尽量减少cookie的大小，以获得最优页面加载速度。见"<a href="http://yuiblog.com/blog/2007/03/01/performance-research-part-3/">When the Cookie Crumbles</a>&#8220;</p>
<img src="http://www.vfresh.org/?ak_action=api_record_view&id=957&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.vfresh.org/js/957/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jQuery源码查看器</title>
		<link>http://www.vfresh.org/js/895</link>
		<comments>http://www.vfresh.org/js/895#comments</comments>
		<pubDate>Fri, 05 Feb 2010 05:00:39 +0000</pubDate>
		<dc:creator>vicZen</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.vfresh.org/?p=895</guid>
		<description><![CDATA[传送门：http://james.padolsey.com/jquery/]]></description>
			<content:encoded><![CDATA[<p>传送门：<a href="http://james.padolsey.com/jquery/" target="_blank">http://james.padolsey.com/jquery/</a></p>
<img src="http://www.vfresh.org/?ak_action=api_record_view&id=895&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.vfresh.org/js/895/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery 1.4 更新概述</title>
		<link>http://www.vfresh.org/js/829</link>
		<comments>http://www.vfresh.org/js/829#comments</comments>
		<pubDate>Fri, 15 Jan 2010 05:32:12 +0000</pubDate>
		<dc:creator>vicZen</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.vfresh.org/?p=829</guid>
		<description><![CDATA[今天jquery发布了1.4版本，看了下1.4的更新文档，主要是强化了部分原有的方法（批量/支持function参数等），新增了一些实用的方法以及性能优化。 大致如下： 修改内容： .add() 支持 .add( selector, context ) 方式 以下增加支持处理function方式：.addClass() .after() .before() .append() .css() .html() .prepend() .removeAttr() .removeClass() .replaceWith() .text() .toggleClass() .val() .wrap() .wrapAll() .wrapInner() .bind() 支持批量绑定事件 .closest()支持第二个参数(筛选元素的容器)，优化效率。用法：.closest( selector, [ context ] ) .data() 支持批量设值 $('body').data({one: 1, two: 2}); .index() 如果无参数，则返回在它兄弟级元素集合中的索引值；并支持使用选择器(selector)过滤 jQuery() 如果无参数，会返回一个空的数组（旧版本返回document）用 jQuery() 创建DOM时，可以使用第二个参数来设置属性值、绑定事件 查看示例 .offset() 新增功能可以直接设置元素相对于document的坐标，并支持function参数 jQuery.param() 第二个参数(布尔值)，可以设定是否进行URI编码 新增内容： .clearQueue() 清除.queue()生成的队列，如无参数将清除fx中的队列；类似于.stop(true) jQuery.contains() [...]]]></description>
			<content:encoded><![CDATA[<p>今天<a href="http://jquery14.com/" target="_blank">jquery发布了1.4版本</a>，看了下1.4的更新文档，主要是强化了部分原有的方法（批量/支持function参数等），新增了一些实用的方法以及性能优化。<br />
大致如下：</p>
<h2>修改内容：</h2>
<ol>
<li><code class="inline">.add()</code> 支持 <code class="inline">.add( selector, context )</code>  方式</li>
<li>以下增加支持处理function方式：<code class="inline">.addClass()</code> .<code class="inline">after()</code> <code class="inline">.before()</code> <code class="inline">.append()</code> <code class="inline">.css()</code> <code class="inline">.html()</code> <code class="inline">.prepend()</code> <code class="inline">.removeAttr()</code> <code class="inline">.removeClass()</code> <code class="inline">.replaceWith()</code> <code class="inline">.text()</code> <code class="inline">.toggleClass()</code> <code class="inline">.val()</code> <code class="inline">.wrap()</code> <code class="inline">.wrapAll()</code> <code class="inline">.wrapInner()</code> </li>
<li><code class="inline">.bind()</code> 支持批量绑定事件</li>
<li><code class="inline">.closest()</code>支持第二个参数(筛选元素的容器)，优化效率。用法：<code class="inline">.closest( selector, [ context ] )</code></li>
<li><code class="inline">.data()</code> 支持批量设值 <code class="inline">$('body').data({one: 1, two: 2});</code></li>
<li><code class="inline">.index()</code> 如果无参数，则返回在它兄弟级元素集合中的索引值；并支持使用选择器(selector)过滤</li>
<li><code class="inline">jQuery()</code> 如果无参数，会返回一个空的数组（旧版本返回document）<br />用 <code class="inline">jQuery()</code> 创建DOM时，可以使用第二个参数来设置属性值、绑定事件 <a href="http://api.jquery.com/jQuery/#example-1" title="">查看示例</a></li>
<li><code class="inline">.offset()</code> 新增功能可以直接设置元素相对于document的坐标，并支持function参数</li>
<li><code class="inline">jQuery.param()</code> 第二个参数(布尔值)，可以设定是否进行URI编码</li>
</ol>
<h2>新增内容：</h2>
<ol>
<li><code class="inline">.clearQueue()</code> 清除.queue()生成的队列，如无参数将清除fx中的队列；类似于.stop(true)</li>
<li><code class="inline">jQuery.contains()</code> 检测是元素否包含目标

<div class="wp_syntax"><div class="toolbar"><strong class="lang">javascript</strong></div><div class="code"><pre class="javascript">jQuery.<span style="color: #660066;">contains</span><span style="color: #009900;">&#40;</span>document.<span style="color: #660066;">documentElement</span><span style="color: #339933;">,</span> document.<span style="color: #660066;">body</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// true</span>
jQuery.<span style="color: #660066;">contains</span><span style="color: #009900;">&#40;</span>document.<span style="color: #660066;">body</span><span style="color: #339933;">,</span> document.<span style="color: #660066;">documentElement</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// false</span></pre></div></div>

</li>
<li><code class="inline">.delay()</code> 延迟执行队列 

<div class="wp_syntax"><div class="toolbar"><strong class="lang">html</strong></div><div class="code"><pre class="html"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">!DOCTYPE</span> html<span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">html</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">head</span><span style="color: #00bbdd;">&gt;</span>
  <span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">style</span><span style="color: #00bbdd;">&gt;</span>
div { width: 60px; height: 60px; float: left; }
.first { background-color: #3f3; }
.second { background-color: #33f;}
<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">style</span><span style="color: #00bbdd;">&gt;</span>
  <span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">script</span> <span style="color: #E46F47;">src</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js&quot;</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">script</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">head</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">body</span><span style="color: #00bbdd;">&gt;</span>
&nbsp;
<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">p</span><span style="color: #00bbdd;">&gt;&lt;</span><span style="color: #00bbdd;">button</span><span style="color: #00bbdd;">&gt;</span>Run<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">button</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">p</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;first&quot;</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;second&quot;</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
&nbsp;
<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">script</span><span style="color: #00bbdd;">&gt;</span>
    $(&quot;button&quot;).click(function() {
      $(&quot;div.first&quot;).slideUp(300).delay(800).fadeIn(400);
      $(&quot;div.second&quot;).slideUp(300).fadeIn(400);
    });
<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">script</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">body</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">html</span><span style="color: #00bbdd;">&gt;</span></pre></div></div>

</li>
<li><code class="inline">.detach()</code>  返回从元素数组中移除的匹配元素。</li>
<li><code class="inline">.focusin()</code> 是.bind(&#8216;focusin&#8217;, handler)的简写方式。</li>
<li><code class="inline">.focusout()</code> 是.bind(&#8216;focusout&#8217;, handler)的简写方式。</li>
<li><code class="inline">.has()</code> 筛选出包含有指定元素的集合

<div class="wp_syntax"><div class="toolbar"><strong class="lang">html</strong></div><div class="code"><pre class="html">	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">id</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;a&quot;</span><span style="color: #00bbdd;">&gt;&lt;</span><span style="color: #00bbdd;">strong</span><span style="color: #00bbdd;">&gt;</span>这个会被选中<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">strong</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">id</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;b&quot;</span><span style="color: #00bbdd;">&gt;</span>这个选不中<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">script</span> <span style="color: #E46F47;">type</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;text/javascript&quot;</span><span style="color: #00bbdd;">&gt;</span>
	$('div').has('strong').css('color','red');
	<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">script</span><span style="color: #00bbdd;">&gt;</span></pre></div></div>

</li>
<li><code class="inline">jQuery.isEmptyObject()</code> 检测对象是否为空值

<div class="wp_syntax"><div class="toolbar"><strong class="lang">javascript</strong></div><div class="code"><pre class="javascript">jQuery.<span style="color: #660066;">isEmptyObject</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span> <span style="color: #006600; font-style: italic;">// true</span>
jQuery.<span style="color: #660066;">isEmptyObject</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span> foo<span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;bar&quot;</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span> <span style="color: #006600; font-style: italic;">// false</span></pre></div></div>

</li>
<li><code class="inline">jQuery.isPlainObject( object )</code> 检测是否为pain object

<div class="wp_syntax"><div class="toolbar"><strong class="lang">javascript</strong></div><div class="code"><pre class="javascript">	jQuery.<span style="color: #660066;">isPlainObject</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	<span style="color: #006600; font-style: italic;">//true</span>
	jQuery.<span style="color: #660066;">isPlainObject</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'{}'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	<span style="color: #006600; font-style: italic;">//false</span></pre></div></div>

</li>
<li><code class="inline">.nextUntil([ selector ])</code> 查找当前元素之后到selector(参数)之间的同辈元素

<div class="wp_syntax"><div class="toolbar"><strong class="lang">javascript</strong></div><div class="code"><pre class="javascript">&lt;div id=&quot;a1&quot;&gt;3232323&lt;/div&gt;
&lt;div id=&quot;a&quot;&gt;&lt;strong&gt;这个会被选中&lt;/strong&gt;&lt;/div&gt;
&lt;div id=&quot;b&quot;&gt;这个选不中&lt;/div&gt;
&lt;div id=&quot;c&quot;&gt;ccc&lt;/div&gt;
&lt;div id=&quot;d&quot;&gt;ccc&lt;/div&gt;
<span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span>
$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#a'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">nextUntil</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#d'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	<span style="color: #006600; font-style: italic;">//取得[#b,#c]</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></div></div>

</li>
<li><code class="inline">.prevUntil([ selector ])</code>  查找当前元素之前到selector(参数)之间的同辈元素</li>
<li><code class="inline">.parentsUntil( [ selector ] )</code> 取得一个包含着所有匹配元素的祖先元素（直到找到selector截止）的元素集合</li>
<li><code class="inline">jQuery.noop</code> 空函数，当想定义一个空函数时可以用这个。</li>
<li><code class="inline">.toArray()</code> 取得所有匹配的 DOM 元素集合，有点类似于.get()</li>
<li><code class="inline">.unwrap()</code> 移除匹配元素的父级</li>
</ol>
<img src="http://www.vfresh.org/?ak_action=api_record_view&id=829&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.vfresh.org/js/829/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[译]IE6终极备忘：修复IE6下 25+ Bugs</title>
		<link>http://www.vfresh.org/w3c/727</link>
		<comments>http://www.vfresh.org/w3c/727#comments</comments>
		<pubDate>Fri, 08 Jan 2010 04:17:02 +0000</pubDate>
		<dc:creator>vicZen</dc:creator>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[浏览器兼容]]></category>

		<guid isPermaLink="false">http://www.vfresh.org/?p=727</guid>
		<description><![CDATA[去年就想将IE的bug系统地整理下，但一直都很忙没有完成，看到这篇E文后，我毫不犹豫的放下了手中的工作将之翻译出来。 由于是第一次译文，所以错误在所难免，欢迎大家批评指正。 原文：Ultimate IE6 Cheatsheet: How To Fix 25+ Internet Explorer 6 Bugs 翻译：http://www.vfresh.org/w3c/727(译文对原文进行了补充) 对IE6最好的策略就是不去兼容它。 好吧，我知道你的难处，你不得不去兼容IE6这个狗血的浏览器，因此不得不在兼容IE6上花费很多时间。对此，我颇有同感，让我来帮助你吧。 我不会象许多文章那样让你去抵制IE6，这并不会帮助到你(迫不得已时)去兼容IE6；因为IE6依旧占有一定的市场份额，你无法放弃IE6。本文将帮助你来解决这个难题。 我查阅过很多资料来摘录这些解决方案（有些是我自己提供的），现在我做成手册提供给大家搞定IE6这个家伙。我尽可能的提供了最优解决方案而不是一些hacks，并且提供了一些相关的资料。如果你发现有更好的方法或者本文有错误，请联系我。 【目录】 〖策略〗 在讨论IE6的BUG及如何修复之前，有必要先讲一些策略去避免这些恼人的问题——正所谓防患于未然 。 IE6 市场占有率 做一个简洁的设计 使用合适的文档申明(doctype) 验证你的代码 先对标准浏览器进行兼容 渐进增强(Progressive Enhancement) 使用自己的预设样式（CSS Reset） 使用JavaScript框架 使用JavaScript模拟标准浏览器 如何在IE下调试页面 〖对IE6单独兼容〗 兼容IE6的第一步就是单独对IE进行兼容，你针对IE6所写的代码只影响IE6。 使用IE特有条件注释 使用CSS选择器区分开IE6 使用JavaScript区分开IE6 〖图片〗 PNG半透明图片 IE6下的圆角 背景闪烁问题 〖布局〗 解决IE6布局方面的BUG非常的恼人！特别是在实现一个精美的设计稿时。 理解 hasLayout IE6 盒模型 最小高度 最大高度 100% 高度 最小宽度 [...]

<div class="relate-post"><h3>相关阅读</h3><ol class="list"><li><a href='http://www.vfresh.org/w3c/528' rel='bookmark' title='Permanent Link: 固宽背景图居中错位的问题'>固宽背景图居中错位的问题</a></li>
<li><a href='http://www.vfresh.org/w3c/766' rel='bookmark' title='Permanent Link: 小技巧：带分隔线左右布局的实现'>小技巧：带分隔线左右布局的实现</a></li>
<li><a href='http://www.vfresh.org/w3c/676' rel='bookmark' title='Permanent Link: 合理隐藏文字'>合理隐藏文字</a></li>
<li><a href='http://www.vfresh.org/w3c/9' rel='bookmark' title='Permanent Link: 纯CSS的图片展示效果'>纯CSS的图片展示效果</a></li>
<li><a href='http://www.vfresh.org/w3c/84' rel='bookmark' title='Permanent Link: HTML默认样式'>HTML默认样式</a></li>
</ol></div>]]></description>
			<content:encoded><![CDATA[<p>去年就想将IE的bug系统地整理下，但一直都很忙没有完成，看到这篇E文后，我毫不犹豫的放下了手中的工作将之翻译出来。<br />
由于是第一次译文，所以错误在所难免，欢迎大家批评指正。</p>
<p>原文：<a href="http://www.virtuosimedia.com/tutorials/ultimate-ie6-cheatsheet-how-to-fix-25-internet-explorer-6-bugs" target="_blank">Ultimate IE6 Cheatsheet: How To Fix 25+ Internet Explorer 6 Bugs</a></p>
<p>翻译：<a href="http://www.vfresh.org/w3c/727" title="vfresh-专注前端技术">http://www.vfresh.org/w3c/727</a><small>(译文对原文进行了补充)</small></p>
<p>对IE6最好的策略就是不去兼容它。</p>
<p>好吧，我知道你的难处，你不得不去兼容IE6这个狗血的浏览器，因此不得不在兼容IE6上花费很多时间。对此，我颇有同感，让我来帮助你吧。</p>
<p>我不会象许多文章那样让你去抵制IE6，这并不会帮助到你(迫不得已时)去兼容IE6；因为IE6依旧占有一定的市场份额，你无法放弃IE6。本文将帮助你来解决这个难题。</p>
<p>我查阅过很多资料来摘录这些解决方案（有些是我自己提供的），现在我做成手册提供给大家搞定IE6这个家伙。我尽可能的提供了最优解决方案而不是一些hacks，并且提供了一些相关的资料。如果你发现有更好的方法或者本文有错误，请联系我。</p>
<p><span id="more-727"></span></p>
<div id="contents">
<h2><big>【目录】</big></h2>
<h2><a href="#strategies">〖策略〗</a></h2>
<p>在讨论IE6的BUG及如何修复之前，有必要先讲一些策略去避免这些恼人的问题——正所谓防患于未然 。</p>
<ul>
<li><a href="#market-share">IE6 市场占有率</a></li>
<li><a href="#plan-design">做一个简洁的设计</a></li>
<li><a href="#use-doctype">使用合适的文档申明(doctype)</a></li>
<li><a href="#validate">验证你的代码</a></li>
<li><a href="#standards-compliant">先对标准浏览器进行兼容</a></li>
<li><a href="#progressive-enhancement">渐进增强(Progressive Enhancement)</a></li>
<li><a href="#css-reset">使用自己的预设样式（CSS Reset）</a></li>
<li><a href="#js-framework">使用JavaScript框架</a></li>
<li><a href="#js-fix-script">使用JavaScript模拟标准浏览器</a></li>
<li><a href="#debug-ie">如何在IE下调试页面</a></li>
</ul>
<h2><a href="#isolate-ie6">〖对IE6单独兼容〗</a></h2>
<p>兼容IE6的第一步就是单独对IE进行兼容，你针对IE6所写的代码只影响IE6。</p>
<ul>
<li><a href="#conditional-comments">使用IE特有条件注释</a></li>
<li><a href="#css-selectors">使用CSS选择器区分开IE6</a></li>
<li><a href="#javascript-detection">使用JavaScript区分开IE6</a></li>
</ul>
<h2><a href="#images">〖图片〗</a></h2>
<ul>
<li><a href="#PNG-Alpha-Transparency">PNG半透明图片</a></li>
<li><a href="#rounded-corners">IE6下的圆角</a></li>
<li><a href="#background-flicker">背景闪烁问题</a></li>
</ul>
<h2><a href="#layout">〖布局〗</a></h2>
<p>解决IE6布局方面的BUG非常的恼人！特别是在实现一个精美的设计稿时。</p>
<ul>
<li><a href="#understanding-hasLayout">理解 hasLayout</a></li>
<li><a href="#ie6-box-model">IE6 盒模型</a></li>
<li><a href="#min-height">最小高度</a></li>
<li><a href="#max-height">最大高度</a></li>
<li><a href="#one-hundred-percent-height">100% 高度</a></li>
<li><a href="#min-width">最小宽度</a></li>
<li><a href="#max-width">最大宽度</a></li>
<li><a href="#float-bug">双边距Bug</a></li>
<li><a href="#clearfix">清除浮动</a></li>
<li><a href="#float-drop">浮动层错位</a></li>
<li><a href="#guillotine">躲猫猫bug（The Guillotine Bug）</a></li>
<li><a href="#one-px-gap">绝对定位元素的1像素间距bug</a></li>
<li><a href="#three-px-gap">3像素间距bug</a></li>
<li><a href="#ie-z-index">IE下z-index的bug</a></li>
<li><a href="#overflow-bug">Overflow Bug</a></li>
</ul>
<h2><a href="#lists">〖列表〗</a></h2>
<ul>
<li><a href="#list-item-width">横向列表宽度bug</a></li>
<li><a href="#staircase-bug">列表阶梯bug</a></li>
<li><a href="#whitespace-bug">列表间隙bug</a></li>
</ul>
<h2><a href="#behavior">〖行为〗</a></h2>
<p>ie6有着一些行为方面的BUG，究其原因是IE6版本太老了，不能完好地支持CSS2更不支持CSS3，而且微软固执的使用了其私有方法。</p>
<ul>
<li><a href="#no-hover-state">IE6中的:hover</a></li>
<li><a href="#canvas-ie">在IE浏览其中使用<code class="inline">Canvas</code>标签</a></li>
<li><a href="#ie6-resize-bug">IE6调整窗口大小的 Bug</a></li>
</ul>
<h2><a href="#javascript">〖JavaScript〗</a></h2>
<p>IE6有着数不尽的JavaScript bug，这里我不会讲解每一个IE6下JavaScript的bug，只摘取其中几个普遍的问题来讨论。</p>
<ul>
<li><a href="#expected-identifier">异常： Expected Identifier, String, Or Number</a></li>
<li><a href="#ie-javascript-memory-leaks">IE中JavaScript内存泄露</a></li>
</ul>
<h2><a href="#miscellaneous">〖其他〗</a></h2>
<ul>
<li><a href="#duplicate-characters-bug">文本重复Bug</a></li>
<li><a href="#favicons-ie">收藏夹图标</a></li>
<li><a href="#gzip-ie6">IE6中GZip文件Bug</a></li>
</ul>
<h2><a href="#bonus-resources">〖相关资源〗</a></h2>
</div>
<h2 id="strategies">〖策略〗</h2>
<p>在讨论IE6的BUG及如何修复之前，有必要讲叙一些策略去避免这些恼人的问题——正所谓防患于未然 。</p>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="market-share">IE6 市场占有率</h3>
<p>据Market Share统计，目前（2009年8月）IE6 的市场占有率为<a href="http://marketshare.hitslink.com/browser-market-share.aspx?qprid=2" rel="nofollow">25.25%</a>，但是其他地方的统计明显要低，为<a href="http://gs.statcounter.com/#browser_version-ww-monthly-200808-200909" rel="nofollow">18.1%</a>；尽管统计结果不同，但都呈现出了下降的趋势（翻译此文时，<a href="https://twitter.com/TaobaoUED/status/7356340607" title="">淘宝的IE6用户已从70%跌破至69%</a>）。但是最重要的，还是你自己网站的统计数据。如果你对你的网站进行了流量分析，那么IE6的占有率是否值得你去针对IE6进行开发？这需要你自己去权衡。</p>
<p>如果你网站绝大部分访问者不使用IE6并且不付费给你，那么你不必特意区针对IE6做兼容，从而节省时间、精力及资金。</p>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="plan-design">做一个简洁的设计</h3>
<p>在做设计的同时考虑代码的实现，可以避免一些布局上的问题。再复杂的设计稿也能用简洁的代码实现，如果你使用了过于繁冗的标签，那么你需要重新修缮设计稿。</p>
<p>如果你有丰富的开发经历，攻克过很多种布局难题，记录下你的解决方案，在以后碰到相同问题时可以提高开发效率。</p>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="use-doctype">使用合适的文档申明(doctype)</h3>
<p>使用一个错误的文档声明会触发quirks mode(怪异模式)，正确的文档声明可以保证你的页面在所有浏览器下保持一致的效果。使用其中的一个文档申明：<code class="inline">HTML 5</code>, <code class="inline">HTML 4.01 Strict</code>, <code class="inline">HTML 4.01 Frameset</code>, <code class="inline">HTML 4.01 Transitional</code>, <code class="inline">XHTML 1.0 Strict</code>, <code class="inline">XHTML 1.0 Frameset</code>, <code class="inline">XHTML 1.0 Transitional</code>, or <code class="inline">XHTML 1.1</code></p>
<h4>HTML 5</h4>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">html</strong></div><div class="code"><pre class="html"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">!DOCTYPE</span> HTML<span style="color: #00bbdd;">&gt;</span></pre></div></div>

<h4>HTML 4.01 Strict</h4>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">html</strong></div><div class="code"><pre class="html"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">!DOCTYPE</span> HTML PUBLIC <span style="color: #FC3901;">&quot;-//W3C//DTD HTML 4.01//EN&quot;</span> <span style="color: #FC3901;">&quot;http://www.w3.org/TR/html4/strict.dtd&quot;</span><span style="color: #00bbdd;">&gt;</span></pre></div></div>

<h4>HTML 4.01 Frameset</h4>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">html</strong></div><div class="code"><pre class="html"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">!DOCTYPE</span> HTML PUBLIC <span style="color: #FC3901;">&quot;-//W3C//DTD HTML 4.01 Frameset//EN&quot;</span> <span style="color: #FC3901;">&quot;http://www.w3.org/TR/html4/frameset.dtd&quot;</span><span style="color: #00bbdd;">&gt;</span></pre></div></div>

<h4>HTML 4.01 Transitional</h4>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">html</strong></div><div class="code"><pre class="html"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">!DOCTYPE</span> HTML PUBLIC <span style="color: #FC3901;">&quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;</span> <span style="color: #FC3901;">&quot;http://www.w3.org/TR/html4/loose.dtd&quot;</span><span style="color: #00bbdd;">&gt;</span></pre></div></div>

<h4>XHTML 1.0 Strict</h4>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">html</strong></div><div class="code"><pre class="html"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">!DOCTYPE</span> html PUBLIC <span style="color: #FC3901;">&quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;</span> <span style="color: #FC3901;">&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;</span><span style="color: #00bbdd;">&gt;</span></pre></div></div>

<h4>XHTML 1.0 Frameset</h4>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">html</strong></div><div class="code"><pre class="html"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">!DOCTYPE</span> html PUBLIC <span style="color: #FC3901;">&quot;-//W3C//DTD XHTML 1.0 Frameset//EN&quot;</span> <span style="color: #FC3901;">&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd&quot;</span><span style="color: #00bbdd;">&gt;</span></pre></div></div>

<h4>XHTML 1.0 Transitional</h4>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">html</strong></div><div class="code"><pre class="html"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">!DOCTYPE</span> html PUBLIC <span style="color: #FC3901;">&quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;</span> <span style="color: #FC3901;">&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;</span><span style="color: #00bbdd;">&gt;</span></pre></div></div>

<h4>XHTML 1.1</h4>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">html</strong></div><div class="code"><pre class="html"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">!DOCTYPE</span> html PUBLIC <span style="color: #FC3901;">&quot;-//W3C//DTD XHTML 1.1//EN&quot;</span> <span style="color: #FC3901;">&quot;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&quot;</span><span style="color: #00bbdd;">&gt;</span></pre></div></div>

<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="validate">验证你的代码</h3>
<p>我曾听说过有些人认为校验代码没有任何实用价值，但我不这么认为。校验仅仅只需花费一点点时间，而且将受益于<strong>所有</strong>浏览器而非仅仅IE6；验证确保了向后兼容并且易于维护。至少也得验证XHTML！唯一可以忽略验证的情况是在你打算使用CSS3时。</p>
<p>你可以使用w3提供的工具<a href="http://validator.w3.org/" title="验证HTML" target="_blank">验证XHTML</a>/<a href="http://jigsaw.w3.org/css-validator/" target="_blank" title="验证CSS">验证CSS</a></p>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="standards-compliant">先对标准浏览器进行兼容</h3>
<p>在写代码的过程中，一开始在标准浏览器中测试（如 Firefox, Opera, Chrome等），然后再去测试非标准浏览器（如IE6/IE7），因为这些标准浏览器都遵循w3c标准，大多的处理方式都相同。你可以分开来单独去兼容“特别”的IE浏览器，这样做能规范你的代码，你将会因此拥有扎实的基础；而且如果你不再需要兼容这些非标准浏览器，你可以一次性删除这些修复兼容性代码。</p>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="progressive-enhancement">渐进增强(Progressive Enhancement)</h3>
<p><a href="http://lifesinger.org/blog/2008/10/understand-progressive-enhancement/" title="">渐进增强(Progressive Enhancement)</a>是为了确保没有页面特效后基本功能也是可用的。简单来讲，渐进增强是指在确保页面在禁用JavaScript后能正常运作后，再对页面添加各种特效（JavaScript动画、Ajax异步等等）。我们同样可以运用“渐进增强”原则来使用CSS3（或者一些CSS2）、HTML5以及其他IE6所不支持的web规范。</p>
<p>某些情况下，是无法让所有用户在任何浏览器下都完全一模一样，特别是那些使用IE6的用户。运用渐进增强策略，可以保证让那些用户至少使用到你网站（或网络应用）的基本功能。</p>
<h4>更多渐进增强的资料：</h4>
<ul>
<li><a href="http://lifesinger.org/blog/2008/10/understand-progressive-enhancement/" title="">理解渐进增强（译文）</a></li>
<li><a href="http://www.alistapart.com/articles/understandingprogressiveenhancement/" rel="nofollow">Understanding Progressive Enhancement</a></li>
<li><a href="http://www.alistapart.com/articles/progressiveenhancementwithcss/" rel="nofollow">Progressive Enhancement With CSS</a></li>
<li><a href="http://www.smashingmagazine.com/2009/04/22/progressive-enhancement-what-it-is-and-how-to-use-it/" rel="nofollow">Progressive Enhancement: What It Is, And How To Use It?</a></li>
<li><a href="http://dev.opera.com/articles/view/graceful-degradation-progressive-enhance/" rel="nofollow">Graceful Degradation vs. Progressive Enhancement</a></li>
<li><a href="http://icant.co.uk/articles/pragmatic-progressive-enhancement/" rel="nofollow">Pragmatic Progressive Enhancement &#8211; Why You Should Bother With It</a></li>
</ul>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="css-reset">使用自己的预设样式（CSS Reset）</h3>
<p>每个浏览器都有各自不同的预设样式，在你的样式表之前使用预设样式（CSS Reset）可以避免在之后编写冗长的浏览器兼容样式。在网上有很多CSS Reset可供参考。</p>
<h4>简单CSS Reset示例：</h4>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">css</strong></div><div class="code"><pre class="css"><span style="color: #3399CC;">body</span><span style="color: #939393;">,</span><span style="color: #3399CC;">div</span><span style="color: #939393;">,</span><span style="color: #3399CC;">ul</span><span style="color: #939393;">,</span><span style="color: #3399CC;">ol</span><span style="color: #939393;">,</span><span style="color: #3399CC;">li</span><span style="color: #939393;">,</span><span style="color: #3399CC;">h1</span><span style="color: #939393;">,</span><span style="color: #3399CC;">h2</span><span style="color: #939393;">,</span><span style="color: #3399CC;">h3</span><span style="color: #939393;">,</span><span style="color: #3399CC;">h4</span><span style="color: #939393;">,</span><span style="color: #3399CC;">h5</span><span style="color: #939393;">,</span><span style="color: #3399CC;">h6</span><span style="color: #939393;">,</span><span style="color: #3399CC;">form</span><span style="color: #939393;">,</span>fieldset<span style="color: #939393;">,</span><span style="color: #3399CC;">input</span><span style="color: #939393;">,</span>textarea<span style="color: #939393;">,</span><span style="color: #3399CC;">p</span><span style="color: #939393;">,</span><span style="color: #3399CC;">th</span><span style="color: #939393;">,</span><span style="color: #3399CC;">td</span> <span style="color: #939393;">&#123;</span><span style="color: #F96433;">margin</span><span style="color: #939393;">:</span><span style="color: #cc66cc;">0</span><span style="color: #939393;">;</span>padding<span style="color: #939393;">:</span><span style="color: #cc66cc;">0</span><span style="color: #939393;">;</span><span style="color: #939393;">&#125;</span></pre></div></div>

<h4>一些可供参考的CSS Resets：</h4>
<ul>
<li><a href="http://yui.yahooapis.com/2.6.0/build/reset/reset-min.css" rel="nofollow">YUI CSS Reset</a></li>
<li><a href="http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/" rel="nofollow">Eric Meyer&#8217;s Reset Reloaded</a></li>
<li><a href="http://lifesinger.org/blog/2009/12/kissy-css-reset/" title="KISSY CSS Reset">KISSY CSS Reset</a></li>
</ul>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="js-framework">使用JavaScript框架</h3>
<p>如果你的网站使用了较多的JavaScript特效，建议使用JavaScript框架。大部分的js框架都兼容了包括IE6在内的各种浏览器。可选的框架有很多，但一般能用一种框架实现的效果一定可以用另外一种框架实现，所以你可以根据个人喜好来选择合适的框架。</p>
<p>以下是一些常用的JavaScript框架：</p>
<ul>
<li><a href="http://mootools.net" rel="nofollow">MooTools</a></li>
<li><a href="http://jquery.com/" rel="nofollow">jQuery</a></li>
<li><a href="http://prototypejs.org/" rel="nofollow">ProtoType</a> with <a href="http://script.aculo.us/" rel="nofollow">Scriptaculous</a></li>
<li><a href="http://www.dojotoolkit.org/" rel="nofollow">Dojo</a></li>
<li><a href="http://extjs.com/" rel="nofollow">Ext JS</a></li>
</ul>
<p>强烈推荐实用MooTools，但如果你是入门者，还是建议使用jQuery。</p>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="js-fix-script">使用JavaScript模拟标准浏览器</h3>
<p>现在有一些JavaScript来使IE模拟标准浏览器，如果你有较高比例的用户使用IE6并且开启了JavaScript，可以考虑使用<a href="http://dean.edwards.name/" title="">Dean Edwards</a>的<a href="http://code.google.com/p/ie7-js/" rel="nofollow">IE7</a>或者类似的脚本。</p>
<p><small>译者注：不建议使用这些脚本，因为这些“模拟”的实现往往会消耗大量的资源，IE本来就够烂了。</small></p>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="debug-ie">如何在IE下调试页面</h3>
<p>在IE下调试页面很麻烦，Firefox下的扩展程序<a href="http://getfirebug.com/" rel="nofollow">Firebug</a>和<a href="https://addons.mozilla.org/en-US/firefox/addon/60" rel="nofollow">Web Developer Toolbar</a>都是很好用的工具，如果你想在IE或其他浏览器上使用firebug，可以用<a href="http://getfirebug.com/lite.html" rel="nofollow">Firebug Lite</a>。</p>
<p>在IE下有两种最好的调试方法：<a href="http://finalbuilds.edskes.com/iecollection.htm" rel="nofollow">IE Collection</a>和<a href="http://www.my-debugbar.com/wiki/IETester/HomePage" rel="nofollow">IETester</a>，并且都是免费的（虽然有一点点缺陷）。IETester的开发者也提供了<a href="http://www.debugbar.com/" rel="nofollow">DebugBar</a>这款IE插件免费供个人使用，但商业用户只可试用60天。</p>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h2 id="isolate-ie6">〖对IE6单独兼容〗</h2>
<p>兼容IE6的第一步就是单独对IE进行兼容，你针对IE6所写的代码只影响IE6；有几种方法可以区分开IE6：IE特有条件注释、CSS选择器、JavaScript，我们将逐一讨论。</p>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="conditional-comments">使用IE特有条件注释</h3>
<p>微软给IE添加了条件注释以区分不同版本，任何东西都可以塞进条件注释里：标签、JavaScript、js文件、css、内联样式。可以使用条件注释来针对某一个IE浏览器版本来编写代码。</p>
<p>规则如下：<small>（译注：可参考<a href="http://www.vfresh.org/category/w3c/page/3" title="">IE 特有注释(hack)</a>）</small></p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">html</strong></div><div class="code"><pre class="html"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">p</span><span style="color: #00bbdd;">&gt;</span>这段文字会在所有浏览器显示<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">p</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #616161"><span style="color: #00bbdd;">&lt;</span>!--<span style="color: #6078BF;">&#91;</span>if lte IE <span style="color: #cc66cc;">6</span><span style="color: #6078BF;">&#93;</span><span style="color: #00bbdd;">&gt;</span></span>
<span style="color: #616161"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">p</span><span style="color: #00bbdd;">&gt;</span>这段文字仅显示在 IE6及IE6以下版本。<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">p</span><span style="color: #00bbdd;">&gt;</span></span>
<span style="color: #616161"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">p</span><span style="color: #00bbdd;">&gt;</span>This message will only appear in versions of Internet Explorer less than or equal to <span style="color: #E46F47;">version</span> <span style="color: #cc66cc;">6</span>.<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">p</span><span style="color: #00bbdd;">&gt;</span></span>
<span style="color: #616161"><span style="color: #00bbdd;">&lt;</span>!<span style="color: #6078BF;">&#91;</span>endif<span style="color: #6078BF;">&#93;</span>--<span style="color: #00bbdd;">&gt;</span></span>
&nbsp;
<span style="color: #616161"><span style="color: #00bbdd;">&lt;</span>!--<span style="color: #6078BF;">&#91;</span>if gte IE <span style="color: #cc66cc;">6</span><span style="color: #6078BF;">&#93;</span><span style="color: #00bbdd;">&gt;</span></span>
<span style="color: #616161"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">p</span><span style="color: #00bbdd;">&gt;</span>这段文字仅显示在 IE6及IE6以上版本。<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">p</span><span style="color: #00bbdd;">&gt;</span></span>
<span style="color: #616161"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">p</span><span style="color: #00bbdd;">&gt;</span>This message will only appear in versions of Internet Explorer greater than or equal to <span style="color: #E46F47;">version</span> <span style="color: #cc66cc;">6</span>.<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">p</span><span style="color: #00bbdd;">&gt;</span></span>
<span style="color: #616161"><span style="color: #00bbdd;">&lt;</span>!<span style="color: #6078BF;">&#91;</span>endif<span style="color: #6078BF;">&#93;</span>--<span style="color: #00bbdd;">&gt;</span></span>
&nbsp;
<span style="color: #616161"><span style="color: #00bbdd;">&lt;</span>!--<span style="color: #6078BF;">&#91;</span>if gt IE <span style="color: #cc66cc;">6</span><span style="color: #6078BF;">&#93;</span><span style="color: #00bbdd;">&gt;</span></span>
<span style="color: #616161"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">p</span><span style="color: #00bbdd;">&gt;</span>这段文字仅显示在 IE6以上版本（不包含IE6）。<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">p</span><span style="color: #00bbdd;">&gt;</span></span>
<span style="color: #616161"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">p</span><span style="color: #00bbdd;">&gt;</span>This message will only appear in versions of Internet Explorer greater than <span style="color: #E46F47;">version</span> <span style="color: #cc66cc;">6</span>.<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">p</span><span style="color: #00bbdd;">&gt;</span></span>
<span style="color: #616161"><span style="color: #00bbdd;">&lt;</span>!<span style="color: #6078BF;">&#91;</span>endif<span style="color: #6078BF;">&#93;</span>--<span style="color: #00bbdd;">&gt;</span></span>
&nbsp;
<span style="color: #616161"><span style="color: #00bbdd;">&lt;</span>!--<span style="color: #6078BF;">&#91;</span>if IE <span style="color: #cc66cc;">5.5</span><span style="color: #6078BF;">&#93;</span><span style="color: #00bbdd;">&gt;</span></span>
<span style="color: #616161"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">p</span><span style="color: #00bbdd;">&gt;</span>这段文字仅显示在 IE5.5。<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">p</span><span style="color: #00bbdd;">&gt;</span></span>
<span style="color: #616161"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">p</span><span style="color: #00bbdd;">&gt;</span>This message will only appear in Internet Explorer <span style="color: #cc66cc;">5.5</span>.<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">p</span><span style="color: #00bbdd;">&gt;</span></span>
<span style="color: #616161"><span style="color: #00bbdd;">&lt;</span>!<span style="color: #6078BF;">&#91;</span>endif<span style="color: #6078BF;">&#93;</span>--<span style="color: #00bbdd;">&gt;</span></span>
&nbsp;
<span style="color: #616161"><span style="color: #00bbdd;">&lt;</span>!--在 IE6及IE6以下版本中加载css--<span style="color: #00bbdd;">&gt;</span></span>
<span style="color: #616161"><span style="color: #00bbdd;">&lt;</span>!--<span style="color: #6078BF;">&#91;</span>if lte IE <span style="color: #cc66cc;">6</span><span style="color: #6078BF;">&#93;</span><span style="color: #00bbdd;">&gt;</span></span>
<span style="color: #616161"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">link</span> <span style="color: #E46F47;">type</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;text/css&quot;</span> <span style="color: #E46F47;">rel</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;stylesheet&quot;</span> <span style="color: #E46F47;">href</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;css/ie6.css&quot;</span> <span style="color: #00bbdd;">/&gt;</span></span>
<span style="color: #616161"><span style="color: #00bbdd;">&lt;</span>!<span style="color: #6078BF;">&#91;</span>endif<span style="color: #6078BF;">&#93;</span>--<span style="color: #00bbdd;">&gt;</span></span>
&nbsp;
<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">p</span><span style="color: #00bbdd;">&gt;</span>这段文字会在所有浏览器显示<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">p</span><span style="color: #00bbdd;">&gt;</span></pre></div></div>

<p>使用条件注释加载css的好处是这些样式是独立于其他css文件的，因此不会在编写兼容代码时弄得一团糟；而且当IE6的市场份额降低到不需要兼容时，可以快速的清理掉。</p>
<p>使用条件注释的唯一缺点是在IE浏览器下会增加额外的HTTP请求数，所以需要权衡是否这样做。但我不建议使用条件注释加载外部js文件，因为js文件会造成阻滞，在js未加载完之前其余文件都不会被加载；对于js请使用JavaScript程序来区分浏览器而非条件注释。</p>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="css-selectors">使用CSS选择器区分开IE6</h3>
<p>如果你不打算使用条件注释，CSS选择器是另外一个区分开IE6的办法，IE6不支持子选择器；先针对IE6使用常规申明CSS选择器，然后再用子选择器针对IE7+及其他浏览器。</p>
<p>示例：</p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">html</strong></div><div class="code"><pre class="html"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">style</span> <span style="color: #E46F47;">type</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;text/css&quot;</span> <span style="color: #00bbdd;">&gt;</span>
/* IE6 专用 */
.content {color:red;}
/* 其他浏览器 */
div&gt;p .content {color:blue;}
<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">style</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">p</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;header&quot;</span><span style="color: #00bbdd;">&gt;</span>Some Header Text Here<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">p</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span></pre></div></div>

<p>这个方法的缺点是容易把样式表弄得一团糟，所以一定要写好注释说明。</p>
<p>在示例中，针对IE6写的样式在其他浏览器中也会执行，但(标准浏览器中)之后的子选择器覆盖了之前的申明，而IE6不支持子选择器所以忽略了它。</p>
<h4>扩展阅读：</h4>
<ul>
<li><a href="http://www.quirksmode.org/css/contents.html" rel="nofollow">CSS Browser Compatibility Chart</a></li>
<li><a href="http://www.quirksmode.org/compatibility.html" rel="nofollow">Master Browser Compatibility Chart</a></li>
</ul>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="javascript-detection">使用JavaScript区分开IE6</h3>
<p>如果你想要使用JavaScript区分开IE6，请看示例：</p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">javascript</strong></div><div class="code"><pre class="javascript"><span style="color: #006600; font-style: italic;">//原生JavaScript</span>
<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">typeof</span> document.<span style="color: #660066;">body</span>.<span style="color: #660066;">style</span>.<span style="color: #660066;">maxHeight</span> <span style="color: #339933;">===</span> <span style="color: #3366CC;">&quot;undefined&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'IE6 Detected'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//MooTools（框架）</span>
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>Browser.<span style="color: #660066;">Engine</span>.<span style="color: #660066;">trident4</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'IE6 Detected'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//jQuery（框架）</span>
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>$.<span style="color: #660066;">browser</span>.<span style="color: #660066;">msie</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #009900;">&#40;</span>$.<span style="color: #660066;">browser</span>.<span style="color: #660066;">version</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">&quot;6.0&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'IE6 Detected'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<h4>扩展阅读：</h4>
<ul>
<li><a href="http://www.quirksmode.org/js/detect.html" rel="nofollow">Quirksmode&#8217;s Browser Object</a></li>
<li><a href="http://mootools.net/docs/core/Core/Browser" rel="nofollow">MooTools&#8217; Browser Object</a></li>
<li><a href="http://docs.jquery.com/Utilities/jQuery.support" rel="nofollow">jQuery&#8217;s support utility</a></li>
</ul>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h2 id="images">〖图片〗</h2>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="PNG-Alpha-Transparency">PNG半透明图片</h3>
<p>有很多JavaScript解决方案来修复IE6使用PNG-24图片，但除了<a href="http://www.twinhelix.com/css/iepngfix/" rel="nofollow">Twin Helix&#8217;s IE5.5+ PNG Alpha Fix</a>都不支持CSS sprites。</p>
<p>另外一个办法是使用IE特有的滤镜，可阅读<a href="http://www.belafontecode.com/create-transparent-pngs-in-ie6-using-alphaimageloader-no-hacks/" rel="nofollow">Aaron Baxter的博客</a>。<small>或译者的<a href="http://www.vfresh.org/w3c/52" title="">《ie5+ PNG Fix》</a></small></p>
<h4>JavaScript方式修复IE6 PNG</h4>
<ul>
<li><a href="http://www.clientcide.com/wiki/cnet-libraries/02-browser/01-fixpng" rel="nofollow">MooTools&#8217; FixPNG</a></li>
<li><a href="http://jquery.andreaseberhard.de/pngFix/" rel="nofollow">jQuery PNG fix</a></li>
<li><a href="http://www.twinhelix.com/css/iepngfix/" rel="nofollow">IE PNG Fix by Twin Helix</a></li>
<li><a href="http://entropymine.com/jason/tweakpng/" rel="nofollow">TweakPNG</a></li>
<li><a href="http://www.dillerdesign.com/experiment/DD_belatedPNG/" rel="nofollow">DD_belatedPNG</a></li>
</ul>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="rounded-corners">IE6下的圆角</h3>
<p>可以详细阅读<a href="http://www.virtuosimedia.com/tutorials/css-rounded-corner-menus">CSS 圆角菜单</a>。</p>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="background-flicker">背景闪烁问题</h3>
<p>如果你给链接、按钮用CSS sprites作为背景，你可能会发现在IE6下会有背景图闪烁的现象。造成这个的原因是由于IE6没有将背景图缓存，每次触发hover的时候都会重新加载，可以用JavaScript设置IE6缓存这些图片：</p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">javascript</strong></div><div class="code"><pre class="javascript">	document.<span style="color: #660066;">execCommand</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;BackgroundImageCache&quot;</span><span style="color: #339933;">,</span><span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h4>其他解决方法：</h4>
<ul>
<li><a href="http://www.fivesevensix.com/studies/ie6flicker/" rel="nofollow">Minimize Flickering CSS Background Images in IE6</a></li>
</ul>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h2 id="layout">〖布局〗</h2>
<p>解决IE6布局方面的BUG非常的恼人！特别是在实现一个精美的设计稿时。</p>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="understanding-hasLayout">理解 hasLayout</h3>
<p>许多IE6下的Bug及渲染问题都可以归于微软的私有概念<code class="inline">hasLayout</code>。简要的说，在给元素定义具体的尺寸（如<code class="inline">height</code>或<code class="inline">width</code>）就会触发<code class="inline">hasLayout</code>，在IE6下缺失或触发hasLayout会导致一些bug。</p>
<h4>扩展阅读：</h4>
<ul>
<li><a href="http://bbs.blueidea.com/thread-2636904-1-1.html" title="">《On having layout》</a>(译文)</li>
<li><a href="http://msdn.microsoft.com/en-us/library/bb250481(VS.85).aspx" rel="nofollow">&#8220;HasLayout&#8221; Overview</a> from Microsoft</li>
<li><a href="http://haslayout.net/css/" title="">hasLayout CSS Bugs</a></li>
</ul>
<h3 id="ie6-box-model">IE6 盒模型</h3>
<p>如果<a href="http://en.wikipedia.org/wiki/Quirks_mode" rel="nofollow">怪异模式（quirks mode）</a>在IE6中启用，IE6将会使用微软旧版的盒模型：width是元素的实际宽度，内容宽度 = width &#8211; (margin-left + margin-right + padding-left + padding-right + border-left-width + border-right-width)。最好的办法是申明正确的<a href="#use-doctype" title="">文档类型</a>以避免触发怪异模式，或者避免给有<code class="inline">border</code>或<code class="inline">padding</code>的元素定义<code class="inline">width</code>属性。当然你也可以考虑使用条件注释。</p>
<h4>扩展阅读：</h4>
<ul>
<li><a href="http://css-tricks.com/ie-css-bugs-thatll-get-you-every-time/" rel="nofollow">IE CSS Tricks That Will Get You Every Time</a></li>
<li><a href="http://www.456bereastreet.com/archive/200612/internet_explorer_and_the_css_box_model/" rel="nofollow">Internet Explorer And The CSS Box Model</a></li>
<li><a href="http://en.wikipedia.org/wiki/Internet_Explorer_box_model_bug" rel="nofollow">Internet Explorer Box Model Bug</a></li>
</ul>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="min-height">最小高度</h3>
<p>IE6 不支持<code class="inline">min-height</code>属性，但它却认为<code class="inline">height</code>就是最小高度。感谢<a href="http://www.dustindiaz.com/min-height-fast-hack/" rel="nofollow">Dustin Diaz</a>提供了一个很好的方法：使用<code class="inline">!important</code>，ie6会忽视它但其余浏览器不会。</p>
<p><small>注：IE6在同一个声明语句中(即一个综括号<code class="inline">{}</code>)的属性定义，后面的总是会覆盖前面的，所以下例中后面的height覆盖掉了前面定义的important height</small></p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">css</strong></div><div class="code"><pre class="css"><span style="color: #616161;">/* 所有浏览器 */</span>
<span style="color: #3399CC;">#container</span> <span style="color: #939393;">&#123;</span><span style="color: #F96433;">min-height</span><span style="color: #939393;">:</span><span style="color: #99CC33;">200px</span><span style="color: #939393;">;</span> <span style="color: #F96433;">height</span><span style="color: #939393;">:</span><span style="color: #99CC33;">auto</span> !important<span style="color: #939393;">;</span> <span style="color: #F96433;">height</span><span style="color: #939393;">:</span><span style="color: #99CC33;">200px</span><span style="color: #939393;">;</span><span style="color: #939393;">&#125;</span></pre></div></div>

<p>另一个方法是使用CSS 选择器：</p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">css</strong></div><div class="code"><pre class="css"><span style="color: #616161;">/* 仅IE6 */</span>
<span style="color: #3399CC;">#container</span> <span style="color: #939393;">&#123;</span><span style="color: #F96433;">min-height</span><span style="color: #939393;">:</span><span style="color: #99CC33;">200px</span><span style="color: #939393;">;</span> <span style="color: #F96433;">height</span><span style="color: #939393;">:</span><span style="color: #99CC33;">200px</span><span style="color: #939393;">;</span><span style="color: #939393;">&#125;</span>
&nbsp;
<span style="color: #616161;">/* 其他浏览器 */</span>
html<span style="color: #939393;">&gt;</span>body <span style="color: #3399CC;">#container</span> <span style="color: #939393;">&#123;</span> <span style="color: #F96433;">height</span><span style="color: #939393;">:</span><span style="color: #99CC33;">auto</span><span style="color: #939393;">;</span><span style="color: #939393;">&#125;</span></pre></div></div>

<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="max-height">最大高度</h3>
<p>非常遗憾，在IE6下实现<code class="inline">max-height</code>只能使用IE特有滤镜，或者可以使用JavaScript实现。我个人更建议使用JavaScript来解决，因为IE滤镜会消耗大量资源甚至会使浏览器崩溃，而且禁用JavaScript后这两种方法都无法生效。</p>
<h4>JavaScript</h4>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">javascript</strong></div><div class="code"><pre class="javascript"><span style="color: #006600; font-style: italic;">//直接使用ID来改变元素的最大高度</span>
<span style="color: #003366; font-weight: bold;">var</span> container <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'container'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
container.<span style="color: #660066;">style</span>.<span style="color: #660066;">height</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>container.<span style="color: #660066;">scrollHeight</span> <span style="color: #339933;">&gt;</span> <span style="color: #CC0000;">199</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">?</span> <span style="color: #3366CC;">&quot;200px&quot;</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;auto&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//写成函数来运行</span>
<span style="color: #003366; font-weight: bold;">function</span> setMaxHeight<span style="color: #009900;">&#40;</span>elementId<span style="color: #339933;">,</span> height<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> container <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span>elementId<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	container.<span style="color: #660066;">style</span>.<span style="color: #660066;">height</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>container.<span style="color: #660066;">scrollHeight</span> <span style="color: #339933;">&gt;</span> <span style="color: #009900;">&#40;</span>height <span style="color: #339933;">-</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">?</span> height <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;px&quot;</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;auto&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//函数示例</span>
setMaxHeight<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'container1'</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">200</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
setMaxHeight<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'container2'</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="one-hundred-percent-height">100% 高度</h3>
<p>在IE6下，如果要给元素定义100%高度，必须要明确定义它的父级元素的高度，如果你需要给元素定义满屏的高度，就得先给<code class="inline">html</code>和<code class="inline">body</code>定义<code class="inline">height:100%;</code>。</p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">css</strong></div><div class="code"><pre class="css"><span style="color: #616161;">/* 给child元素定义100%高度（IE6）*/</span>
<span style="color: #3399CC;">#parent</span> <span style="color: #939393;">&#123;</span><span style="color: #F96433;">height</span><span style="color: #939393;">:</span><span style="color: #99CC33;">500px</span><span style="color: #939393;">;</span><span style="color: #939393;">&#125;</span>
<span style="color: #3399CC;">#child</span> <span style="color: #939393;">&#123;</span><span style="color: #F96433;">height</span><span style="color: #939393;">:</span><span style="color: #99CC33;">100%</span><span style="color: #939393;">;</span><span style="color: #939393;">&#125;</span>
&nbsp;
<span style="color: #616161;">/* 定义满屏高度（IE6）*/</span>
<span style="color: #3399CC;">html</span><span style="color: #939393;">,</span> <span style="color: #3399CC;">body</span> <span style="color: #939393;">&#123;</span><span style="color: #F96433;">height</span><span style="color: #939393;">:</span><span style="color: #99CC33;">100%</span><span style="color: #939393;">;</span><span style="color: #939393;">&#125;</span>
<span style="color: #3399CC;">#fullLength</span> <span style="color: #939393;">&#123;</span><span style="color: #F96433;">height</span><span style="color: #939393;">:</span><span style="color: #99CC33;">100%</span><span style="color: #939393;">;</span><span style="color: #939393;">&#125;</span></pre></div></div>

<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="min-width">最小宽度</h3>
<p>同<code class="inline"><a href="#max-height">max-height</a></code>和<code class="inline"><a href="#max-width">max-width</a></code>一样，IE6也不支持<code class="inline">min-width</code>。有2个方法实现最小宽度，<a href="http://www.webreference.com/programming/min-width/2.html" rel="nofollow">使用额外的标签</a>、使用JavaScript。</p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">javascript</strong></div><div class="code"><pre class="javascript"><span style="color: #006600; font-style: italic;">//直接使用ID来改变元素的最小宽度</span>
<span style="color: #003366; font-weight: bold;">var</span> container <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'container'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
container.<span style="color: #660066;">style</span>.<span style="color: #660066;">width</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>container.<span style="color: #660066;">clientWidth</span> <span style="color: #339933;">&lt;</span> width<span style="color: #009900;">&#41;</span> <span style="color: #339933;">?</span> <span style="color: #3366CC;">&quot;500px&quot;</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;auto&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//写成函数来运行</span>
<span style="color: #003366; font-weight: bold;">function</span> setMinWidth<span style="color: #009900;">&#40;</span>elementId<span style="color: #339933;">,</span> width<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> container <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span>elementId<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	container.<span style="color: #660066;">style</span>.<span style="color: #660066;">width</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>container.<span style="color: #660066;">clientWidth</span> <span style="color: #339933;">&lt;</span> width<span style="color: #009900;">&#41;</span> <span style="color: #339933;">?</span> width <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;px&quot;</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;auto&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//函数示例</span>
setMinWidth<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'container1'</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">200</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
setMinWidth<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'container2'</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="max-width">最大宽度</h3>
<p>只能使用JavaScript。</p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">javascript</strong></div><div class="code"><pre class="javascript"><span style="color: #006600; font-style: italic;">//直接使用ID来改变元素的最大宽度</span>
<span style="color: #003366; font-weight: bold;">var</span> container <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span>elementId<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
container.<span style="color: #660066;">style</span>.<span style="color: #660066;">width</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>container.<span style="color: #660066;">clientWidth</span> <span style="color: #339933;">&gt;</span> <span style="color: #009900;">&#40;</span>width <span style="color: #339933;">-</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">?</span> width <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;px&quot;</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;auto&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//写成函数来运行</span>
<span style="color: #003366; font-weight: bold;">function</span> setMaxWidth<span style="color: #009900;">&#40;</span>elementId<span style="color: #339933;">,</span> width<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> container <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span>elementId<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	container.<span style="color: #660066;">style</span>.<span style="color: #660066;">width</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>container.<span style="color: #660066;">clientWidth</span> <span style="color: #339933;">&gt;</span> <span style="color: #009900;">&#40;</span>width <span style="color: #339933;">-</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">?</span> width <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;px&quot;</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;auto&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//函数示例</span>
setMaxWidth<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'container1'</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">200</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
setMaxWidth<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'container2'</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="float-bug">双边距Bug</h3>
<p>当元素浮动时，IE6会错误的把浮动方向的margin值双倍计算。<a href="http://www.positioniseverything.net/explorer/floatIndent.html" rel="nofollow">Steve Clason</a>给出了解决方法：给元素添加<code class="inline">display:inline;</code></p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">css</strong></div><div class="code"><pre class="css"><span style="color: #616161;">/*IE6下将产生双倍边距*/</span>
<span style="color: #3399CC;">.floatedEl</span> <span style="color: #939393;">&#123;</span><span style="color: #F96433;">float</span><span style="color: #939393;">:</span><span style="color: #F96433;">left</span><span style="color: #939393;">;</span> <span style="color: #F96433;">margin-left</span><span style="color: #939393;">:</span><span style="color: #99CC33;">100px</span><span style="color: #939393;">;</span><span style="color: #939393;">&#125;</span>
&nbsp;
<span style="color: #616161;">/*修正*/</span>
<span style="color: #3399CC;">.floatedEl</span> <span style="color: #939393;">&#123;</span><span style="color: #F96433;">float</span><span style="color: #939393;">:</span><span style="color: #F96433;">left</span><span style="color: #939393;">;</span> <span style="color: #F96433;">margin-left</span><span style="color: #939393;">:</span><span style="color: #99CC33;">100px</span><span style="color: #939393;">;</span> <span style="color: #F96433;">display</span><span style="color: #939393;">:</span><span style="color: #99CC33;">inline</span><span style="color: #939393;">;</span><span style="color: #939393;">&#125;</span></pre></div></div>

<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="clearfix">清除浮动</h3>
<p>如果你想用div(或其他容器)包裹一个浮动的元素，你会发现必须给div(容器)定义明确的<code class="inline">height</code>、<code class="inline">width</code>、<code class="inline">overflow</code>之中一个属性（除了auto值）才能将浮动元素严实地包裹。</p>
<h4>示例：</h4>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">html</strong></div><div class="code"><pre class="html"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">id</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;container&quot;</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">id</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;floated1&quot;</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">id</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;floated2&quot;</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span></pre></div></div>


<div class="wp_syntax"><div class="toolbar"><strong class="lang">css</strong></div><div class="code"><pre class="css"><span style="color: #3399CC;">#container</span> <span style="color: #939393;">&#123;</span><span style="color: #F96433;">border</span><span style="color: #939393;">:</span><span style="color: #99CC33;">1px</span> <span style="color: #99CC33;">solid</span> <span style="color: #3399CC;">#333</span><span style="color: #939393;">;</span> <span style="color: #F96433;">overflow</span><span style="color: #939393;">:</span><span style="color: #99CC33;">auto</span><span style="color: #939393;">;</span> <span style="color: #F96433;">height</span><span style="color: #939393;">:</span><span style="color: #99CC33;">100%</span><span style="color: #939393;">;</span><span style="color: #939393;">&#125;</span>
<span style="color: #3399CC;">#floated1</span> <span style="color: #939393;">&#123;</span><span style="color: #F96433;">float</span><span style="color: #939393;">:</span><span style="color: #F96433;">left</span><span style="color: #939393;">;</span> <span style="color: #F96433;">height</span><span style="color: #939393;">:</span><span style="color: #99CC33;">300px</span><span style="color: #939393;">;</span> <span style="color: #F96433;">width</span><span style="color: #939393;">:</span><span style="color: #99CC33;">200px</span><span style="color: #939393;">;</span> <span style="color: #F96433;">background</span><span style="color: #939393;">:</span><span style="color: #3399CC;">#00F</span><span style="color: #939393;">;</span><span style="color: #939393;">&#125;</span>
<span style="color: #3399CC;">#floated2</span> <span style="color: #939393;">&#123;</span><span style="color: #F96433;">float</span><span style="color: #939393;">:</span><span style="color: #F96433;">right</span><span style="color: #939393;">;</span> <span style="color: #F96433;">height</span><span style="color: #939393;">:</span><span style="color: #99CC33;">400px</span><span style="color: #939393;">;</span> <span style="color: #F96433;">width</span><span style="color: #939393;">:</span><span style="color: #99CC33;">200px</span><span style="color: #939393;">;</span> <span style="color: #F96433;">background</span><span style="color: #939393;">:</span><span style="color: #3399CC;">#F0F</span><span style="color: #939393;">;</span><span style="color: #939393;">&#125;</span></pre></div></div>

<p>译者常用的方式：</p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">css</strong></div><div class="code"><pre class="css"><span style="color: #3399CC;">#container</span> <span style="color: #939393;">&#123;</span>zoom<span style="color: #939393;">:</span><span style="color: #cc66cc;">1</span><span style="color: #939393;">;</span><span style="color: #939393;">&#125;</span> <span style="color: #616161;">/* ie浏览器 */</span>
<span style="color: #3399CC;">#container</span><span style="color: #3399CC;">:after</span><span style="color: #939393;">&#123;</span><span style="color: #F96433;">content</span><span style="color: #939393;">:</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\0</span>020&quot;</span><span style="color: #939393;">;</span>display<span style="color: #939393;">:</span><span style="color: #99CC33;">block</span><span style="color: #939393;">;</span>height<span style="color: #939393;">:</span><span style="color: #cc66cc;">0</span><span style="color: #939393;">;</span>clear<span style="color: #939393;">:</span><span style="color: #99CC33;">both</span><span style="color: #939393;">;</span><span style="color: #939393;">&#125;</span> <span style="color: #616161;">/*标准浏览器*/</span></pre></div></div>

<h4>扩展阅读：</h4>
<ul>
<li><a href="http://www.twinsenliang.net/skill/20090413.html" title="">《清理浮动的全家》</a></li>
<li><a href="http://www.quirksmode.org/css/clearing.html" rel="nofollow">Clearing Floats</a></li>
<li><a href="http://www.sitepoint.com/blogs/2005/02/26/simple-clearing-of-floats/" rel="nofollow">Simple Clearing of Floats</a></li>
</ul>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="float-drop">浮动层错位</h3>
<p>当内容超出外包容器定义的宽度时会导致浮动层错位问题。在Firefox、IE7及其他标准浏览器里，超出的内容仅仅只是超出边缘；但在IE6中容器会忽视定义的<code class="inline">width</code>值，宽度会错误地随内容宽度增长而增长。如果在这个浮动元素之后还跟着一个浮动元素，那么就会导致错位问题。</p>
<p><img src="http://www.vfresh.org/wp-content/uploads/2010/01/floatdrops.png" alt="" title="floatdrops" width="430" height="501" class="alignnone size-full wp-image-761" /></p>
<p>浮动层错位问题在IE6下没有真正让人满意的解决方法，虽然可以使用<code class="inline">overflow:hidden;</code>或<code class="inline">overflow:scroll;</code>来修正，但<code class="inline">hidden</code>容易导致其他一些问题，<code class="inline">scroll</code>会破坏设计；JavaScript也没法很好地解决这个问题。所以我的建议是一定要<strong>避免</strong>这个问题发生，使用一个固定的布局或者控制好内容的宽度。</p>
<h4>扩展阅读</h4>
<ul>
<li><a href="http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&amp;postId=1081&amp;productId=1" rel="nofollow">Float Drop &#8211; floated elements drop below their expected position</a></li>
<li><a href="http://www.positioniseverything.net/explorer/expandingboxbug.html" rel="nofollow">Internet Explorer 6 and the Expanding Box Problem</a></li>
</ul>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="guillotine">躲猫猫bug</h3>
<p>在IE6和IE7下，躲猫猫bug是一个非常恼人的问题。一个撑破了容器的浮动元素，如果在他之后有不浮动的内容，并且有一些定义了<code class="inline">:hover</code>的链接，当鼠标移到那些链接上时，在IE6下就会触发躲猫猫。</p>
<p><small><a href='http://www.vfresh.org/wp-content/uploads/2010/01/guillotine.html'>点此查看bug示例页</a></small></p>
<p>头大了吧！但别担心，<a href="http://www.positioniseverything.net/explorer/guillotine.html" rel="nofollow">well-documented</a>提供了详细的解决方法。</p>
<p>不管为何会触发这个问题，解决方法很简单：</p>
<ol>
<li>在(那个未浮动的)内容之后添加一个<code class="inline">&lt;span style="clear:both;"&gt;&lt;/span&gt;</code></li>
<li>触发包含了这些链接的容器的<code class="inline">hasLayout</code>，一个简单的方法就是给其定义<code class="inline">height:1%;</code></li>
</ol>
<h4>扩展阅读：</h4>
<ul>
<li><a href="http://css-class.com/articles/explorer/guillotine/" rel="nofollow">IE hasLayout and the return of the Guillotine bug</a></li>
</ul>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="one-px-gap">绝对定位元素的1像素间距bug</h3>
<p>IE6下的这个错误是由于进位处理误差造成（IE7已修复），当绝对定位元素的父元素高或宽为奇数时，<code class="inline">bottom</code>和<code class="inline">right</code>会产生错误。唯一的解决办法就是给父元素定义明确的高宽值，但对于液态布局没有完美的解决方法。<a href="http://www.pmob.co.uk/" rel="nofollow">Paul O&#8217;Brien</a>有关这个bug有一篇文章来<a href="http://www.pmob.co.uk/temp/onepxgap.htm" rel="nofollow">讲解</a>。</p>
<h4>扩展阅读：</h4>
<ul>
<li><a href="http://www.99css.com/?p=53" title="">IE6 绝对定位元素的 1px 间距 bug</a></li>
</ul>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="three-px-gap">3像素间距bug</h3>
<p>在IE6中，当文本(或无浮动元素)跟在一个浮动的元素之后，文本和这个浮动元素之间会多出3像素的间隔，<a href="http://www.cssplay.co.uk/" rel="nofollow">Stu Nichols</a>有一个<a href="http://www.cssplay.co.uk/ie/3pxbug.html" rel="nofollow">非常好的解决方法</a>。</p>
<p><small>译注：可运行下面代码来查看作者提供的修复方法</small></p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">html</strong></div><div class="code"><pre class="html"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">style</span> <span style="color: #E46F47;">type</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;text/css&quot;</span><span style="color: #00bbdd;">&gt;</span>
.container {width:750px; height:237px; margin:50px auto; background:url(http://www.cssplay.co.uk/ie/3pxbug/bug.jpg) no-repeat center top;}
.container #page1,.container #page2 {width:30%; margin:0 auto 0 auto; padding-top:80px;}
&nbsp;
.container .topMid {overflow:hidden; height:15px; background: url(http://www.cssplay.co.uk/ie/3pxbug/topmid.png);}
.container .topLeft {overflow:hidden; width:20px; height:15px; float:left; background:url(http://www.cssplay.co.uk/ie/3pxbug/topleft.png);}
.container .topRight {overflow:hidden; width:25px; height:15px; float:right; background:url(http://www.cssplay.co.uk/ie/3pxbug/topright.png);}
&nbsp;
.container .content {height:100px; margin-right:25px; background:#ccc;}
.container .content h2 {font-size:20px; height:80px; line-height:70px; text-align:center; margin:0;}
.container .midLeft {width:20px; height:100px; float:left; background: url(http://www.cssplay.co.uk/ie/3pxbug/midleft.png);}
.container .midRight {width:25px; height:100px; float:right; background: url(http://www.cssplay.co.uk/ie/3pxbug/midright.png);}
&nbsp;
&nbsp;
.container .bottomMid {overflow:hidden; height:20px; background: url(http://www.cssplay.co.uk/ie/3pxbug/bottommid.png);}
.container .bottomLeft {overflow:hidden; width:20px; height:20px; float:left; background:url(http://www.cssplay.co.uk/ie/3pxbug/bottomleft.png);}
.container .bottomRight {overflow:hidden; width:25px; height:20px; float:right; background:url(http://www.cssplay.co.uk/ie/3pxbug/bottomright.png);}
&nbsp;
/* 给浮动层添加 display:inline 和 -3px 负值margin  */
&nbsp;
.container #page2 .topLeft,
.container #page2 .midLeft,
.container #page2 .bottomLeft {display:inline;margin-right:-3px;}
.container #page2 .topRight,
.container #page2 .midRight,
.container #page2 .bottomRight {display:inline;margin-left:-3px;}
&nbsp;
/*  给中间的内容层定义 margin-right 以纠正-3px */
&nbsp;
* html #page2 .content {margin-right:22px;}
<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">style</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;container&quot;</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">id</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;page1&quot;</span><span style="color: #00bbdd;">&gt;</span>
		<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;topLeft&quot;</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
		<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;topRight&quot;</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
		<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;topMid&quot;</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
		<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;midLeft&quot;</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
		<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;midRight&quot;</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
		<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;content&quot;</span><span style="color: #00bbdd;">&gt;</span>
			<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">h2</span><span style="color: #00bbdd;">&gt;</span>〖3px Bug〗<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">h2</span><span style="color: #00bbdd;">&gt;</span>
		<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
		<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;bottomLeft&quot;</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
		<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;bottomRight&quot;</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
		<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;bottomMid&quot;</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
&nbsp;
<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;container&quot;</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">id</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;page2&quot;</span><span style="color: #00bbdd;">&gt;</span>
		<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;topLeft&quot;</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
		<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;topRight&quot;</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
		<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;topMid&quot;</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
		<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;midLeft&quot;</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
		<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;midRight&quot;</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
		<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;content&quot;</span><span style="color: #00bbdd;">&gt;</span>
			<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">h2</span><span style="color: #00bbdd;">&gt;</span>〖3px Bug 已修正！〗<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">h2</span><span style="color: #00bbdd;">&gt;</span>
		<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
		<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;bottomLeft&quot;</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
		<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;bottomRight&quot;</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
		<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;bottomMid&quot;</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span></pre></div></div>

<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="ie-z-index">IE下z-index的bug</h3>
<p>在IE浏览器中，定位元素的<code class="inline">z-index</code>层级是相对于各自的父级容器，所以会导致<code class="inline">z-index</code>出现<a href="http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html" title="">错误的表现</a>。解决方法是给其父级元素定义<code class="inline">z-index</code>，有些情况下还需要定义<code class="inline">position:relative</code></p>
<h4>扩展阅读：</h4>
<ul>
<li><a href="http://www.planabc.net/2007/04/23/z-index_in_ie_bug/" title="">z-index在IE中的迷惑</a></li>
<li><a href="http://andymao.com/andy/post/67.html" title="">无法冲破的等级</a></li>
<li><a href="http://www.brenelz.com/blog/2009/02/03/squish-the-internet-explorer-z-index-bug/" rel="nofollow">Squish The Internet Explorer z-index Bug</a></li>
</ul>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="overflow-bug">Overflow Bug</h3>
<p>在IE6/7中，<code class="inline">overflow</code>无法正确的隐藏有相对定位<code class="inline">position:relative;</code>的子元素，如下例：</p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">html</strong></div><div class="code"><pre class="html"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">style</span> <span style="color: #E46F47;">type</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;text/css&quot;</span> <span style="color: #00bbdd;">&gt;</span>
.wrap {overflow:hidden;width:100px;height:100px;background:#336600;border:solid #666600 5px;}
.child {position:relative;width:50px;height:200px;background:#99CC00;}
<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">style</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;wrap&quot;</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;child&quot;</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span></pre></div></div>

<p>解决方法就是给外包容器<code class="inline">.wrap</code>加上<code class="inline">position:relative;</code>。</p>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h2 id="lists">〖列表问题〗</h2>
<p>最为特别的IE许多bug都会影响到列表，这里例举了一些示例。</p>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="list-item-width">横向列表宽度bug</h3>
<p>如果你使用<code class="inline">float:left;</code>把<code class="inline">&lt;li&gt;</code>横向摆列，并且<code class="inline">&lt;li&gt;</code>内包含的<code class="inline">&lt;a&gt;</code>(或其他)触发了hasLayout，在IE6下就会有错误的表现：</p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">html</strong></div><div class="code"><pre class="html"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">style</span> <span style="color: #E46F47;">type</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;text/css&quot;</span> <span style="color: #00bbdd;">&gt;</span>
#menu li {
	float:left;
	list-style:none;
	background:#CCCCFF;
}
#menu li a {
	padding:0 10px;
	display:block;
	height:20px;	/* 触发了hasLayout */
}
<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">style</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">ul</span> <span style="color: #E46F47;">id</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;menu&quot;</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;&lt;</span><span style="color: #00bbdd;">a</span> <span style="color: #E46F47;">href</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;#&quot;</span> <span style="color: #E46F47;">title</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;&quot;</span><span style="color: #00bbdd;">&gt;</span>Menu Item #1<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">a</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;&lt;</span><span style="color: #00bbdd;">a</span> <span style="color: #E46F47;">href</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;#&quot;</span> <span style="color: #E46F47;">title</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;&quot;</span><span style="color: #00bbdd;">&gt;</span>Menu Item #2<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">a</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;&lt;</span><span style="color: #00bbdd;">a</span> <span style="color: #E46F47;">href</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;#&quot;</span> <span style="color: #E46F47;">title</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;&quot;</span><span style="color: #00bbdd;">&gt;</span>Menu Item #3<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">a</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">ul</span><span style="color: #00bbdd;">&gt;</span></pre></div></div>

<p>解决方法很简单，只需要给<code class="inline">&lt;a&gt;</code>定义同样的<code class="inline">float:left;</code>即可。</p>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="staircase-bug">列表阶梯bug</h3>
<p>bug示例：</p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">html</strong></div><div class="code"><pre class="html"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">style</span> <span style="color: #E46F47;">type</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;text/css&quot;</span> <span style="color: #00bbdd;">&gt;</span>
ul {
    clear: both;
    list-style: none;
}
a {
    display: block;
    float: left;
    background: #99CCFF;
}
#two a {
    font-size: 1.1em;
}
<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">style</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">ul</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;&lt;</span><span style="color: #00bbdd;">a</span> <span style="color: #E46F47;">href</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;#&quot;</span><span style="color: #00bbdd;">&gt;</span>One<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">a</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;&lt;</span><span style="color: #00bbdd;">a</span> <span style="color: #E46F47;">href</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;#&quot;</span><span style="color: #00bbdd;">&gt;</span>Two<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">a</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;&lt;</span><span style="color: #00bbdd;">a</span> <span style="color: #E46F47;">href</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;#&quot;</span><span style="color: #00bbdd;">&gt;</span>Three<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">a</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">ul</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">ul</span> <span style="color: #E46F47;">id</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;two&quot;</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;&lt;</span><span style="color: #00bbdd;">a</span> <span style="color: #E46F47;">href</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;#&quot;</span><span style="color: #00bbdd;">&gt;</span>One<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">a</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;&lt;</span><span style="color: #00bbdd;">a</span> <span style="color: #E46F47;">href</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;#&quot;</span><span style="color: #00bbdd;">&gt;</span>Two<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">a</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;&lt;</span><span style="color: #00bbdd;">a</span> <span style="color: #E46F47;">href</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;#&quot;</span><span style="color: #00bbdd;">&gt;</span>Three<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">a</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">ul</span><span style="color: #00bbdd;">&gt;</span></pre></div></div>

<p><a href="http://haslayout.net/css/Staircase-Bug" rel="nofollow">列表阶梯bug</a>通常会在给<code class="inline">&lt;li&gt;</code>的子元素<code class="inline">&lt;a&gt;</code>使用<code class="inline">float:left;</code>时触发，我们本意是要做一个横向的列表(通常是导航栏)，但IE却可能呈现出垂直的或者阶梯状。</p>
<p>解决办法就是给<code class="inline">&lt;li&gt;</code>定义<code class="inline">float:left;</code>而非子元素<code class="inline">&lt;a&gt;</code>，或者给<code class="inline">&lt;li&gt;</code>定义<code class="inline">display:inline;</code>也可以解决。</p>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="whitespace-bug">垂直列表间隙bug</h3>
<p>当我们使用<code class="inline">&lt;li&gt;</code>包含一个块级子元素时，IE6(IE7也有可能)会错误地给每条列表元素(&lt;li&gt;)之间添加空隙；解决这个问题的方法有很多，看示例：</p>
<h4>BUG代码：</h4>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">html</strong></div><div class="code"><pre class="html"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">style</span> <span style="color: #E46F47;">type</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;text/css&quot;</span> <span style="color: #00bbdd;">&gt;</span>
ul {margin:0; padding:0; list-style:none;}
li a {display:block; background:#ddd;}
<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">style</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">ul</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;&lt;</span><span style="color: #00bbdd;">a</span> <span style="color: #E46F47;">href</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;#&quot;</span><span style="color: #00bbdd;">&gt;</span>Item 1<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">a</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;&lt;</span><span style="color: #00bbdd;">a</span> <span style="color: #E46F47;">href</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;#&quot;</span><span style="color: #00bbdd;">&gt;</span>Item 2<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">a</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;&lt;</span><span style="color: #00bbdd;">a</span> <span style="color: #E46F47;">href</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;#&quot;</span><span style="color: #00bbdd;">&gt;</span>Item 3<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">a</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">ul</span><span style="color: #00bbdd;">&gt;</span></pre></div></div>

<h4>解决方法：</h4>
<p><a href="http://www.hicksdesign.co.uk/journal/ie-whitespace-bug" rel="nofollow">Jon Hicks</a>把<code class="inline">&lt;a&gt;</code>flaot并且清除float来解决这个问题：</p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">css</strong></div><div class="code"><pre class="css"><span style="color: #3399CC;">ul</span> <span style="color: #939393;">&#123;</span><span style="color: #F96433;">margin</span><span style="color: #939393;">:</span><span style="color: #cc66cc;">0</span><span style="color: #939393;">;</span> <span style="color: #F96433;">padding</span><span style="color: #939393;">:</span><span style="color: #cc66cc;">0</span><span style="color: #939393;">;</span> <span style="color: #F96433;">list-style</span><span style="color: #939393;">:</span><span style="color: #99CC33;">none</span><span style="color: #939393;">;</span><span style="color: #939393;">&#125;</span>
<span style="color: #3399CC;">li</span> <span style="color: #3399CC;">a</span> <span style="color: #939393;">&#123;</span><span style="color: #F96433;">display</span><span style="color: #939393;">:</span><span style="color: #99CC33;">block</span><span style="color: #939393;">;</span> <span style="color: #F96433;">padding</span><span style="color: #939393;">:</span><span style="color: #99CC33;">0.5em</span><span style="color: #939393;">;</span> <span style="color: #F96433;">background</span><span style="color: #939393;">:</span><span style="color: #3399CC;">#ddd</span><span style="color: #939393;">;</span> <span style="color: #F96433;">float</span><span style="color: #939393;">:</span><span style="color: #F96433;">left</span><span style="color: #939393;">;</span> <span style="color: #F96433;">clear</span><span style="color: #939393;">:</span><span style="color: #F96433;">left</span><span style="color: #939393;">;</span><span style="color: #939393;">&#125;</span></pre></div></div>

<p>另外一个办法就是触发<code class="inline">&lt;a&gt;</code>的<code class="inline">hasLayout</code>（如定义高宽、使用<code class="inline">zoom:1;</code>）</p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">css</strong></div><div class="code"><pre class="css"><span style="color: #3399CC;">ul</span> <span style="color: #939393;">&#123;</span><span style="color: #F96433;">margin</span><span style="color: #939393;">:</span><span style="color: #cc66cc;">0</span><span style="color: #939393;">;</span> <span style="color: #F96433;">padding</span><span style="color: #939393;">:</span><span style="color: #cc66cc;">0</span><span style="color: #939393;">;</span> <span style="color: #F96433;">list-style</span><span style="color: #939393;">:</span><span style="color: #99CC33;">none</span><span style="color: #939393;">;</span><span style="color: #939393;">&#125;</span>
<span style="color: #3399CC;">li</span> <span style="color: #3399CC;">a</span> <span style="color: #939393;">&#123;</span><span style="color: #F96433;">display</span><span style="color: #939393;">:</span><span style="color: #99CC33;">block</span><span style="color: #939393;">;</span> <span style="color: #F96433;">padding</span><span style="color: #939393;">:</span><span style="color: #99CC33;">0.5em</span><span style="color: #939393;">;</span> <span style="color: #F96433;">background</span><span style="color: #939393;">:</span><span style="color: #3399CC;">#ddd</span><span style="color: #939393;">;</span> zoom<span style="color: #939393;">:</span><span style="color: #cc66cc;">1</span><span style="color: #939393;">;</span><span style="color: #939393;">&#125;</span>
<span style="color: #616161;">/* height:1%; 也有同样的作用 */</span></pre></div></div>

<p>也可以给<code class="inline">&lt;li&gt;</code>定义<code class="inline">display:inline;</code>来解决此问题。</p>
<p>另外还有一个极有趣的方法，给<code class="inline">&lt;a&gt;</code>包含的文本末尾添加一个空格：</p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">html</strong></div><div class="code"><pre class="html"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">ul</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;&lt;</span><span style="color: #00bbdd;">a</span> <span style="color: #E46F47;">href</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;#&quot;</span><span style="color: #00bbdd;">&gt;</span>Item 1 <span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">a</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;&lt;</span><span style="color: #00bbdd;">a</span> <span style="color: #E46F47;">href</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;#&quot;</span><span style="color: #00bbdd;">&gt;</span>Item 2 <span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">a</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;&lt;</span><span style="color: #00bbdd;">a</span> <span style="color: #E46F47;">href</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;#&quot;</span><span style="color: #00bbdd;">&gt;</span>Item 3 <span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">a</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">ul</span><span style="color: #00bbdd;">&gt;</span></pre></div></div>

<h4>扩展阅读：</h4>
<ul>
<li><a href="http://www.cssnewbie.com/fixing-ie6-whitespace-bug/" rel="nofollow">Fixing the IE6 Whitespace Bug</a></li>
<li><a href="http://www.456bereastreet.com/archive/200610/closing_the_gap_between_list_items_in_ie/" rel="nofollow">Closing the gap between list items in IE</a></li>
</ul>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h2 id="behavior">〖行为〗</h2>
<p>ie6有着一些行为方面的BUG，究其原因是IE6版本太老了，不能完好地支持CSS2更不支持CSS3，而且微软固执的使用了其私有方法。</p>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="no-hover-state">IE6中的:hover</h3>
<p>在IE6中，除了<code class="inline">&lt;a&gt;</code>(需要有<code class="inline">href</code>属性)才能触发<code class="inline">:hover</code>行为，这妨碍了我们实现许多鼠标触碰效果，但还是有一些法子是可以解决它的。</p>
<p>最好是不要用<code class="inline">:hover</code>来实现重要的功能，仅仅只用它来强化效果。</p>
<p>许多修复IE6 hover的方法都是使用微软提供的私有方法<a href="http://www.xs4all.nl/~peterned/csshover.html" rel="nofollow">behavior</a>或者JavaScript，通常使用<a href="#js-framework">JavaScript框架</a>或者IE6修复类js。</p>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="canvas-ie">在IE浏览其中使用<code class="inline">Canvas</code>标签</h3>
<p><a href="http://kb.operachina.com/node/190/" title="">canvas</a>是HTML5新引入的元素，提供了通过 JavaScript 绘制图形的方法，此方法使用简单但功能强大。</p>
<p>所有IE浏览器都不支持HTML5中的canvas标签，而是使用它微软私有的VML，但是可以通过JavaScript来使canvas在IE下生效。</p>
<h4>修复canvas的一些JavaScript：</h4>
<ul>
<li><a href="http://code.google.com/p/explorercanvas/" rel="nofollow">ExplorerCanvas</a> (also called excanvas)</li>
<li><a href="http://groups.google.com/group/google-excanvas" rel="nofollow">ExplorerCanvas Google Group</a></li>
<li><a href="http://github.com/ibolmo/moocanvas" rel="nofollow">MooCanvas at Github</a>, a MooTools implementation of excanvas</li>
</ul>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="ie6-resize-bug">IE6调整窗口大小的 Bug</h3>
<p>当把<code class="inline">body</code>居中放置，改变IE浏览器大小的时候，任何在<code class="inline">body</code>里面的相对定位元素都会固定不动了。<a href="http://friendlybit.com/" rel="nofollow">Emil Stenström</a>发现了<a href="http://friendlybit.com/css/ie6-resize-bug/" rel="nofollow">IE6 Resize Bug</a>并提供了解决办法：给<code class="inline">body</code>定义<code class="inline">position:relative;</code>就行了，够简单吧！~</p>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h2 id="javascript">〖JavaScript〗</h2>
<p>IE6有着数不尽的JavaScript bug，这里我不会讲解每一个IE6下JavaScript的bug，只摘取其中几个普遍的问题来讨论。</p>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="expected-identifier">Error: Expected Identifier, String, Or Number</h3>
<p>IE浏览器不容许不良的JavaScript书写，如果在数组或者Hash对象的末尾有逗号就会引发异常“Expected Identifier, String, Or Number”，其他浏览器允许这样做，但在书写时注意删除末尾的逗号以避免这个错误。</p>
<p><!-- hash阅读：http://book.csdn.net/bookfiles/1142/100114234210.shtml END--></p>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="ie-javascript-memory-leaks">IE中JavaScript内存泄露</h3>
<p>由于IE浏览器使用其自己的内存管理，当JavaScript使用的内存没有被回收时就会引发内存泄露。可阅读<a href="http://svza.blogspot.com/2007/06/jscript.html" title="">《JScript的内存泄漏》</a>及<a href="http://www.hedgerwow.com/360/dhtml/ie6_memory_leak_fix/" rel="nofollow">《Finally, the alternative fix for IE6’s memory leak is available》</a></p>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h2 id="miscellaneous">〖其他〗</h2>
<p>IE6中一些其他bug</p>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="duplicate-characters-bug">文本重复Bug</h3>
<p>在IE6中，一些隐藏的元素（如注释、<code class="inline">display:none;</code>的元素）被包含在一个浮动元素里，就有可能引发文本重复bug：</p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">html</strong></div><div class="code"><pre class="html"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">style</span> <span style="color: #E46F47;">type</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;text/css&quot;</span> <span style="color: #00bbdd;">&gt;</span>
.demobox {
	width: 250px;
	border: 3px solid #4c6f42;
}
.firstfloat {
	float: left;
	background: #939a90;
}
.secondfloat {
	float: left;
	width: 250px;
	margin-bottom: 2px;
	background: #fbdabb;
}
<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">style</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #616161"><span style="color: #00bbdd;">&lt;</span>!-- Begin live demo --<span style="color: #00bbdd;">&gt;</span></span>
<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;demobox&quot;</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;firstfloat&quot;</span><span style="color: #00bbdd;">&gt;</span>第一个浮动层<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #616161"><span style="color: #00bbdd;">&lt;</span>!-- comment --<span style="color: #00bbdd;">&gt;</span></span> <span style="color: #616161"><span style="color: #00bbdd;">&lt;</span>!-- comment --<span style="color: #00bbdd;">&gt;</span></span> <span style="color: #616161"><span style="color: #00bbdd;">&lt;</span>!-- comment --<span style="color: #00bbdd;">&gt;</span></span> <span style="color: #616161"><span style="color: #00bbdd;">&lt;</span>!-- comment --<span style="color: #00bbdd;">&gt;</span></span> <span style="color: #616161"><span style="color: #00bbdd;">&lt;</span>!-- comment --<span style="color: #00bbdd;">&gt;</span></span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;secondfloat&quot;</span><span style="color: #00bbdd;">&gt;</span>
		第二个浮动层<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">br</span> <span style="color: #00bbdd;">/&gt;</span>
		<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">span</span> <span style="color: #E46F47;">style</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;background: #f2ab82;&quot;</span><span style="color: #00bbdd;">&gt;</span>aa这段文字会被重复。。。这段文字会被重复。。。这段文字会被重复。。。这段文字会被重复。。。这段文字会被重复。。。<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">span</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">div</span> <span style="color: #E46F47;">style</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;clear: both; background: #b2d4af;&quot;</span><span style="color: #00bbdd;">&gt;</span>清除浮动层<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">div</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #616161"><span style="color: #00bbdd;">&lt;</span>!-- end live demo --<span style="color: #00bbdd;">&gt;</span></span></pre></div></div>

<p><a href="http://www.positioniseverything.net/explorer/dup-characters.html" rel="nofollow">Position Is Everything</a>详细讲解了这个问题，但解决办法很简单：给浮动元素添加<code class="inline">display:inline;</code>。</p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">css</strong></div><div class="code"><pre class="css"><span style="color: #3399CC;">.firstfloat</span> <span style="color: #939393;">&#123;</span><span style="color: #F96433;">display</span><span style="color: #939393;">:</span><span style="color: #99CC33;">inline</span><span style="color: #939393;">;</span><span style="color: #939393;">&#125;</span></pre></div></div>

<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="favicons-ie">IE的收藏夹图标(Favicons)</h3>
<p>收藏夹图标会以16&#215;16像素大小显示在你的收藏夹里，有两种方法来显示收藏夹图标：</p>
<ol>
<li>把一张图片命名为<code class="inline">favicon.ico</code>并放置在网站的根目录，IE及其他浏览区都会自动设置该文件为收藏夹图标；</li>
<li>在<code class="inline">&lt;head&gt;</code>区域声明： <br />
	<code class="inline">&lt;link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" /&gt;</code></li>
</ol>
<p>需要注意的是收藏夹图标会被一直缓存，除非你清除浏览器的缓存，才会更新新的图标；如果你想要浏览者自动更新收藏夹图标，请给favicon.ico设置expires。</p>
<h4>扩展阅读：</h4>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/ms537656(VS.85).aspx" rel="nofollow">How to Add a Shortcut Icon to a Web Page</a> </li>
</ul>
<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h3 id="gzip-ie6">IE6的GZip</h3>
<p>服务器端使用GZip压缩了的文件，在某些版本的IE6（特别是未更新XP sp2的）中会有一些问题。所幸的是<a href="http://sebduggan.com/" rel="nofollow">Seb Duggan</a>找到了<a href="http://sebduggan.com/posts/ie6-gzip-bug-solved-using-isapi-rewrite" rel="nofollow">IE6 GZip bug解决方法</a>，在Apache中使用<a href="http://www.helicontech.com/isapi_rewrite/" rel="nofollow">ISAPI_Rewrite</a>。</p>
<p>Seb提供的方法是在 ISAPI_Rewrite 安装目录下的<code class="inline">httpd.conf</code>中加入以下代码：</p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">html</strong></div><div class="code"><pre class="html">RewriteEngine on
&nbsp;
RewriteCond %{HTTP:User-Agent} MSIE [56]
RewriteCond %{HTTP:User-Agent} !SV1
RewriteCond %{REQUEST_URI} .(css|js)$
RewriteHeader Accept-Encoding: .* $1</pre></div></div>

<p class="entry-nav"><a href="#contents">目录</a> | <a href="#">顶部</a></p>
<h2 id="bonus-resources">〖相关资源〗</h2>
<ul>
<li><a href="http://sixrevisions.com/web-development/definitive-guide-to-taming-the-ie6-beast/" rel="nofollow">The Definitive Guide to Taming the IE6 Beast</a></li>
<li><a href="http://www.positioniseverything.net/explorer/peekaboo.html" rel="nofollow">IE6 Peekaboo Bug</a></li>
<li><a href="http://haslayout.net/css/" rel="nofollow">hasLayout.net</a></li>
<li><a href="http://www.position-absolute.com/articles/css-for-ie6-6-common-problems-and-fast-ways-to-fix-them/" rel="nofollow">CSS For IE6: 6 Common Problems And Fast Ways To Fix Them</a></li>
<li><a href="http://www.positioniseverything.net/explorer.html" rel="nofollow">Explorer Exposed!</a></li>
<li><a href="http://www.sitepoint.com/blogs/2009/02/24/the-death-of-ie6/" rel="nofollow">The Death of IE6</a></li>
<li><a href="http://www.sitepoint.com/blogs/2009/03/06/10-fixes-for-ie6-problems/" rel="nofollow">10 Fixes for IE6 Problems</a></li>
<li><a href="http://pmob.co.uk/" rel="nofollow">http://pmob.co.uk/</a></li>
<li><a href="http://www.quirksmode.org/bugreports/archives/explorer_56_windows/index.html">IE6 Bug Reports</a></li>
<li><a href="http://www.gtalbot.org/BrowserBugsSection/MSIE6Bugs/" rel="nofollow">MSIE6 Bugs</a></li>
<li><a href="http://www.webcredible.co.uk/user-friendly-resources/css/internet-explorer.shtml" rel="nofollow">Internet Explorer &amp; CSS issues</a></li>
<li><a href="http://css-tricks.com/ie-css-bugs-thatll-get-you-every-time/" rel="nofollow">IE CSS Bugs That&#8217;ll Get You Every Time</a></li>
</ul>
<p>修订历史：<br />
2010-02-04 修正<a href="#min-height">最小高度部分</a>important的说明；</p>
<img src="http://www.vfresh.org/?ak_action=api_record_view&id=727&type=feed" alt="" />

<div class="relate-post"><h3>相关阅读</h3><ol class="list"><li><a href='http://www.vfresh.org/w3c/528' rel='bookmark' title='Permanent Link: 固宽背景图居中错位的问题'>固宽背景图居中错位的问题</a></li>
<li><a href='http://www.vfresh.org/w3c/766' rel='bookmark' title='Permanent Link: 小技巧：带分隔线左右布局的实现'>小技巧：带分隔线左右布局的实现</a></li>
<li><a href='http://www.vfresh.org/w3c/676' rel='bookmark' title='Permanent Link: 合理隐藏文字'>合理隐藏文字</a></li>
<li><a href='http://www.vfresh.org/w3c/9' rel='bookmark' title='Permanent Link: 纯CSS的图片展示效果'>纯CSS的图片展示效果</a></li>
<li><a href='http://www.vfresh.org/w3c/84' rel='bookmark' title='Permanent Link: HTML默认样式'>HTML默认样式</a></li>
</ol></div>]]></content:encoded>
			<wfw:commentRss>http://www.vfresh.org/w3c/727/feed</wfw:commentRss>
		<slash:comments>43</slash:comments>
		</item>
		<item>
		<title>JavaScript选项卡</title>
		<link>http://www.vfresh.org/js/385</link>
		<comments>http://www.vfresh.org/js/385#comments</comments>
		<pubDate>Mon, 29 Dec 2008 15:03:58 +0000</pubDate>
		<dc:creator>vicZen</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.vfresh.org/?p=385</guid>
		<description><![CDATA[点此查看效果 点此下载 通过取连接的hash值(&#8220;#&#8221;后面的)来实现tab切换，具有良好的可用性，实现结构行为相分离。 js调用方式：catTab(el,args) 参数说明： el：目标元素，可以是单个id值/对象也可是多个id值/对象组成的数组 args：参数组{ focusClass:导航连接高亮样式，默认为"lh", mode:鼠标事件，默认为"mouseover", ajaxLoad:是否是ajax方式，可用值为“true”、“false”, ajaxWrap:ajax方式时，主层对象或id, ajaxLoading:ajax加载进行时执行的函数，第一个参数为目标层, ajaxLoadsucc:ajax加载完成时执行的函数，第一个参数为获取的数据(responseText)，第二个参数为目标层, ajaxLoadfail:ajax加载失败时执行的函数，第一个参数为目标层 } 普通示例： javascriptcatTab&#40;'TabDemo',&#123; focusClass:'lh', mode:'mouseover' &#125;&#41;; ajax方式示例： javascriptcatTab&#40;'TabDemo_3',&#123; focusClass:'lh', ajaxLoad:true, ajaxWrap:'AjaxTab', mode:'mouseover' &#125;&#41;; 结构层主要在于导航栏的书写： html&#60;ul class=&#34;tab&#34; id=&#34;TabDemo&#34;&#62; &#60;li&#62;&#60;a href=&#34;http://www.vfresh.org/#d1&#34; title=&#34;&#34;&#62;导航1&#60;/a&#62;&#60;/li&#62; &#60;li&#62;&#60;a href=&#34;#d2&#34; title=&#34;&#34; class=&#34;lh&#34;&#62;导航2&#60;/a&#62;&#60;/li&#62; &#60;li&#62;&#60;a href=&#34;http://www.vfresh.org/&#34; title=&#34;&#34;&#62;导航3&#60;/a&#62;&#60;/li&#62; &#60;/ul&#62; “导航1”对应显示id值为“d1”的层(href值#后的值) “导航3”无对应层，无切换效果 导航1和导航3在非click触发导航情况下可打开“http://www.vfresh.org/” 默认显示的tab为设置了高亮className的连接对应的层，如上例默认显示导航2对应的层“d2” 如未设置高亮className，则默认显示第一个导航连接对应的层“d1&#8243; 后期将会考虑做以下扩展，记录下： 鼠标移动触发加上延迟 可通过window.location.hash的值来显示对应的层 优化点击显示tab的方法&#8221;showTab&#8221; 可移除/添加tab]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.vfresh.org/code/catTab/" target="_blank" title="JavaScript选项卡例子">点此查看效果</a></p>
<p><a href="http://vfresh.googlecode.com/svn/code/js/catTab/full/catTab.rar" target="_blank" title="JavaScript选项卡">点此下载</a></p>
<p>通过取连接的hash值(&#8220;#&#8221;后面的)来实现tab切换，具有良好的可用性，实现结构行为相分离。</p>
<p>js调用方式：<code class="inline">catTab(el,args)</code></p>
<p>参数说明：</p>
<p><code>el：目标元素，可以是单个id值/对象也可是多个id值/对象组成的数组<br />
args：参数组{<br />
		focusClass:导航连接高亮样式，默认为"lh",<br />
		mode:鼠标事件，默认为"mouseover",<br />
		ajaxLoad:是否是ajax方式，可用值为“true”、“false”,<br />
		ajaxWrap:ajax方式时，主层对象或id,<br />
		ajaxLoading:ajax加载进行时执行的函数，第一个参数为目标层,<br />
		ajaxLoadsucc:ajax加载完成时执行的函数，第一个参数为获取的数据(responseText)，第二个参数为目标层,<br />
		ajaxLoadfail:ajax加载失败时执行的函数，第一个参数为目标层<br />
	}</code><br />
普通示例：</p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">javascript</strong></div><div class="code"><pre class="javascript">catTab<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'TabDemo'</span><span style="color: #339933;">,</span><span style="color: #009900;">&#123;</span>
	focusClass<span style="color: #339933;">:</span><span style="color: #3366CC;">'lh'</span><span style="color: #339933;">,</span>
	mode<span style="color: #339933;">:</span><span style="color: #3366CC;">'mouseover'</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>ajax方式示例：</p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">javascript</strong></div><div class="code"><pre class="javascript">catTab<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'TabDemo_3'</span><span style="color: #339933;">,</span><span style="color: #009900;">&#123;</span>
	focusClass<span style="color: #339933;">:</span><span style="color: #3366CC;">'lh'</span><span style="color: #339933;">,</span>
	ajaxLoad<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
	ajaxWrap<span style="color: #339933;">:</span><span style="color: #3366CC;">'AjaxTab'</span><span style="color: #339933;">,</span>
	mode<span style="color: #339933;">:</span><span style="color: #3366CC;">'mouseover'</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>结构层主要在于导航栏的书写：</p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">html</strong></div><div class="code"><pre class="html"><span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">ul</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;tab&quot;</span> <span style="color: #E46F47;">id</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;TabDemo&quot;</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;&lt;</span><span style="color: #00bbdd;">a</span> <span style="color: #E46F47;">href</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;http://www.vfresh.org/#d1&quot;</span> <span style="color: #E46F47;">title</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;&quot;</span><span style="color: #00bbdd;">&gt;</span>导航1<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">a</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;&lt;</span><span style="color: #00bbdd;">a</span> <span style="color: #E46F47;">href</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;#d2&quot;</span> <span style="color: #E46F47;">title</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;&quot;</span> <span style="color: #E46F47;">class</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;lh&quot;</span><span style="color: #00bbdd;">&gt;</span>导航2<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">a</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;</span>
	<span style="color: #00bbdd;">&lt;</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;&lt;</span><span style="color: #00bbdd;">a</span> <span style="color: #E46F47;">href</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;http://www.vfresh.org/&quot;</span> <span style="color: #E46F47;">title</span><span style="color: #00bbdd;">=</span><span style="color: #FC3901;">&quot;&quot;</span><span style="color: #00bbdd;">&gt;</span>导航3<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">a</span><span style="color: #00bbdd;">&gt;&lt;/</span><span style="color: #00bbdd;">li</span><span style="color: #00bbdd;">&gt;</span>
<span style="color: #00bbdd;">&lt;/</span><span style="color: #00bbdd;">ul</span><span style="color: #00bbdd;">&gt;</span></pre></div></div>

<p>“导航1”对应显示id值为“d1”的层(href值#后的值)<br />
“导航3”无对应层，无切换效果<br />
导航1和导航3在非click触发导航情况下可打开“http://www.vfresh.org/”</p>
<p>默认显示的tab为设置了高亮className的连接对应的层，如上例默认显示导航2对应的层“d2”<br />
如未设置高亮className，则默认显示第一个导航连接对应的层“d1&#8243;</p>
<p>后期将会考虑做以下扩展，记录下：</p>
<ol>
<li>鼠标移动触发加上延迟</li>
<li>可通过window.location.hash的值来显示对应的层</li>
<li>优化点击显示tab的方法&#8221;showTab&#8221;</li>
<li>可移除/添加tab</li>
</ol>
<img src="http://www.vfresh.org/?ak_action=api_record_view&id=385&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.vfresh.org/js/385/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>YUI学习笔记（一）</title>
		<link>http://www.vfresh.org/js/228</link>
		<comments>http://www.vfresh.org/js/228#comments</comments>
		<pubDate>Tue, 21 Oct 2008 01:58:31 +0000</pubDate>
		<dc:creator>vicZen</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.vfresh.org/?p=228</guid>
		<description><![CDATA[迫于压力，提前开始学习js框架 YUI的介绍可见yahoo台湾地方站： Yahoo! 用户界面 (YUI) 函示库是一组使用 JavaScript 所制作出的工具和控件组合，用来建立丰富且具有互动性，并且以 DOM 程序、DHTML 和 Ajax 等技术为基础的网站应用程序。 YUI 函示库还包含了一些核心的 CSS 资源。YUI 函示库中的所有组件都基于BSD 条款以开放原始码的形式公开发布，并且提供给所有网友免费使用。 YUI分成很多个组件，你可以选择你需要的加载，这样就可以大大减少文件大小，优化HTTP request；为了方便，可以使用Configuration and Hosting对js文件加载进行配置。YUI Configuration and Hosting 是雅虎为全球的YUI使用者免费提供了专门的YUI主机。YUI的使用者们可以及时用到最新更新的YUI，同时经过专门优化过的高性能服务器，提供了更快的文件访问速度。 YUI相关资源： Download YUI YUI Developer Yahoo!设计模式库 YUI Blog YUI Blog China 淘宝汉化中的YUI文档 相关阅读YAHOO的性能分析工具YSlow

<div class="relate-post"><h3>相关阅读</h3><ol class="list"><li><a href='http://www.vfresh.org/w3c/80' rel='bookmark' title='Permanent Link: YAHOO的性能分析工具YSlow'>YAHOO的性能分析工具YSlow</a></li>
</ol></div>]]></description>
			<content:encoded><![CDATA[<p>迫于压力，提前开始学习js框架</p>
<p>YUI的介绍可见<a href="http://tw.developer.yahoo.com/yui.html" target="_blank">yahoo台湾地方站</a>：</p>
<blockquote><p>Yahoo! 用户界面 (YUI) 函示库是一组使用 JavaScript 所制作出的工具和控件组合，用来建立丰富且具有互动性，并且以 DOM 程序、DHTML 和 Ajax 等技术为基础的网站应用程序。 YUI 函示库还包含了一些核心的 CSS 资源。YUI 函示库中的所有组件都基于<a href="http://developer.yahoo.com/yui/license.html" target="_blank">BSD 条款</a>以开放原始码的形式公开发布，并且提供给所有网友免费使用。</p></blockquote>
<p>YUI分成很多个组件，你可以选择你需要的加载，这样就可以大大减少文件大小，优化HTTP request；为了方便，可以使用<a href="http://developer.yahoo.com/yui/articles/hosting/">Configuration and Hosting</a>对js文件加载进行配置。YUI Configuration and Hosting 是雅虎为全球的YUI使用者免费提供了专门的YUI主机。YUI的使用者们可以及时用到最新更新的YUI，同时经过专门优化过的高性能服务器，提供了更快的文件访问速度。</p>
<p><strong>YUI相关资源：</strong></p>
<ul>
<li><a href="http://developer.yahoo.com/yui/download/" target="_blank">Download YUI</a></li>
<li><a href="http://developer.yahoo.com/yui/" target="_blank">YUI Developer</a></li>
<li><a href="http://developer.yahoo.com/ypatterns/" target="_blank">Yahoo!设计模式库</a></li>
<li><a href="http://yuiblog.com/blog" target="_blank">YUI Blog</a></li>
<li><a href="http://www.yuiblog.cn/" target="_blank">YUI Blog China</a></li>
<li><a href="http://code.google.com/p/yui-doc-zh/" target="_blank">淘宝汉化中的YUI文档</a></li>
</ul>
<img src="http://www.vfresh.org/?ak_action=api_record_view&id=228&type=feed" alt="" />

<div class="relate-post"><h3>相关阅读</h3><ol class="list"><li><a href='http://www.vfresh.org/w3c/80' rel='bookmark' title='Permanent Link: YAHOO的性能分析工具YSlow'>YAHOO的性能分析工具YSlow</a></li>
</ol></div>]]></content:encoded>
			<wfw:commentRss>http://www.vfresh.org/js/228/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javascript无间断滚动（横向/纵向）</title>
		<link>http://www.vfresh.org/js/186</link>
		<comments>http://www.vfresh.org/js/186#comments</comments>
		<pubDate>Wed, 28 May 2008 09:17:52 +0000</pubDate>
		<dc:creator>vicZen</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.vfresh.org/?p=186</guid>
		<description><![CDATA[点此查看示例 点此下载(请以此下载版本为准) 参数说明： javascriptscrollSingle&#40;mode,element,w,h,childTag,num,delay,btn1,btn2&#41; mode：必填项，滚动类型，“x”为横向滚动，“y”为纵向滚动 element：目标元素，必填 w：宽度，必填 h：高度，必填 childTag：目标元素的需要进行滚动的子节点tagName，必填 num:必要的子元素个数，默认为5（

<div class="relate-post"><h3>相关阅读</h3><ol class="list"><li><a href='http://www.vfresh.org/js/385' rel='bookmark' title='Permanent Link: JavaScript选项卡'>JavaScript选项卡</a></li>
</ol></div>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.vfresh.org/code/scrollSingle/" target="_blank">点此查看示例</a><br />
<a href="http://vfresh.googlecode.com/svn/code/js/scrollSingle/scrollSingle.rar">点此下载</a>(请以此下载版本为准)</p>
<p>参数说明：</p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">javascript</strong></div><div class="code"><pre class="javascript">scrollSingle<span style="color: #009900;">&#40;</span>mode<span style="color: #339933;">,</span>element<span style="color: #339933;">,</span>w<span style="color: #339933;">,</span>h<span style="color: #339933;">,</span>childTag<span style="color: #339933;">,</span>num<span style="color: #339933;">,</span>delay<span style="color: #339933;">,</span>btn1<span style="color: #339933;">,</span>btn2<span style="color: #009900;">&#41;</span></pre></div></div>

<ul>
<li>mode：必填项，滚动类型，“x”为横向滚动，“y”为纵向滚动</li>
<li>element：目标元素，必填</li>
<li>w：宽度，必填</li>
<li>h：高度，必填</li>
<li>childTag：目标元素的需要进行滚动的子节点tagName，必填</li>
<li>num:必要的子元素个数，默认为5（<=该数值时，按钮不显示，不滚动），纯数字</li>
<li>delay：延迟时间，单位毫秒，默认为3000</li>
<li>leftBtn：左侧按钮，可选；</li>
<li>rightBtn：右侧按钮，可选；</li>
</ul>
<p><span id="more-186"></span><br />
已知问题及需改进处：</p>
<ol>
<li>element的padding/margin/border被强制改为0或none；</li>
<li>leftBtn/rightBtn的值是className时创建元素的样式有问题，需改进；</li>
</ol>
<img src="http://www.vfresh.org/?ak_action=api_record_view&id=186&type=feed" alt="" />

<div class="relate-post"><h3>相关阅读</h3><ol class="list"><li><a href='http://www.vfresh.org/js/385' rel='bookmark' title='Permanent Link: JavaScript选项卡'>JavaScript选项卡</a></li>
</ol></div>]]></content:encoded>
			<wfw:commentRss>http://www.vfresh.org/js/186/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>获取外联样式</title>
		<link>http://www.vfresh.org/js/184</link>
		<comments>http://www.vfresh.org/js/184#comments</comments>
		<pubDate>Tue, 20 May 2008 09:22:23 +0000</pubDate>
		<dc:creator>vicZen</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.vfresh.org/?p=184</guid>
		<description><![CDATA[IE及OP可使用currentStyle，具体用法可参考《DHTML手册》 Firefox等浏览器可以使用下面的方式来获取 javascriptwindow.getComputedStyle&#40;element,''&#41;.getPropertyValue&#40;stylevalue&#41;; 注意这2中方式都是只读的。 于是写了个公用的函数： javascriptfunction getStyle&#40;ele,value&#41; &#123;/*----- 获取元素的真实style -----*/ var rs; if&#40;ele.style&#91;value&#93;&#41; &#123; rs = ele.style&#91;value&#93;; &#125;else if&#40;window.getComputedStyle&#41; &#123; value=value.replace&#40;/([A-Z])/g,&#34;-$1&#34;&#41;; rs = window.getComputedStyle&#40;ele,''&#41;.getPropertyValue&#40;value&#41;; if&#40;value == 'color'&#41; &#123;rs = colorToHex&#40;rs&#41;;&#125; //格式化color为16进制表示 &#125;else if&#40;ele.currentStyle&#41; &#123; rs = ele.currentStyle&#91;value&#93;; &#125;else &#123; return null; &#125; return rs; &#125; 但各浏览器获取color的值不同（ff/sa为rgb值,op为十六进制值,currentStyle获取的是css里面的原始有效值） 因此需要对color值进行转换（十六进制表示，无法格式化预命名颜色）： javascriptfunction colorToHex&#40;color&#41; &#123;/*----- 以十六进制格式化style中的color，无法格式化预命名颜色 -----*/ var rgb = [...]

<div class="relate-post"><h3>相关阅读</h3><ol class="list"><li><a href='http://www.vfresh.org/js/116' rel='bookmark' title='Permanent Link: 页面平滑加载js'>页面平滑加载js</a></li>
</ol></div>]]></description>
			<content:encoded><![CDATA[<p>IE及OP可使用<strong>currentStyle</strong>，具体用法可参考<a target="_blank" href="http://www.phpx.com/man/dhtmlcn/objects/currentStyle.html">《DHTML手册》</a><br />
Firefox等浏览器可以使用下面的方式来获取</p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">javascript</strong></div><div class="code"><pre class="javascript">window.<span style="color: #660066;">getComputedStyle</span><span style="color: #009900;">&#40;</span>element<span style="color: #339933;">,</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getPropertyValue</span><span style="color: #009900;">&#40;</span>stylevalue<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>注意这2中方式都是只读的。</p>
<p>于是写了个公用的函数：<br />
<span id="more-184"></span></p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">javascript</strong></div><div class="code"><pre class="javascript"><span style="color: #003366; font-weight: bold;">function</span> getStyle<span style="color: #009900;">&#40;</span>ele<span style="color: #339933;">,</span>value<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #006600; font-style: italic;">/*-----  获取元素的真实style  -----*/</span>
	<span style="color: #003366; font-weight: bold;">var</span> rs<span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>ele.<span style="color: #660066;">style</span><span style="color: #009900;">&#91;</span>value<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		rs <span style="color: #339933;">=</span> ele.<span style="color: #660066;">style</span><span style="color: #009900;">&#91;</span>value<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>window.<span style="color: #660066;">getComputedStyle</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		value<span style="color: #339933;">=</span>value.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/([A-Z])/g</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;-$1&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		rs <span style="color: #339933;">=</span> window.<span style="color: #660066;">getComputedStyle</span><span style="color: #009900;">&#40;</span>ele<span style="color: #339933;">,</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getPropertyValue</span><span style="color: #009900;">&#40;</span>value<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>value <span style="color: #339933;">==</span> <span style="color: #3366CC;">'color'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>rs <span style="color: #339933;">=</span> colorToHex<span style="color: #009900;">&#40;</span>rs<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span> <span style="color: #006600; font-style: italic;">//格式化color为16进制表示</span>
	<span style="color: #009900;">&#125;</span><span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>ele.<span style="color: #660066;">currentStyle</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		rs <span style="color: #339933;">=</span> ele.<span style="color: #660066;">currentStyle</span><span style="color: #009900;">&#91;</span>value<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000066; font-weight: bold;">return</span> rs<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>但各浏览器获取color的值不同（ff/sa为rgb值,op为十六进制值,currentStyle获取的是css里面的原始有效值）<br />
因此需要对color值进行转换（十六进制表示，无法格式化预命名颜色）：</p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">javascript</strong></div><div class="code"><pre class="javascript"><span style="color: #003366; font-weight: bold;">function</span> colorToHex<span style="color: #009900;">&#40;</span>color<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #006600; font-style: italic;">/*-----  以十六进制格式化style中的color，无法格式化预命名颜色  -----*/</span>
	<span style="color: #003366; font-weight: bold;">var</span> rgb <span style="color: #339933;">=</span> <span style="color: #009966; font-style: italic;">/rgb\((\d{1,3}),(\s)*(\d{1,3}),(\s)*(\d{1,3})\)/</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//rgb正则,结果序数为1、3、5</span>
	<span style="color: #003366; font-weight: bold;">var</span> noun <span style="color: #339933;">=</span> <span style="color: #009966; font-style: italic;">/^\w+/</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//预命名颜色正则</span>
	<span style="color: #003366; font-weight: bold;">var</span> rs<span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>rgb.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>color<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> rgbfix <span style="color: #339933;">=</span> rgb.<span style="color: #660066;">exec</span><span style="color: #009900;">&#40;</span>color<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> r<span style="color: #339933;">,</span>g<span style="color: #339933;">,</span>b<span style="color: #339933;">;</span>
		r <span style="color: #339933;">=</span> parseInt<span style="color: #009900;">&#40;</span>rgbfix<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">16</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		g <span style="color: #339933;">=</span> parseInt<span style="color: #009900;">&#40;</span>rgbfix<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">3</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">16</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		b <span style="color: #339933;">=</span> parseInt<span style="color: #009900;">&#40;</span>rgbfix<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">5</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">16</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		rs <span style="color: #339933;">=</span> <span style="color: #3366CC;">'#'</span><span style="color: #339933;">+</span><span style="color: #009900;">&#40;</span>r<span style="color: #339933;">&lt;</span><span style="color: #CC0000;">10</span><span style="color: #339933;">?</span><span style="color: #3366CC;">'0'</span><span style="color: #339933;">+</span>r<span style="color: #339933;">:</span>r<span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #009900;">&#40;</span>g<span style="color: #339933;">&lt;</span><span style="color: #CC0000;">10</span><span style="color: #339933;">?</span><span style="color: #3366CC;">'0'</span><span style="color: #339933;">+</span>g<span style="color: #339933;">:</span>g<span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #009900;">&#40;</span>b<span style="color: #339933;">&lt;</span><span style="color: #CC0000;">10</span><span style="color: #339933;">?</span><span style="color: #3366CC;">'0'</span><span style="color: #339933;">+</span>b<span style="color: #339933;">:</span>b<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
		rs <span style="color: #339933;">=</span> color<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>rs.<span style="color: #660066;">length</span><span style="color: #339933;">==</span><span style="color: #CC0000;">4</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #339933;">!</span>noun.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>rs<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>rs <span style="color: #339933;">=</span> rs<span style="color: #339933;">+</span>rs.<span style="color: #660066;">split</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#125;</span><span style="color: #006600; font-style: italic;">//修正简写的十六进制，采取length判断方式</span>
	<span style="color: #000066; font-weight: bold;">return</span> rs<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>5.23<br />
修正getPropertyValue方法获取类似于paddingLeft的值的问题<br />
优化效率：有style属性定义时优先取style的值、color值修正仅在getComputedStyle取值时进行</p>
<img src="http://www.vfresh.org/?ak_action=api_record_view&id=184&type=feed" alt="" />

<div class="relate-post"><h3>相关阅读</h3><ol class="list"><li><a href='http://www.vfresh.org/js/116' rel='bookmark' title='Permanent Link: 页面平滑加载js'>页面平滑加载js</a></li>
</ol></div>]]></content:encoded>
			<wfw:commentRss>http://www.vfresh.org/js/184/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javascript图片滚动新闻（渐变）</title>
		<link>http://www.vfresh.org/js/181</link>
		<comments>http://www.vfresh.org/js/181#comments</comments>
		<pubDate>Fri, 09 May 2008 07:10:27 +0000</pubDate>
		<dc:creator>vicZen</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.vfresh.org/?p=181</guid>
		<description><![CDATA[点此查看示例 点此下载 测试通过IE6/7、Firefox、opera、safari javascriptimgScrollByWrap&#40;imgWrap,time,w,h,btnclass,btnlight&#41;; 参数说明： imgWrap: 装置图片列表的容器，可参考示例 time: 切换时间，单位为毫秒（可选，默认为3500） w: 图片的宽度，不需要加px，例如125（可选，默认为auto） h: 图片的高度，不需要加px（可选，默认为auto） btnclass: 装置按钮的容器的className（可选，默认为scrollNewsBtn） btnlight: 按钮高亮的className（可选，默认为lh） 需要一个空白图片“blank.gif”，图片路径请自行修改scroll.js第385行 5.19更新 firefox等标准浏览器也可以正常渐变了 不再需要默认图片，仅需要一个图片容器即可 未来可能会加入更多的切换效果 功能是完成了，但代码可能还需后继优化 5.20 修正高宽取值为auto时的错误]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.vfresh.org/code/imgScroll/" target="_blank">点此查看示例</a><br />
<a href="http://vfresh.googlecode.com/svn/code/js/imgScroll/imgScroll.rar">点此下载</a></p>
<p>测试通过IE6/7、Firefox、opera、safari</p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">javascript</strong></div><div class="code"><pre class="javascript">imgScrollByWrap<span style="color: #009900;">&#40;</span>imgWrap<span style="color: #339933;">,</span>time<span style="color: #339933;">,</span>w<span style="color: #339933;">,</span>h<span style="color: #339933;">,</span>btnclass<span style="color: #339933;">,</span>btnlight<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>参数说明：</p>
<blockquote><p>
imgWrap: 装置图片列表的容器，可参考示例<br />
time: 切换时间，单位为毫秒（可选，默认为3500）<br />
w: 图片的宽度，不需要加px，例如125（可选，默认为auto）<br />
h: 图片的高度，不需要加px（可选，默认为auto）<br />
btnclass: 装置按钮的容器的className（可选，默认为scrollNewsBtn）<br />
btnlight: 按钮高亮的className（可选，默认为lh）
</p></blockquote>
<p><span id="more-181"></span></p>
<p>需要一个空白图片“<a href="http://www.vfresh.org/code/imgScroll/blank.gif">blank.gif</a>”，图片路径请自行修改<a href="http://www.vfresh.org/code/imgScroll/scroll.js">scroll.js</a>第385行</p>
<p>5.19更新</p>
<ol>
<li>firefox等标准浏览器也可以正常渐变了</li>
<li>不再需要默认图片，仅需要一个图片容器即可</li>
<li>未来可能会加入更多的切换效果</li>
<li>功能是完成了，但代码可能还需后继优化</li>
</ol>
<p>5.20<br />
修正高宽取值为auto时的错误</p>
<img src="http://www.vfresh.org/?ak_action=api_record_view&id=181&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.vfresh.org/js/181/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>css压缩工具(javascript)</title>
		<link>http://www.vfresh.org/js/177</link>
		<comments>http://www.vfresh.org/js/177#comments</comments>
		<pubDate>Thu, 17 Apr 2008 10:13:24 +0000</pubDate>
		<dc:creator>vicZen</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.vfresh.org/?p=177</guid>
		<description><![CDATA[点此运行 0418更新界面，加入更多的优化： 去除注释 去除多余空白(空格、制表符等) 去除末尾分号 单位属性值优化 大写转换为小写 简单的正则替换 还有待更多的优化&#038;&#038;学习]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.vfresh.org/webtools/vvcsstidy/">点此运行</a><br />
0418更新界面，加入更多的优化：</p>
<ul>
<li>去除注释</li>
<li>去除多余空白(空格、制表符等)</li>
<li>去除末尾分号</li>
<li>单位属性值优化</li>
<li>大写转换为小写</li>
</ul>
<p>简单的正则替换</p>
<p>还有待更多的优化&#038;&#038;学习</p>
<img src="http://www.vfresh.org/?ak_action=api_record_view&id=177&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.vfresh.org/js/177/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FireFox正则插件Regular Expressions Tester</title>
		<link>http://www.vfresh.org/js/175</link>
		<comments>http://www.vfresh.org/js/175#comments</comments>
		<pubDate>Thu, 17 Apr 2008 04:46:11 +0000</pubDate>
		<dc:creator>vicZen</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[正则表达式]]></category>

		<guid isPermaLink="false">http://www.vfresh.org/?p=175</guid>
		<description><![CDATA[Regular Expressions Tester可以很方便的进行正则表达式测试，学习正则的好东东^^]]></description>
			<content:encoded><![CDATA[<p><a href="https://addons.mozilla.org/zh-CN/firefox/addon/2077">Regular Expressions Tester</a>可以很方便的进行正则表达式测试，学习正则的好东东^^</p>
<p><img src='http://www.vfresh.org/wp-content/uploads/2008/04/regular-expressions-tester.jpg' alt='FireFox正则插件Regular Expressions Tester' /></p>
<img src="http://www.vfresh.org/?ak_action=api_record_view&id=175&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.vfresh.org/js/175/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IE下attachEvent中this指向问题</title>
		<link>http://www.vfresh.org/js/172</link>
		<comments>http://www.vfresh.org/js/172#comments</comments>
		<pubDate>Wed, 09 Apr 2008 08:18:42 +0000</pubDate>
		<dc:creator>vicZen</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.vfresh.org/?p=172</guid>
		<description><![CDATA[IE的attachEvent绑定事件时，事件中的this指针会指向window对象。而在ff中，addEventListener中的this会指向触发事件的对象。 解决方法：srcElement &#124;&#124; target javascriptelement.attachEvent&#40;'onclick',function &#40;e&#41; &#123;e = window.event &#124;&#124; e ; obj = e.srcElement &#124;&#124; e.target; func&#40;obj&#41;&#125;&#41;; event.srcElement就是指向触发事件的元素（IE only） event.target同srcElement一样（Firefox only） 相关阅读页面平滑加载js 获取外联样式

<div class="relate-post"><h3>相关阅读</h3><ol class="list"><li><a href='http://www.vfresh.org/js/116' rel='bookmark' title='Permanent Link: 页面平滑加载js'>页面平滑加载js</a></li>
<li><a href='http://www.vfresh.org/js/184' rel='bookmark' title='Permanent Link: 获取外联样式'>获取外联样式</a></li>
</ol></div>]]></description>
			<content:encoded><![CDATA[<p>IE的attachEvent绑定事件时，事件中的this指针会指向window对象。而在ff中，addEventListener中的this会指向触发事件的对象。</p>
<p>解决方法：srcElement || target</p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">javascript</strong></div><div class="code"><pre class="javascript">element.<span style="color: #660066;">attachEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'onclick'</span><span style="color: #339933;">,</span><span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>e <span style="color: #339933;">=</span> window.<span style="color: #660066;">event</span> <span style="color: #339933;">||</span> e <span style="color: #339933;">;</span> obj <span style="color: #339933;">=</span> e.<span style="color: #660066;">srcElement</span> <span style="color: #339933;">||</span> e.<span style="color: #660066;">target</span><span style="color: #339933;">;</span> func<span style="color: #009900;">&#40;</span>obj<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>event.srcElement就是指向触发事件的元素（IE only）</p>
<p>event.target同srcElement一样（Firefox only）</p>
<img src="http://www.vfresh.org/?ak_action=api_record_view&id=172&type=feed" alt="" />

<div class="relate-post"><h3>相关阅读</h3><ol class="list"><li><a href='http://www.vfresh.org/js/116' rel='bookmark' title='Permanent Link: 页面平滑加载js'>页面平滑加载js</a></li>
<li><a href='http://www.vfresh.org/js/184' rel='bookmark' title='Permanent Link: 获取外联样式'>获取外联样式</a></li>
</ol></div>]]></content:encoded>
			<wfw:commentRss>http://www.vfresh.org/js/172/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JS正则表达式详解（转）</title>
		<link>http://www.vfresh.org/js/171</link>
		<comments>http://www.vfresh.org/js/171#comments</comments>
		<pubDate>Thu, 03 Apr 2008 06:55:49 +0000</pubDate>
		<dc:creator>vicZen</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[正则表达式]]></category>

		<guid isPermaLink="false">http://www.vfresh.org/?p=171</guid>
		<description><![CDATA[JS的正则表达式//校验是否全由数字组成 function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return false return true } //校验登录名：只能输入5-20个以字母开头、可带数字、“_”、“.”的字串 function isRegisterUserName(s) { var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]&#124;[._]){4,19}$/; if (!patrn.exec(s)) return false return true } //校验用户姓名：只能输入1-30个以字母开头的字串 function isTrueName(s) { var patrn=/^[a-zA-Z]{1,30}$/; if (!patrn.exec(s)) return false return true } }} //校验密码：只能输入6-20个字母、数字、下划线 {{{ function isPasswd(s) { var patrn=/^(\w){6,20}$/; if (!patrn.exec(s)) return false return true } //校验普通电话、传真号码：可以“+”开头，除数字外，可含有“-” [...]

<div class="relate-post"><h3>相关阅读</h3><ol class="list"><li><a href='http://www.vfresh.org/js/184' rel='bookmark' title='Permanent Link: 获取外联样式'>获取外联样式</a></li>
<li><a href='http://www.vfresh.org/js/116' rel='bookmark' title='Permanent Link: 页面平滑加载js'>页面平滑加载js</a></li>
</ol></div>]]></description>
			<content:encoded><![CDATA[<p>JS的正则表达式//校验是否全由数字组成</p>
<p>function isDigit(s)<br />
{<br />
var patrn=/^[0-9]{1,20}$/;<br />
if (!patrn.exec(s)) return false<br />
return true<br />
}</p>
<p>//校验登录名：只能输入5-20个以字母开头、可带数字、“_”、“.”的字串</p>
<p>function isRegisterUserName(s)<br />
{<br />
var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;<br />
if (!patrn.exec(s)) return false<br />
return true<br />
}<br />
<span id="more-171"></span><br />
//校验用户姓名：只能输入1-30个以字母开头的字串</p>
<p>function isTrueName(s)<br />
{<br />
var patrn=/^[a-zA-Z]{1,30}$/;<br />
if (!patrn.exec(s)) return false<br />
return true<br />
}<br />
}}</p>
<p>//校验密码：只能输入6-20个字母、数字、下划线<br />
{{{<br />
function isPasswd(s)<br />
{<br />
var patrn=/^(\w){6,20}$/;<br />
if (!patrn.exec(s)) return false<br />
return true<br />
}</p>
<p>//校验普通电话、传真号码：可以“+”开头，除数字外，可含有“-”</p>
<p>function isTel(s)<br />
{<br />
//var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?(\d){1,12})+$/;<br />
var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;<br />
if (!patrn.exec(s)) return false<br />
return true<br />
}</p>
<p>//校验手机号码：必须以数字开头，除数字外，可含有“-”</p>
<p>function isMobil(s)<br />
{<br />
var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;<br />
if (!patrn.exec(s)) return false<br />
return true<br />
}</p>
<p>//校验邮政编码</p>
<p>function isPostalCode(s)<br />
{<br />
//var patrn=/^[a-zA-Z0-9]{3,12}$/;<br />
var patrn=/^[a-zA-Z0-9 ]{3,12}$/;<br />
if (!patrn.exec(s)) return false<br />
return true<br />
}</p>
<p>//校验搜索关键字</p>
<p>function isSearch(s)<br />
{<br />
var patrn=/^[^`~!@#$%^&#038;*()+=|\\\][\]\{\}:;&#8217;\,.<>/?]{1}[^`~!@$%^&#038;()+=|\\\]<br />
        [\]\{\}:;&#8217;\,.<>?]{0,19}$/;<br />
if (!patrn.exec(s)) return false<br />
return true<br />
}</p>
<p>function isIP(s) //by zergling<br />
{<br />
var patrn=/^[0-9.]{1,20}$/;<br />
if (!patrn.exec(s)) return false<br />
return true<br />
}</p>
<p>正则表达式&#8221;^\\d+$&#8221;　　//非负整数（正整数 + 0）<br />
&#8220;^[0-9]*[1-9][0-9]*$&#8221;　　//正整数<br />
&#8220;^((-\\d+)|(0+))$&#8221;　　//非正整数（负整数 + 0）<br />
&#8220;^-[0-9]*[1-9][0-9]*$&#8221;　　//负整数<br />
&#8220;^-?\\d+$&#8221;　　　　//整数<br />
&#8220;^\\d+(\\.\\d+)?$&#8221;　　//非负浮点数（正浮点数 + 0）<br />
&#8220;^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$&#8221;　<br />
//正浮点数<br />
&#8220;^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$&#8221;　　//非正浮点数（负浮点数 + 0）<br />
&#8220;^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$&#8221;　<br />
//负浮点数<br />
&#8220;^(-?\\d+)(\\.\\d+)?$&#8221;　　//浮点数<br />
&#8220;^[A-Za-z]+$&#8221;　　//由26个英文字母组成的字符串<br />
&#8220;^[A-Z]+$&#8221;　　//由26个英文字母的大写组成的字符串<br />
&#8220;^[a-z]+$&#8221;　　//由26个英文字母的小写组成的字符串<br />
&#8220;^[A-Za-z0-9]+$&#8221;　　//由数字和26个英文字母组成的字符串<br />
&#8220;^\\w+$&#8221;　　//由数字、26个英文字母或者下划线组成的字符串<br />
&#8220;^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$&#8221;　　　　//email地址<br />
&#8220;^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$&#8221;　　//url<br />
&#8220;^[A-Za-z0-9_]*$&#8221;</p>
<p>正则表达式使用详解简介</p>
<p>简单的说，正则表达式是一种可以用于模式匹配和替换的强有力的工具。其作用如下：测试字符串的某个模式。例如，可以对一个输入字符串</p>
<p>进行测试，看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。 替换文本。可以在文档中使用一个正则</p>
<p>表达式来标识特定文字，然后可以全部将其删除，或者替换为别的文字。 根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入</p>
<p>字段中查找特定文字。</p>
<p>基本语法</p>
<p>在对正则表达式的功能和作用有了初步的了解之后，我们就来具体看一下正则表达式的语法格式。 正则表达式的形式一般如下：　　</p>
<p>/love/　　其中位于“/”定界符之间的部分就是将要在目标对象中进行匹配的模式。用户只要把希望查找匹配对象的模式内容放入“/”定界</p>
<p>符之间即可。为了能够使用户更加灵活的定制模式内容，正则表达式提供了专门的“元字符”。所谓元字符就是指那些在正则表达式中具有特</p>
<p>殊意义的专用字符，可以用来规定其前导字符（即位于元字符前面的字符）在目标对象中的出现模式。 较为常用的元字符包括： “+”， “*</p>
<p>”，以及 “?”。</p>
<p>“+”元字符规定其前导字符必须在目标对象中连续出现一次或多次。</p>
<p>“*”元字符规定其前导字符必须在目标对象中出现零次或连续多次。</p>
<p>“?”元字符规定其前导对象必须在目标对象中连续出现零次或一次。</p>
<p>下面，就让我们来看一下正则表达式元字符的具体应用。</p>
<p>/fo+/　　因为上述正则表达式中包含“+”元字符，表示可以与目标对象中的 “fool”, “fo”, 或者 “football”等在字母f后面连续出现</p>
<p>一个或多个字母o的字符串相匹配。</p>
<p>/eg*/　　因为上述正则表达式中包含“*”元字符，表示可以与目标对象中的 “easy”, “ego”, 或者 “egg”等在字母e后面连续出现零个</p>
<p>或多个字母g的字符串相匹配。</p>
<p>/Wil?/　　因为上述正则表达式中包含“？”元字符，表示可以与目标对象中的 “Win”, 或者“Wilson”,等在字母i后面连续出现零个或一</p>
<p>个字母l的字符串相匹配。</p>
<p>有时候不知道要匹配多少字符。为了能适应这种不确定性，正则表达式支持限定符的概念。这些限定符可以指定正则表达式的一个给定组件必</p>
<p>须要出现多少次才能满足匹配。</p>
<p>{n} n 是一个非负整数。匹配确定的 n 次。例如，&#8217;o{2}&#8217; 不能匹配 &#8220;Bob&#8221; 中的 &#8216;o&#8217;，但是能匹配 &#8220;food&#8221; 中的两个 o。</p>
<p>{n,} n 是一个非负整数。至少匹配 n 次。例如，&#8217;o{2,}&#8217; 不能匹配 &#8220;Bob&#8221; 中的 &#8216;o&#8217;，但能匹配 &#8220;foooood&#8221; 中的所有 o。&#8217;o{1,}&#8217; 等价于</p>
<p>&#8216;o+&#8217;。&#8217;o{0,}&#8217; 则等价于 &#8216;o*&#8217;。</p>
<p>{n,m} m 和 n 均为非负整数，其中n <= m。最少匹配 n 次且最多匹配 m 次。例如，"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}'</p>
<p>等价于 'o?'。请注意在逗号和两个数之间不能有空格。</p>
<p>除了元字符之外，用户还可以精确指定模式在匹配对象中出现的频率。例如，/jim {2,6}/ 上述正则表达式规定字符m可以在匹配对象中连续出</p>
<p>现2-6次，因此，上述正则表达式可以同jimmy或jimmmmmy等字符串相匹配。 在对如何使用正则表达式有了初步了解之后，我们来看一下其它几</p>
<p>个重要的元字符的使用方式。</p>
<p>\s：用于匹配单个空格符，包括tab键和换行符；<br />
\S：用于匹配除单个空格符之外的所有字符；<br />
\d：用于匹配从0到9的数字；<br />
\w：用于匹配字母，数字或下划线字符；<br />
\W：用于匹配所有与\w不匹配的字符；<br />
. ：用于匹配除换行符之外的所有字符。</p>
<p>（说明：我们可以把\s和\S以及\w和\W看作互为逆运算） 下面，我们就通过实例看一下如何在正则表达式中使用上述元字符。 /\s+/ 上述正</p>
<p>则表达式可以用于匹配目标对象中的一个或多个空格字符。 /\d000/　如果我们手中有一份复杂的财务报表，那么我们可以通过上述正则表达</p>
<p>式轻而易举的查找到所有总额达千元的款项。 除了我们以上所介绍的元字符之外，正则表达式中还具有另外一种较为独特的专用字符，即定位</p>
<p>符。定位符用于规定匹配模式在目标对象中的出现位置。 较为常用的定位符包括： “^”, “$”, “\b” 以及 “\B”。<br />
“^”定位符规定匹配模式必须出现在目标字符串的开头<br />
“$”定位符规定匹配模式必须出现在目标对象的结尾<br />
“\b”定位符规定匹配模式必须出现在目标字符串的开头或结尾的两个边界之一<br />
“\B”定位符则规定匹配对象必须位于目标字符串的开头和结尾两个边界之内，<br />
      即匹配对象既不能作为目标字符串的开头，也不能作为目标字符串的结尾。</p>
<p>同样，我们也可以把“^”和“$”以及“\b”和“\B”看作是互为逆运算的两组定位符。举例来说： /^hell/　因为上述正则表达式中包含“^</p>
<p>”定位符，所以可以与目标对象中以 “hell”, “hello”或“hellhound”开头的字符串相匹配。 /ar$/　因为上述正则表达式中包含“$”</p>
<p>定位符，所以可以与目标对象中以 “car”, “bar”或 “ar” 结尾的字符串相匹配。 /\bbom/　因为上述正则表达式模式以“\b”定位符开</p>
<p>头，所以可以与目标对象中以 “bomb”, 或 “bom”开头的字符串相匹配。/man\b/　因为上述正则表达式模式以“\b”定位符结尾，所以可</p>
<p>以与目标对象中以 “human”, “woman”或 “man”结尾的字符串相匹配。 为了能够方便用户更加灵活的设定匹配模式，正则表达式允许使</p>
<p>用者在匹配模式中指定某一个范围而不局限于具体的字符。例如：<br />
/[A-Z]/　　上述正则表达式将会与从A到Z范围内任何一个大写字母相匹配。<br />
/[a-z]/　　上述正则表达式将会与从a到z范围内任何一个小写字母相匹配。<br />
/[0-9]/ 　上述正则表达式将会与从0到9范围内任何一个数字相匹配。<br />
/([a-z][A-Z][0-9])+/　上述正则表达式将会与任何由字母和数字组成的字符串，如 “aB0” 等相匹配。</p>
<p>这里需要提醒用户注意的一点就是可以在正则表达式中使用 “()” 把字符串组合在一起。“()”符号包含的内容必须同时出现在目标对象中</p>
<p>。因此，上述正则表达式将无法与诸如 “abc”等的字符串匹配，因为“abc”中的最后一个字符为字母而非数字。 如果我们希望在正则表达</p>
<p>式中实现类似编程逻辑中的“或”运算，在多个不同的模式中任选一个进行匹配的话，可以使用管道符 “|”。例如：/to|too|2/　上述正则</p>
<p>表达式将会与目标对象中的 “to”, “too”, 或 “2” 相匹配。正则表达式中还有一个较为常用的运算符，即否定符 “[^]”。与我们前文</p>
<p>所介绍的定位符 “^” 不同，否定符 “[^]”规定目标对象中不能存在模式中所规定的字符串。例如：/[^A-C]/　上述字符串将会与目标对象</p>
<p>中除A，B，和C之外的任何字符相匹配。一般来说，当“^”出现在 “[]”内时就被视做否定运算符；而当“^”位于“[]”之外，或没有“[]</p>
<p>”时，则应当被视做定位符。最后，当用户需要在正则表达式的模式中加入元字符，并查找其匹配对象时，可以使用转义符“\”。例</p>
<p>如：/Th\*/ 　上述正则表达式将会与目标对象中的“Th*”而非“The”等相匹配。在构造正则表达式之后，就可以象数学表达式一样来求值，</p>
<p>也就是说，可以从左至右并按照一个优先级顺序来求值。优先级如下：<br />
1．\ 转义符<br />
2．(), (?:), (?=), [] 圆括号和方括号<br />
3．*, +, ?, {n}, {n,}, {n,m} 限定符<br />
4．^, $, \anymetacharacter 位置和顺序<br />
5．|“或”操作</p>
<p>使用实例 在JavaScript 1.2中带有一个功能强大的RegExp()对象，可以用来进行正则表达式的匹配操作。其中的test()方法可以检验目标对象</p>
<p>中是否包含匹配模式，并相应的返回true或false。我们可以使用JavaScript编写以下脚本，验证用户输入的邮件地址的有效性。<br />
<html><br />
<head><br />
　 <script language="Javascript1.2">
　　　　 <!-- start hiding
　　　　 function verifyAddress(obj)
　　　　　{
　　　　　　var email = obj.email.value;
　　　　　　var pattern =
/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;
　　　　　　flag = pattern.test(email);
　　　　　　if(flag)
　　　　　　{
　　　　　　　alert(“Your email address is correct!”);
　　　　　　　return true;
　　　　　　}
　　　　　　else
　　　　　　　{
　　　　　　　　alert(“Please try again!”);
　　　　　　　　return false;
　　　　　　　 }
　　　　　 }
　　　　 // stop hiding -->
　　　 </script><br />
　　</head><br />
　 <body><br />
　　<br />
<form onSubmit="return verifyAddress(this);">
　　　<br />
<input name="email" type="text">
　　　<br />
<input type="submit">
　　　 </form>
<p>　　</body><br />
</html></p>
<p>正则表达式对象本对象包含正则表达式模式以及表明如何应用模式的标志。<br />
语法 1 re = /pattern/[flags]<br />
语法 2 re = new RegExp(&#8220;pattern&#8221;,["flags"])</p>
<p>参数 re 必选项。将要赋值为正则表达式模式的变量名。<br />
Pattern 必选项。要使用的正则表达式模式。如果使用语法 1，用 &#8220;/&#8221; 字符分隔模式。如果用语法 2，用引号将模式引起来。</p>
<p>Flags 可选项。如果使用语法 2 要用引号将 flag 引起来。标志可以组合使用，可用的有：</p>
<p>g （全文查找出现的所有 pattern）<br />
i （忽略大小写）<br />
m （多行查找）</p>
<p>示例下面的示例创建一个包含正则表达式模式及相关标志的对象(re)，向您演示正则表达式对象的用法。在本例中，作为结果的正则表达式对</p>
<p>象又用于 match 方法中：<br />
function MatchDemo()<br />
{<br />
var r, re; // 声明变量。<br />
var s = &#8220;The rain in Spain falls mainly in the plain&#8221;;<br />
re = new RegExp(&#8220;ain&#8221;,&#8221;g&#8221;); // 创建正则表达式对象。<br />
r = s.match(re); // 在字符串 s 中查找匹配。<br />
return(r);<br />
}</p>
<p>返回值： ain,ain,ain,ain<br />
属性 lastIndex 属性 | source 属性<br />
方法 compile 方法 | exec 方法 | test 方法<br />
要求 版本 3<br />
请参阅 RegExp 对象 | 正则表达式语法 | String 对象</p>
<p>exec 方法用正则表达式模式在字符串中运行查找，并返回包含该查找结果的一个数组。 rgExp.exec(str)<br />
参数</p>
<p>rgExp 必选项。包含正则表达式模式和可用标志的正则表达式对象。</p>
<p>str 必选项。要在其中执行查找的 String 对象或字符串文字。</p>
<p>说明<br />
如果 exec 方法没有找到匹配，则它返回 null。如果它找到匹配，则 exec 方法返回一个数组，并且更新全局 RegExp 对象的属性，以反映匹</p>
<p>配结果。数组的0元素包含了完整的匹配，而第1到n元素中包含的是匹配中出现的任意一个子匹配。这相当于没有设置全局标志 (g) 的 match</p>
<p>方法。如果为正则表达式设置了全局标志，exec 从以 lastIndex 的值指示的位置开始查找。如果没有设置全局标志，exec 忽略 lastIndex</p>
<p>的值，从字符串的起始位置开始搜索。</p>
<p>exec 方法返回的数组有三个属性，分别是 input、index 和 lastIndex。Input 属性包含了整个被查找的字符串。Index 属性中包含了整个被</p>
<p>查找字符串中被匹配的子字符串的位置。LastIndex 属性中包含了匹配中最后一个字符的下一个位置。</p>
<p>示例<br />
下面的例子举例说明了 exec 方法的用法：</p>
<p>function RegExpTest()<br />
{<br />
var ver = Number(ScriptEngineMajorVersion() + &#8220;.&#8221; + ScriptEngineMinorVersion())<br />
if (ver >= 5.5){ // 测试 JScript 的版本。<br />
var src = &#8220;The rain in Spain falls mainly in the plain.&#8221;;<br />
var re = /\w+/g; // 创建正则表达式模式。<br />
var arr;<br />
while ((arr = re.exec(src)) != null)<br />
document.write(arr.index + &#8220;-&#8221; + arr.lastIndex + arr + &#8220;\t&#8221;);<br />
}<br />
else{<br />
alert(&#8220;请使用 JScript 的更新版本&#8221;);<br />
}<br />
}</p>
<p>返回值：0-3The 4-8rain 9-11in 12-17Spain 18-23falls 24-30mainly 31-33in 34-37the 38-43plain</p>
<p>test 方法<br />
返回一个 Boolean 值，它指出在被查找的字符串中是否存在模式。 rgexp.test(str)</p>
<p>参数<br />
rgexp 必选项。包含正则表达式模式或可用标志的正则表达式对象。</p>
<p>str 必选项。要在其上测试查找的字符串。</p>
<p>说明 test 方法检查在字符串中是否存在一个模式，如果存在则返回 true，否则就返回 false。全局 RegExp 对象的属性不由 test 方法来修</p>
<p>改。</p>
<p>示例下面的例子举例说明了 test 方法的用法：</p>
<p>function TestDemo(re, s)<br />
{<br />
var s1; // 声明变量。<br />
// 检查字符串是否存在正则表达式。<br />
if (re.test(s)) // 测试是否存在。<br />
s1 = &#8221; contains &#8220;; // s 包含模式。<br />
else<br />
s1 = &#8221; does not contain &#8220;; // s 不包含模式。<br />
return(&#8220;&#8216;&#8221; + s + &#8220;&#8216;&#8221; + s1 + &#8220;&#8216;&#8221;+ re.source + &#8220;&#8216;&#8221;); // 返回字符串。<br />
}</p>
<p>函数调用：document.write (TestDemo(/ain+/ ,&#8221;The rain in Spain falls mainly in the plain.&#8221;));</p>
<p>返回值：&#8217;The rain in Spain falls mainly in the plain.&#8217; contains &#8216;ain+&#8217;</p>
<p>match 方法使用正则表达式模式对字符串执行查找，并将包含查找的结果作为数组返回。<br />
stringObj.match(rgExp)<br />
参数<br />
stringObj 必选项。对其进行查找的 String 对象或字符串文字。</p>
<p>rgExp 必选项。为包含正则表达式模式和可用标志的正则表达式对象。也可以是包含正则表达式模式和可用标志的变量名或字符串文字。</p>
<p>说明<br />
如果 match 方法没有找到匹配，返回 null。如果找到匹配返回一个数组并且更新全局 RegExp 对象的属性以反映匹配结果。 match 方法返回</p>
<p>的数组有三个属性：input、index 和 lastIndex。Input 属性包含整个的被查找字符串。Index 属性包含了在整个被查找字符串中匹配的子字</p>
<p>符串的位置。LastIndex 属性包含了最后一次匹配中最后一个字符的下一个位置。如果没有设置全局标志 (g)，数组的 0 元素包含整个匹配，</p>
<p>而第 1 到 n 元素包含了匹配中曾出现过的任一个子匹配。这相当于没有设置全局标志的 exec 方法。如果设置了全局标志，元素 0 到 n 中</p>
<p>包含所有匹配。</p>
<p>示例<br />
下面的示例演示了match 方法的用法：</p>
<p>function MatchDemo()<br />
{<br />
var r, re; // 声明变量。<br />
var s = &#8220;The rain in Spain falls mainly in the plain&#8221;;<br />
re = /ain/i; // 创建正则表达式模式。<br />
r = s.match(re); // 尝试匹配搜索字符串。<br />
return(r); // 返回第一次出现 &#8220;ain&#8221; 的地方。<br />
}</p>
<p>返回值：ain<br />
本示例说明带 g 标志设置的 match 方法的用法。</p>
<p>function MatchDemo()<br />
{<br />
var r, re; // 声明变量。<br />
var s = &#8220;The rain in Spain falls mainly in the plain&#8221;;<br />
re = /ain/ig; // 创建正则表达式模式。<br />
r = s.match(re); // 尝试去匹配搜索字符串。<br />
return(r); // 返回的数组包含了所有 &#8220;ain&#8221;<br />
// 出现的四个匹配。<br />
}</p>
<p>返回值：ain,ain,ain,ain<br />
上面几行代码演示了字符串文字的 match 方法的用法。</p>
<p>var r, re = &#8220;Spain&#8221;;<br />
r = &#8220;The rain in Spain&#8221;.replace(re, &#8220;Canada&#8221;);<br />
return r;</p>
<p>返回值：The rain in Canada search 方法返回与正则表达式查找内容匹配的第一个子字符串的位置。<br />
stringObj.search(rgExp)</p>
<p>参数<br />
stringObj 必选项。要在其上进行查找的 String 对象或字符串文字。</p>
<p>rgExp 必选项。包含正则表达式模式和可用标志的正则表达式对象。</p>
<p>说明</p>
<p>search 方法指明是否存在相应的匹配。如果找到一个匹配，search 方法将返回一个整数值，指明这个匹配距离字符串开始的偏移位置。如果</p>
<p>没有找到匹配，则返回 -1。</p>
<p>示例<br />
下面的示例演示了 search 方法的用法。</p>
<p>function SearchDemo()<br />
{<br />
var r, re; // 声明变量。<br />
var s = &#8220;The rain in Spain falls mainly in the plain.&#8221;;<br />
re = /falls/i; // 创建正则表达式模式。<br />
r = s.search(re); // 查找字符串。<br />
return(r); // 返回 Boolean 结果。<br />
}</p>
<p>返回值：18</p>
<p>正则表达式语法一个正则表达式就是由普通字符（例如字符 a 到 z）以及特殊字符（称为元字符）组成的文字模式。该模式描述在查找文字主</p>
<p>体时待匹配的一个或多个字符串。正则表达式作为一个模板，将某个字符模式与所搜索的字符串进行匹配。<br />
这里有一些可能会遇到的正则表达式示例：</p>
<p>JScript VBScript 匹配<br />
/^\[ \t]*$/ &#8220;^\[ \t]*$&#8221; 匹配一个空白行。<br />
/\d{2}-\d{5}/ &#8220;\d{2}-\d{5}&#8221; 验证一个ID 号码是否由一个2位数字，一个连字符以及一个5位数字组成。<br />
/<(.*)>.*<\/\1>/ &#8220;<(.*)>.*<\/\1>&#8221; 匹配一个 HTML 标记。</p>
<p>下表是元字符及其在正则表达式上下文中的行为的一个完整列表：</p>
<p>字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 后向引用、或一个八进制转义符。例如，&#8217;n&#8217; 匹配字符 &#8220;n&#8221;。&#8217;\n&#8217;</p>
<p>匹配一个换行符。序列 &#8216;<br />
&#8216; 匹配 &#8220;\&#8221; 而 &#8220;\(&#8221; 则匹配 &#8220;(&#8220;。</p>
<p>^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性，^ 也匹配 &#8216;\n&#8217; 或 &#8216;\r&#8217; 之后的位置。</p>
<p>$ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性，$ 也匹配 &#8216;\n&#8217; 或 &#8216;\r&#8217; 之前的位置。</p>
<p>匹配前面的子表达式零次或多次。例如，zo* 能匹配 &#8220;z&#8221; 以及 &#8220;zoo&#8221;。 * 等价于{0,}。<br />
+ 匹配前面的子表达式一次或多次。例如，&#8217;zo+&#8217; 能匹配 &#8220;zo&#8221; 以及 &#8220;zoo&#8221;，但不能匹配 &#8220;z&#8221;。+ 等价于 {1,}。</p>
<p>? 匹配前面的子表达式零次或一次。例如，&#8221;do(es)?&#8221; 可以匹配 &#8220;do&#8221; 或 &#8220;does&#8221; 中的&#8221;do&#8221; 。? 等价于 {0,1}。</p>
<p>{n} n 是一个非负整数。匹配确定的 n 次。例如，&#8217;o{2}&#8217; 不能匹配 &#8220;Bob&#8221; 中的 &#8216;o&#8217;，但是能匹配 &#8220;food&#8221; 中的两个 o。</p>
<p>{n,} n 是一个非负整数。至少匹配n 次。例如，&#8217;o{2,}&#8217; 不能匹配 &#8220;Bob&#8221; 中的 &#8216;o&#8217;，但能匹配 &#8220;foooood&#8221; 中的所有 o。&#8217;o{1,}&#8217; 等价于</p>
<p>&#8216;o+&#8217;。&#8217;o{0,}&#8217; 则等价于 &#8216;o*&#8217;。</p>
<p>{n,m} m 和 n 均为非负整数，其中n <= m。最少匹配 n 次且最多匹配 m 次。刘， &#8220;o{1,3}&#8221; 将匹配 &#8220;fooooood&#8221; 中的前三个 o。&#8217;o{0,1}&#8217;</p>
<p>等价于 &#8216;o?&#8217;。请注意在逗号和两个数之间不能有空格。</p>
<p>? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时，匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字</p>
<p>符串，而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如，对于字符串 &#8220;oooo&#8221;，&#8217;o+?&#8217; 将匹配单个 &#8220;o&#8221;，而 &#8216;o+&#8217; 将匹配所有 &#8216;o&#8217;。</p>
<p>. 匹配除 &#8220;\n&#8221; 之外的任何单个字符。要匹配包括 &#8216;\n&#8217; 在内的任何字符，请使用象 &#8216;[.\n]&#8216; 的模式。 (pattern) 匹配pattern 并获取这一</p>
<p>匹配。所获取的匹配可以从产生的 Matches 集合得到，在VBScript 中使用 SubMatches 集合，在JScript 中则使用 $0…$9 属性。要匹配圆</p>
<p>括号字符，请使用 &#8216;\(&#8216; 或 &#8216;\)&#8217;。</p>
<p>(?:pattern) 匹配 pattern 但不获取匹配结果，也就是说这是一个非获取匹配，不进行存储供以后使用。这在使用 &#8220;或&#8221; 字符 (|) 来组合一</p>
<p>个模式的各个部分是很有用。例如， &#8216;industr(?:y|ies) 就是一个比 &#8216;industry|industries&#8217; 更简略的表达式。</p>
<p>(?=pattern) 正向预查，在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使</p>
<p>用。例如， &#8216;Windows (?=95|98|NT|2000)&#8217; 能匹配 &#8220;Windows 2000&#8243; 中的 &#8220;Windows&#8221; ，但不能匹配 &#8220;Windows 3.1&#8243; 中的 &#8220;Windows&#8221;。预查不</p>
<p>消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始。</p>
<p>(?!pattern) 负向预查，在任何不匹配Negative lookahead matches the search string at any point where a string not matching</p>
<p>pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。例如&#8217;Windows (?!</p>
<p>95|98|NT|2000)&#8217; 能匹配 &#8220;Windows 3.1&#8243; 中的 &#8220;Windows&#8221;，但不能匹配 &#8220;Windows 2000&#8243; 中的 &#8220;Windows&#8221;。预查不消耗字符，也就是说，在一</p>
<p>个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始</p>
<p>x|y 匹配 x 或 y。例如，&#8217;z|food&#8217; 能匹配 &#8220;z&#8221; 或 &#8220;food&#8221;。&#8217;(z|f)ood&#8217; 则匹配 &#8220;zood&#8221; 或 &#8220;food&#8221;。</p>
<p>[xyz] 字符集合。匹配所包含的任意一个字符。例如， &#8216;[abc]&#8216; 可以匹配 &#8220;plain&#8221; 中的 &#8216;a&#8217;。</p>
<p>[^xyz] 负值字符集合。匹配未包含的任意字符。例如， &#8216;[^abc]&#8216; 可以匹配 &#8220;plain&#8221; 中的&#8217;p'。</p>
<p>[a-z] 字符范围。匹配指定范围内的任意字符。例如，&#8217;[a-z]&#8216; 可以匹配 &#8216;a&#8217; 到 &#8216;z&#8217; 范围内的任意小写字母字符。</p>
<p>[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如，&#8217;[^a-z]&#8216; 可以匹配任何不在 &#8216;a&#8217; 到 &#8216;z&#8217; 范围内的任意字符。</p>
<p>\b 匹配一个单词边界，也就是指单词和空格间的位置。例如， &#8216;er\b&#8217; 可以匹配&#8221;never&#8221; 中的 &#8216;er&#8217;，但不能匹配 &#8220;verb&#8221; 中的 &#8216;er&#8217;。</p>
<p>\B 匹配非单词边界。&#8217;er\B&#8217; 能匹配 &#8220;verb&#8221; 中的 &#8216;er&#8217;，但不能匹配 &#8220;never&#8221; 中的 &#8216;er&#8217;。</p>
<p>\cx 匹配由x指明的控制字符。例如， \cM 匹配一个 Control-M 或回车符。 x 的值必须为 A-Z 或 a-z 之一。否则，将 c 视为一个原义的</p>
<p>&#8216;c&#8217; 字符。</p>
<p>\d 匹配一个数字字符。等价于 [0-9]。</p>
<p>\D 匹配一个非数字字符。等价于 [^0-9]。</p>
<p>\f 匹配一个换页符。等价于 \x0c 和 \cL。</p>
<p>\n 匹配一个换行符。等价于 \x0a 和 \cJ。</p>
<p>\r 匹配一个回车符。等价于 \x0d 和 \cM。</p>
<p>\s 匹配任何空白字符，包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。</p>
<p>\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。</p>
<p>\t 匹配一个制表符。等价于 \x09 和 \cI。</p>
<p>\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。</p>
<p>\w 匹配包括下划线的任何单词字符。等价于&#8217;[A-Za-z0-9_]&#8216;。</p>
<p>\W 匹配任何非单词字符。等价于 &#8216;[^A-Za-z0-9_]&#8216;。</p>
<p>\xn 匹配 n，其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如， &#8216;\x41&#8242; 匹配 &#8220;A&#8221;。&#8217;\x041&#8242; 则等价于 &#8216;\x04&#8242; &#038;</p>
<p>&#8220;1&#8243;。正则表达式中可以使用 ASCII 编码。.</p>
<p>\num 匹配 num，其中 num 是一个正整数。对所获取的匹配的引用。例如，&#8217;(.)\1&#8242; 匹配两个连续的相同字符。</p>
<p>\n 标识一个八进制转义值或一个后向引用。如果 \n 之前至少 n 个获取的子表达式，则 n 为后向引用。否则，如果 n 为八进制数字 (0-7)</p>
<p>，则 n 为一个八进制转义值。</p>
<p>\nm 标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有is preceded by at least nm 个获取得子表达式，则 nm 为后向引用。如</p>
<p>果 \nm 之前至少有 n 个获取，则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足，若 n 和 m 均为八进制数字 (0-7)，则 \nm</p>
<p>将匹配八进制转义值 nm。</p>
<p>\nml 如果 n 为八进制数字 (0-3)，且 m 和 l 均为八进制数字 (0-7)，则匹配八进制转义值 nml。</p>
<p>\un 匹配 n，其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如， \u00A9 匹配版权符号 (?)。</p>
<p>优先权顺序在构造正则表达式之后，就可以象数学表达式一样来求值，也就是说，可以从左至右并按照一个优先权顺序来求值。<br />
下表从最高优先级到最低优先级列出各种正则表达式操作符的优先权顺序：</p>
<p>操作符 描述<br />
\ 转义符<br />
(), (?:), (?=), [] 圆括号和方括号<br />
*, +, ?, {n}, {n,}, {n,m} 限定符<br />
^, $, \anymetacharacter 位置和顺序<br />
| “或”操作</p>
<p>普通字符</p>
<p>普通字符由所有那些未显式指定为元字符的打印和非打印字符组成。这包括所有的大写和小写字母字符，所有数字，所有标点符号以及一些符</p>
<p>号。</p>
<p>最简单的正则表达式是一个单独的普通字符，可以匹配所搜索字符串中的该字符本身。例如，单字符模式 &#8216;A&#8217; 可以匹配所搜索字符串中任何位</p>
<p>置出现的字母 &#8216;A&#8217;。这里有一些单字符正则表达式模式的示例：</p>
<p>/a/<br />
/7/<br />
/M/</p>
<p>等价的 VBScript 单字符正则表达式为：<br />
&#8220;a&#8221;<br />
&#8220;7&#8243;<br />
&#8220;M&#8221;</p>
<p>可以将多个单字符组合在一起得到一个较大的表达式。例如，下面的 JScript 正则表达式不是别的，就是通过组合单字符表达式 &#8216;a&#8217;、&#8217;7&#8242;以</p>
<p>及 &#8216;M&#8217; 所创建出来的一个表达式。<br />
/a7M/ 等价的 VBScript 表达式为：</p>
<p>&#8220;a7M&#8221; 请注意这里没有连接操作符。所需要做的就是将一个字符放在了另一个字符后面。</p>
<img src="http://www.vfresh.org/?ak_action=api_record_view&id=171&type=feed" alt="" />

<div class="relate-post"><h3>相关阅读</h3><ol class="list"><li><a href='http://www.vfresh.org/js/184' rel='bookmark' title='Permanent Link: 获取外联样式'>获取外联样式</a></li>
<li><a href='http://www.vfresh.org/js/116' rel='bookmark' title='Permanent Link: 页面平滑加载js'>页面平滑加载js</a></li>
</ol></div>]]></content:encoded>
			<wfw:commentRss>http://www.vfresh.org/js/171/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>页面平滑加载js</title>
		<link>http://www.vfresh.org/js/116</link>
		<comments>http://www.vfresh.org/js/116#comments</comments>
		<pubDate>Thu, 30 Aug 2007 06:43:26 +0000</pubDate>
		<dc:creator>vicZen</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.vfresh.org/index.php/2007/08/30/dom-ready-onload/</guid>
		<description><![CDATA[为了避免JS在HTMLDOM加载完之前就运行而产生错误，一般是通过window.onload事件来控制页面加载完之后才执行JS，但window.onload的加载还包括了图片、视频等，这样造成js最终执行可能要等上很长一段时间。 下面的代码能判定DOM是否加载完成： 提供支持的2个东东： Mozilla提供的DOMContentLoaded事件——在Dom树构完成但图片资源等未完成时触发 IE的defer属性——包括在W3C的DOM1标准里，但defer只能放在script标签里.冏 javascript/* *(c)2006 Dean Edwards/Matthias Miller/John Resig *Special thanks to Dan Webb's domready.js Prototype extension *and Simon Willison's addLoadEvent * *For more info,see: *http://dean.edwards.name/weblog/2006/06/again/ *http://www.vivabit.com/bollocks/2006/06/21/a-dom-ready-extension-for-prototype *http://simon.incutio.com/archive/2004/05/26/addLoadEvent * *Thrown together by Jesse Skinner (http://www.thefutureoftheweb.com/) * * *To use: call addDOMLoadEvent one or more times with functions, ie: * *function something() { * [...]

<div class="relate-post"><h3>相关阅读</h3><ol class="list"><li><a href='http://www.vfresh.org/js/184' rel='bookmark' title='Permanent Link: 获取外联样式'>获取外联样式</a></li>
</ol></div>]]></description>
			<content:encoded><![CDATA[<p>为了避免JS在HTMLDOM加载完之前就运行而产生错误，一般是通过window.onload事件来控制页面加载完之后才执行JS，但window.onload的加载还包括了图片、视频等，这样造成js最终执行可能要等上很长一段时间。</p>
<p>下面的代码能判定DOM是否加载完成：</p>
<blockquote>
<p>提供支持的2个东东：</p>
<ul>
<li>Mozilla提供的<strong>DOMContentLoaded</strong>事件——在Dom树构完成但图片资源等未完成时触发</li>
<li>IE的<a href="http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/defer.asp"><strong>defer</strong></a>属性——包括在W3C的DOM1标准里，但defer只能放在script标签里.冏</li>
</ul>
</blockquote>
<p><span id="more-116"></span></p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">javascript</strong></div><div class="code"><pre class="javascript"><span style="color: #006600; font-style: italic;">/*
*(c)2006 Dean Edwards/Matthias Miller/John Resig
*Special thanks to Dan Webb's domready.js Prototype extension
*and Simon Willison's addLoadEvent
*
*For more info,see:
*http://dean.edwards.name/weblog/2006/06/again/
*http://www.vivabit.com/bollocks/2006/06/21/a-dom-ready-extension-for-prototype
*http://simon.incutio.com/archive/2004/05/26/addLoadEvent
*
*Thrown together by Jesse Skinner (http://www.thefutureoftheweb.com/)
*
*
*To use: call addDOMLoadEvent one	or more times with functions, ie:
*
*function something() {
*   // do something
*}
*addDOMLoadEvent(something);
*
*addDOMLoadEvent(function() {
*    // do other stuff
*});
*/</span>
<span style="color: #003366; font-weight: bold;">function</span> addLoad<span style="color: #009900;">&#40;</span>func<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>window.__load_events<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> init <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #006600; font-style: italic;">// quit if this function has already been called</span>
			<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>arguments.<span style="color: #660066;">callee</span>.<span style="color: #660066;">done</span><span style="color: #009900;">&#41;</span> <span style="color: #000066; font-weight: bold;">return</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #006600; font-style: italic;">// flag this function so we don't do the same thing twice</span>
			arguments.<span style="color: #660066;">callee</span>.<span style="color: #660066;">done</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #006600; font-style: italic;">// kill the timer</span>
			<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>window.__load_timer<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
				clearInterval<span style="color: #009900;">&#40;</span>window.__load_timer<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				window.__load_timer <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
&nbsp;
			<span style="color: #006600; font-style: italic;">// execute each function	in the stack in the order they were	added</span>
			<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>i <span style="color: #339933;">&lt;</span> window.__load_events.<span style="color: #660066;">length</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				window.__load_events<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			window.__load_events <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #006600; font-style: italic;">// for Mozilla/Opera9</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>document.<span style="color: #660066;">addEventListener</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			document.<span style="color: #660066;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;DOMContentLoaded&quot;</span><span style="color: #339933;">,</span> init<span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">// for Internet Explorer</span>
		<span style="color: #009966; font-style: italic;">/*@cc_on @*/</span>
		<span style="color: #006600; font-style: italic;">/*@if (@_win32)
			document.write(&quot;&lt;scr&quot;+&quot;ipt id='__ie_onload' defer src='//0'&gt;&lt;\/scr&quot;+&quot;ipt&gt;&quot;);
			var script =document.getElementById(&quot;__ie_onload&quot;);
			script.onreadystatechange = function() {
				if(this.readyState == &quot;complete&quot;) {
					init(); //	call the onload handler
				}
			};
		/*@end @*/</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">// for Safari</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/WebKit/i</span>.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>navigator.<span style="color: #660066;">userAgent</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #006600; font-style: italic;">// sniff</span>
			window.__load_timer <span style="color: #339933;">=</span> setInterval<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/loaded|complete/</span>.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>document.<span style="color: #660066;">readyState</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	<span style="color: #006600; font-style: italic;">//call the onload handler</span>
				<span style="color: #009900;">&#125;</span>
			<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><span style="color: #CC0000;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">// for other browsers</span>
		window.<span style="color: #000066;">onload</span> <span style="color: #339933;">=</span> init<span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">// create event function stack</span>
		window.__load_events <span style="color: #339933;">=</span>	<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">// add function to event stack</span>
	window.__load_events.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span>func<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<img src="http://www.vfresh.org/?ak_action=api_record_view&id=116&type=feed" alt="" />

<div class="relate-post"><h3>相关阅读</h3><ol class="list"><li><a href='http://www.vfresh.org/js/184' rel='bookmark' title='Permanent Link: 获取外联样式'>获取外联样式</a></li>
</ol></div>]]></content:encoded>
			<wfw:commentRss>http://www.vfresh.org/js/116/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>单条新闻滚动</title>
		<link>http://www.vfresh.org/js/86</link>
		<comments>http://www.vfresh.org/js/86#comments</comments>
		<pubDate>Wed, 01 Aug 2007 04:33:16 +0000</pubDate>
		<dc:creator>vicZen</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.vfresh.org/index.php/86.html</guid>
		<description><![CDATA[效果点此预览 javascriptfunction insertAfter&#40;newElement,targetElement&#41; &#123; var parent = targetElement.parentNode; if &#40;parent.lastChild == targetElement&#41; &#123; parent.appendChild&#40;newElement&#41;; &#125; else &#123; parent.insertBefore&#40;newElement,targetElement.nextSibling&#41;; &#125; &#125; &#160; //滚动新闻---begin // initMarquee(主容器id，主容器中放置文字的容器元素名称，新容器id，高度px，延迟时间ms) //调用函数：insertAfter(newElement,targetElement)，依赖innerHTML方法； marqueeInterval=new Array&#40;&#41;; marqueeId = 0; &#160; function marqueeMain &#40;&#41; &#123; initMarquee&#40;'mContend','li','mBox',15,4000&#41;; &#125; &#160; function initMarquee&#40;mid,mchild,mnewid,mheight,mdelay&#41; &#123; if &#40;!document.getElementById&#41; return false; if &#40;!document.getElementById &#40;mid&#41;&#41; return false; var m = document.getElementById&#40;mid&#41;; var [...]

<div class="relate-post"><h3>相关阅读</h3><ol class="list"><li><a href='http://www.vfresh.org/w3c/91' rel='bookmark' title='Permanent Link: position: fixed for IE < 7'>position: fixed for IE < 7</a></li>
<li><a href='http://www.vfresh.org/js/116' rel='bookmark' title='Permanent Link: 页面平滑加载js'>页面平滑加载js</a></li>
</ol></div>]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.vfresh.org/wp-content/uploads/2007/08/singlenewsscroll.htm' title='单条新闻滚动' target="_blank">效果点此预览</a><br />
<span id="more-86"></span></p>

<div class="wp_syntax"><div class="toolbar"><strong class="lang">javascript</strong></div><div class="code"><pre class="javascript"><span style="color: #003366; font-weight: bold;">function</span> insertAfter<span style="color: #009900;">&#40;</span>newElement<span style="color: #339933;">,</span>targetElement<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #003366; font-weight: bold;">var</span> parent <span style="color: #339933;">=</span> targetElement.<span style="color: #660066;">parentNode</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>parent.<span style="color: #660066;">lastChild</span> <span style="color: #339933;">==</span> targetElement<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    parent.<span style="color: #660066;">appendChild</span><span style="color: #009900;">&#40;</span>newElement<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
    parent.<span style="color: #660066;">insertBefore</span><span style="color: #009900;">&#40;</span>newElement<span style="color: #339933;">,</span>targetElement.<span style="color: #660066;">nextSibling</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//滚动新闻---begin</span>
<span style="color: #006600; font-style: italic;">// initMarquee(主容器id，主容器中放置文字的容器元素名称，新容器id，高度px，延迟时间ms)</span>
<span style="color: #006600; font-style: italic;">//调用函数：insertAfter(newElement,targetElement)，依赖innerHTML方法；</span>
marqueeInterval<span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
marqueeId <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> marqueeMain <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	initMarquee<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'mContend'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'li'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'mBox'</span><span style="color: #339933;">,</span><span style="color: #CC0000;">15</span><span style="color: #339933;">,</span><span style="color: #CC0000;">4000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> initMarquee<span style="color: #009900;">&#40;</span>mid<span style="color: #339933;">,</span>mchild<span style="color: #339933;">,</span>mnewid<span style="color: #339933;">,</span>mheight<span style="color: #339933;">,</span>mdelay<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#41;</span> <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>document.<span style="color: #660066;">getElementById</span> <span style="color: #009900;">&#40;</span>mid<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> m <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span>mid<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> mc <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span>mid<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getElementsByTagName</span><span style="color: #009900;">&#40;</span>mchild<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	m.<span style="color: #660066;">style</span>.<span style="color: #660066;">display</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'none'</span><span style="color: #339933;">;</span>
	marqueeContent<span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>mc.<span style="color: #660066;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		marqueeContent<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> mc<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">innerHTML</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #003366; font-weight: bold;">var</span> str<span style="color: #339933;">=</span>marqueeContent<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> marDIV <span style="color: #339933;">=</span> document.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'div'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> marDIV2 <span style="color: #339933;">=</span> document.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'div'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">//var marSTR = document.createTextNode(str);</span>
	marDIV.<span style="color: #660066;">id</span> <span style="color: #339933;">=</span> mnewid<span style="color: #339933;">;</span>
	marDIV.<span style="color: #660066;">style</span>.<span style="color: #660066;">overflow</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'hidden'</span><span style="color: #339933;">;</span>
	marDIV.<span style="color: #660066;">style</span>.<span style="color: #660066;">height</span> <span style="color: #339933;">=</span> mheight<span style="color: #339933;">+</span><span style="color: #3366CC;">'px'</span><span style="color: #339933;">;</span>
	marDIV.<span style="color: #660066;">appendChild</span><span style="color: #009900;">&#40;</span>marDIV2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">//marDIV2.appendChild(marSTR);</span>
	marDIV2.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">=</span> str
	insertAfter<span style="color: #009900;">&#40;</span>marDIV<span style="color: #339933;">,</span>m<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	marqueeId<span style="color: #339933;">++;</span>
	marqueeInterval<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span>setInterval<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;startMarquee(&quot;</span><span style="color: #339933;">+</span>mheight<span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;,'&quot;</span><span style="color: #339933;">+</span>mnewid<span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;')&quot;</span><span style="color: #339933;">,</span>mdelay<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> startMarquee<span style="color: #009900;">&#40;</span>mheight<span style="color: #339933;">,</span>mnewid<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> str<span style="color: #339933;">=</span>marqueeContent<span style="color: #009900;">&#91;</span>marqueeId<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> newdiv <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span> <span style="color: #009900;">&#40;</span>mnewid<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	marqueeId<span style="color: #339933;">++;</span>
	<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>marqueeId<span style="color: #339933;">&gt;=</span>marqueeContent.<span style="color: #660066;">length</span><span style="color: #009900;">&#41;</span> marqueeId<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>newdiv.<span style="color: #660066;">childNodes</span>.<span style="color: #660066;">length</span><span style="color: #339933;">==</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> nextLine<span style="color: #339933;">=</span>document.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'DIV'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		nextLine.<span style="color: #660066;">innerHTML</span><span style="color: #339933;">=</span>str<span style="color: #339933;">;</span>
		newdiv.<span style="color: #660066;">appendChild</span><span style="color: #009900;">&#40;</span>nextLine<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #000066; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
		newdiv.<span style="color: #660066;">childNodes</span><span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">innerHTML</span><span style="color: #339933;">=</span>str<span style="color: #339933;">;</span>
		newdiv.<span style="color: #660066;">appendChild</span><span style="color: #009900;">&#40;</span>marqueeBox.<span style="color: #660066;">childNodes</span><span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		newdiv.<span style="color: #660066;">scrollTop</span><span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	clearInterval<span style="color: #009900;">&#40;</span>marqueeInterval<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	marqueeInterval<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span>setInterval<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;scrollMarquee(&quot;</span><span style="color: #339933;">+</span>mheight<span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;,'&quot;</span><span style="color: #339933;">+</span>mnewid<span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;')&quot;</span><span style="color: #339933;">,</span><span style="color: #CC0000;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> scrollMarquee<span style="color: #009900;">&#40;</span>mheight<span style="color: #339933;">,</span>mnewid<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> newdiv <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span> <span style="color: #009900;">&#40;</span>mnewid<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	newdiv.<span style="color: #660066;">scrollTop</span><span style="color: #339933;">++;</span>
	<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>newdiv.<span style="color: #660066;">scrollTop</span><span style="color: #339933;">%</span>mheight<span style="color: #339933;">==</span>mheight<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		clearInterval<span style="color: #009900;">&#40;</span>marqueeInterval<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #006600; font-style: italic;">//滚动新闻---end</span></pre></div></div>

<img src="http://www.vfresh.org/?ak_action=api_record_view&id=86&type=feed" alt="" />

<div class="relate-post"><h3>相关阅读</h3><ol class="list"><li><a href='http://www.vfresh.org/w3c/91' rel='bookmark' title='Permanent Link: position: fixed for IE < 7'>position: fixed for IE < 7</a></li>
<li><a href='http://www.vfresh.org/js/116' rel='bookmark' title='Permanent Link: 页面平滑加载js'>页面平滑加载js</a></li>
</ol></div>]]></content:encoded>
			<wfw:commentRss>http://www.vfresh.org/js/86/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AJAX实战 电子版下载</title>
		<link>http://www.vfresh.org/js/59</link>
		<comments>http://www.vfresh.org/js/59#comments</comments>
		<pubDate>Fri, 29 Jun 2007 11:45:49 +0000</pubDate>
		<dc:creator>vicZen</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.vfresh.org/index.php/59.html</guid>
		<description><![CDATA[《AJAX实战》 中文版电子书下载 下载地址: http://www.xlvv.com/soft/32/34/F76C/F76C8E14312754.html 另附: 《Ajax基础教程》中文版(附代码)(pdf格式) http://book.devworld.cn/book/5/20060825001.html]]></description>
			<content:encoded><![CDATA[<p>《AJAX实战》 中文版电子书下载<br />
下载地址:</p>
<p>http://www.xlvv.com/soft/32/34/F76C/F76C8E14312754.html</p>
<p>另附:<br />
《Ajax基础教程》中文版(附代码)(pdf格式)</p>
<p>http://book.devworld.cn/book/5/20060825001.html</p>
<img src="http://www.vfresh.org/?ak_action=api_record_view&id=59&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.vfresh.org/js/59/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
