<?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>I&#039;m Donkey &#187; 倔倔在前端</title>
	<atom:link href="http://imdonkey.com/blog/archives/category/webstandards/feed" rel="self" type="application/rss+xml" />
	<link>http://imdonkey.com/blog</link>
	<description></description>
	<lastBuildDate>Thu, 26 Aug 2010 02:14:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>倔倔死磕Javascript之放大镜</title>
		<link>http://imdonkey.com/blog/archives/478</link>
		<comments>http://imdonkey.com/blog/archives/478#comments</comments>
		<pubDate>Sun, 09 May 2010 13:49:30 +0000</pubDate>
		<dc:creator>Ting</dc:creator>
				<category><![CDATA[倔倔在前端]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[事件]]></category>

		<guid isPermaLink="false">http://imdonkey.com/blog/?p=478</guid>
		<description><![CDATA[<div id="_mcePaste">上次我已经预告了下一个要用javascript实现的是放大镜效果~</div>
<div id="_mcePaste">最开始是在<a href="http://ued.taobao.com/blog/about/" target="_blank">淘宝UED官方博客</a>上看到的.觉得很不错,以为是flash. F12一下才知道是js实现的.当时没具体看,现在开始学javascript了,突然想到这个效果,决定挑战一下哈~开始吧~</div>
<h2>Mockup</h2>
<a href="http://www.imdonkey.com/demo/img_zoomout.html" target="_blank"><img class="alignnone size-full wp-image-477" title="javascript_demo_mockup_2" src="http://imdonkey.com/blog/wp-content/uploads/2010/05/javascript_demo_mockup_2.jpg" alt="" width="508" height="496" /></a><p class='read-more'><a href='http://imdonkey.com/blog/archives/478'>阅读全文 »</a></p>]]></description>
			<content:encoded><![CDATA[<p>上次我已经预告了下一个要用javascript实现的是放大镜效果~</p>
<p>最开始是在<a href="http://ued.taobao.com/blog/about/" target="_blank">淘宝UED官方博客</a>上看到的.觉得很不错,以为是flash. F12一下才知道是js实现的.当时没具体看,现在开始学javascript了,突然想到这个效果,决定挑战一下哈~开始吧~</p>
<h2>Mockup</h2>
<p><a href="http://www.imdonkey.com/demo/img_zoomout.html" target="_blank"><img class="alignnone size-full wp-image-477" title="javascript_demo_mockup_2" src="http://imdonkey.com/blog/wp-content/uploads/2010/05/javascript_demo_mockup_2.jpg" alt="" width="508" height="496" /></a></p>
<h2>第一步:HTML&amp;CSS</h2>
<p>先不要着急写代码,先要考虑考虑实现这个效果对于代码结构上有什么特别的要求,我想到了两个方案:</p>
<p>1.一个小图容器,一个放大镜容器.<span style="color: #ff6600;">原图做为放大镜容器的背景</span></p>
<p>2.一个小图容器,一个放大镜容器.<span style="color: #ff6600;">原图做为放大镜子容器</span></p>
<p>这两个方案其实实现起来差别不大,但是考虑到将来图片有可能是动态读取出来的,而且大小不定,所以我们不推荐放在CSS背景中来实现,最后选择第二种方案.</p>
<p>HTML代码片段如下:</p>
<pre class="brush: xml;">
&lt;div onMouseMove=&quot;imgZoomOut(event)&quot; id=&quot;smallImgCon&quot;&gt;
	&lt;img src=&quot;img/airport_small_1.jpg&quot; id=&quot;smallImg&quot;/&gt;
	&lt;div id=&quot;magnifierCon&quot; style=&quot;display:none&quot;&gt;
		&lt;img src=&quot;img/magnifier.png&quot; id=&quot;magnifierBg&quot;/&gt;
		&lt;img src=&quot;img/airport_large_1.jpg&quot; id=&quot;largeImg&quot;/&gt;
	&lt;/div&gt;
&lt;/div&gt;
</pre>
<p>CSS代码片段如下:</p>
<pre class="brush: css;">
#smallImgCon {position:relative;left:0;top:0;}
#magnifierCon {height:276px;width:276px;position:absolute;overflow:hidden;z-index:3}
	#magnifierCon img#magnifierBg {position:absolute;z-index:2}
	#magnifierCon img#largeImg {position:absolute;z-index:1}
</pre>
<h2>第二步:准备好我们需要的信息</h2>
<p>我们暂且不去考虑图片大小不定这样一种情况,我们目前可以只针对这其中一张图片.只是放大镜大小固定而已.这里我使用的大小是276*276.<br />
大致思路是可以通过下图来了解:</p>
<p><a href="http://imdonkey.com/blog/wp-content/uploads/2010/05/magnifier_model_eg.gif"><img class="alignnone size-full wp-image-477" title="magnifier_model_eg" src="http://imdonkey.com/blog/wp-content/uploads/2010/05/magnifier_model_eg.gif" alt="" /></a></p>
<p>Step1.得到小图所在位置,即坐标,并将其做为原点.<br />
Step2.得到鼠标当前所在位置,这里是指相对于原点的,所以需要减去上一步得到的坐标值.<br />
Step3.有了这个距离,再减去放大镜长宽的一半就得到了放大镜的坐标.即它相对于原点的距离.<br />
<span style="color: #ff6600;">Step4.关键一步大图如何定位呢?</span><br />
这里需要注意的是这几个容器的层级关系:最外层容器是爷爷,放大镜与小图同是兄弟俩,大图是孙子(哈哈~~不是骂人哈)<br />
说白了就是将光标与原点之间的距离*缩放比例=相对应的大图坐标<br />
再减去放大镜宽高一半就得到了超出放大镜的那段距离 也就是大图相对于其父级容器(放大镜)的距离.将这两个值的赋给大图的left,top就基本搞定了~~<br />
大家晕不?呵呵 我都有点儿晕了&#8230;思路及表达能力有待进一步提高 <img src='http://imdonkey.com/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>那么按照以上步骤写代码吧:<br />
主要代码如下</p>
<pre class="brush: jscript;">
	var smallImgCon = document.getElementById(&quot;smallImgCon&quot;);
	var smallImg = document.getElementById(&quot;smallImg&quot;);
	var magnifierCon = document.getElementById(&quot;magnifierCon&quot;);
	var magnifierBg = document.getElementById(&quot;magnifierBg&quot;);
	var largeImg = document.getElementById(&quot;largeImg&quot;);

	function imgZoomOut(event) {

		//Step 1得到小图位置,即原点.
		smallImgConLocationX = smallImgCon.offsetLeft;
		smallImgConLocationY = smallImgCon.offsetTop;

		//Step2.得到光标相对于原点的坐标值.
		x = event.clientX - smallImgConLocationX;
		y = event.clientY - smallImgConLocationY;

		//Step3.放大镜相对于原点的距离.
		magnifierCon.style.left = x - magnifierWidth/2 + &quot;px&quot;;
		magnifierCon.style.top = y - magnifierHeight/2 + &quot;px&quot;;

		//Step4.大图定位
		x = - x*(largeImgWidth/smallImgWidth) + magnifierWidth/2;
		y = - y*(largeImgWidth/smallImgWidth) + magnifierHeight/2;

		largeImg.style.left = x + &quot;px&quot;;
		largeImg.style.top = y + &quot;px&quot;;

	}
</pre>
<p>写到这里基本结构有了,但还有一些问题需要考虑:</p>
<ol>
<li>鼠标移到图像外面了怎么办?</li>
<li>如何动态得到各个元素的大小,便于将来扩展呢?</li>
</ol>
<p>于是我们要添加另外两个函数跟一个条件判断:</p>
<pre class="brush: jscript;">
	function getImageSize(imageEl) {
		var i = new Image();
		i.src = imageEl.src;
		return new Array(i.width, i.height);
	}
	function dispear() {
		magnifierCon.style.display = &quot;none&quot;;
	}
	if ( x &lt; 0 || x &gt; smallImgWidth || y &lt; 0 || y &gt; smallImgHeight) {
		dispear();
	}else {
		...
	}
</pre>
<p><a href="http://www.imdonkey.com/demo/img_zoomout.html" target="_blank">最终效果演示</a><br />
小提示:大小图最后比例差别大些 这样效果更好更明显~<br />
再次强调,因为是初学,所以代码还有很多地方需要优化,再小的功能也要不断完善,倔倔会在学习中不断完善之前的练习~希望大家能多多帮助倔倔~~:)</p>
<h2>知识点总结:</h2>
<ol>
<li>函数之间的调用</li>
<li>数组的定义</li>
<li>鼠标事件的概念</li>
</ol>
<h2>下期预告:图片浏览+放大镜</h2>
]]></content:encoded>
			<wfw:commentRss>http://imdonkey.com/blog/archives/478/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>倔倔跟风学Vim(2)-vimtutor</title>
		<link>http://imdonkey.com/blog/archives/450</link>
		<comments>http://imdonkey.com/blog/archives/450#comments</comments>
		<pubDate>Thu, 06 May 2010 04:28:37 +0000</pubDate>
		<dc:creator>Ting</dc:creator>
				<category><![CDATA[倔倔在前端]]></category>
		<category><![CDATA[Vim]]></category>
		<category><![CDATA[vimtutor]]></category>

		<guid isPermaLink="false">http://imdonkey.com/blog/?p=450</guid>
		<description><![CDATA[安装过后就要开始熟悉Vim那些强大的命令了,一直看中文手册也不是办法,没有实践根本记不住.好在vim自带一个简单的入门教程,可以通过边看边练习的方式在半小时内掌握vim基本的命令.
在windows下要运行安装根目录下的vimtutor.bat.打开的文件默认就是一个副本,所以你可以尽情地在上面练习修改.
倔倔现在就要开始练习啦~哈
&#8230;
过了一遍vimtutor确实感觉不错~,好多命令都非常吸引人,我已经感觉到了熟练使用了这些命令后,编写代码时会有多么惊人的效率了~~
教程中每讲小结如下:
====================================================
1. 光标在屏幕文本中的移动既可以用箭头键，也可以使用 hjkl 字母键。


h (左移)	j (下行)       k (上行)	    l (右移)


2. 欲进入vim编辑器(从命令行提示符)，请输入∶vim 文件名 &#60;回车&#62;
3. 欲退出vim编辑器，请输入以下命令放弃所有修改∶
&#60;ESC&#62;   :q!	 &#60;回车&#62;
或者输入以下命令保存<p class='read-more'><a href='http://imdonkey.com/blog/archives/450'>阅读全文 »</a></p>]]></description>
			<content:encoded><![CDATA[<p>安装过后就要开始熟悉Vim那些强大的命令了,一直看中文手册也不是办法,没有实践根本记不住.好在vim自带一个简单的入门教程,可以通过边看边练习的方式在半小时内掌握vim基本的命令.</p>
<p>在windows下要运行安装根目录下的vimtutor.bat.打开的文件默认就是一个副本,所以你可以尽情地在上面练习修改.</p>
<p>倔倔现在就要开始练习啦~哈</p>
<p>&#8230;</p>
<p>过了一遍vimtutor确实感觉不错~,好多命令都非常吸引人,我已经感觉到了熟练使用了这些命令后,编写代码时会有多么惊人的效率了~~</p>
<h2>教程中每讲小结如下:</h2>
<div id="_mcePaste">====================================================<br />
1. 光标在屏幕文本中的移动既可以用箭头键，也可以使用 hjkl 字母键。</p>
<blockquote>
<div id="_mcePaste">
<p>h (左移)	j (下行)       k (上行)	    l (右移)</p>
</div>
</blockquote>
<p>2. 欲进入vim编辑器(从命令行提示符)，请输入∶vim 文件名 &lt;回车&gt;</p>
<p>3. 欲退出vim编辑器，请输入以下命令放弃所有修改∶</p>
<blockquote><p>&lt;ESC&gt;   :q!	 &lt;回车&gt;<br />
或者输入以下命令保存所有修改∶<br />
&lt;ESC&gt;   :wq	 &lt;回车&gt;</p></blockquote>
<p>4. 在正常模式下删除光标所在位置的字符，请按∶ x</p>
<p>5. 在正常模式下要在光标所在位置开始插入文本，请按∶</p>
<blockquote><p>i     输入必要文本	&lt;ESC&gt;</p></blockquote>
<p>====================================================<br />
1. 欲从当前光标删除至单字/单词末尾，请输入∶dw</p>
<p>2. 欲从当前光标删除至当前行末尾，请输入∶d$</p>
<p>3. 欲删除整行，请输入∶dd</p>
<p>4. 在正常模式下一个命令的格式是∶</p>
<blockquote><p>[number]   command   object     或者     command<span style="white-space: pre;"> </span>[number]   object<br />
其意是∶<br />
number &#8211; 代表的是命令执行的次数<br />
command &#8211; 代表要做的事情，比如 d 代表删除<br />
object &#8211; 代表要操作的对象，比如 w 代表单字/单词，$ 代表到行末等等。<br />
<span style="white-space: pre;"> </span>$ (to the end of line), etc.</p></blockquote>
<p>5. 欲撤消以前的操作，请输入∶u (小写的u)<br />
欲撤消在一行中所做的改动，请输入∶U (大写的U)<br />
欲撤消以前的撤消命令，恢复以前的操作结果，请输入∶CTRL-R<br />
====================================================<br />
1. 要重新置入已经删除的文本内容，请输入小写字母 p。该操作可以将已删除的文本内容置于光标之后。如果最后一次删除的是一个整行，那么该行将置于当前光标所在行的下一行。</p>
<p>2. 要替换光标所在位置的字符，请输入小写的 r 和要替换掉原位置字符的新字符即可。</p>
<p>3. 更改类命令允许您改变指定的对象，从当前光标所在位置直到对象的末尾。比如输入 cw 可以替换当前光标到单词的末尾的内容；输入 c$ 可以替换当前光标到行末的内容。</p>
<p>4. 更改类命令的格式是∶</p>
<blockquote><p><span style="white-space: pre;"> </span> [number]   c<span style="white-space: pre;"> </span>object<span style="white-space: pre;"> </span> 或者<span style="white-space: pre;"> </span>c   [number]   object</p></blockquote>
<p>====================================================</p>
<p>1. Ctrl-g 用于显示当前光标所在位置和文件状态信息。Shift-G 用于将光标跳转至文件最后一行。先敲入一个行号然后按 Shift-G 则是将光标移动至该行号代表的行。</p>
<p>2. 输入 / 然后紧随一个字符串是则是在当前所编辑的文档中向后查找该字符串。输入问号   然后紧随一个字符串是则是在当前所编辑的文档中向前查找该字符串。完成一次查找之后按 n 键则是重复上一次的命令，可在同一方向上查找下一个字符串所在；或者按 Shift-N 向相反方向查找下该字符串所在。</p>
<p>3. 如果光标当前位置是括号(、)、[、]、{、}，按 % 可以将光标移动到配对的括号上。</p>
<p>4. 在一行内替换头一个字符串 old 为新的字符串 new，请输入  :s/old/new<br />
在一行内替换所有的字符串 old 为新的字符串 new，请输入  :s/old/new/g<br />
在两行内替换所有的字符串 old 为新的字符串 new，请输入  :#,#s/old/new/g<br />
在文件内替换所有的字符串 old 为新的字符串 new，请输入  :%s/old/new/g<br />
进行全文替换时询问用户确认每个替换需添加 c 选项，请输入 :%s/old/new/gc<br />
====================================================</p>
<p>1. :!command 用于执行一个外部命令 command。</p>
<blockquote><p>请看一些实际例子∶<br />
<span style="white-space: pre;"> </span> :!dir  &#8211;  用于显示当前目录的内容。<br />
<span style="white-space: pre;"> </span> :!rm FILENAME  -<span style="white-space: pre;"> </span>用于删除名为 FILENAME 的文件。</p></blockquote>
<p>2. :w FILENAME  可将当前 VIM 中正在编辑的文件保存到名为 FILENAME 的文件中。<br />
<span style="color: #ff6600;">3. :#,#w FILENAME 可将当前编辑文件第 # 行至第 # 行的内容保存到文件FILENAME 中。</span></p>
<p>4. :r FILENAME 可提取磁盘文件 FILENAME 并将其插入到当前文件的光标位置后面。<br />
====================================================<br />
1. 输入小写的 o 可以在光标下方打开新的一行并将光标置于新开的行首，进入插入模式。<br />
输入大写的 O 可以在光标上方打开新的一行并将光标置于新开的行首，进入插入模式。</p>
<p>2. 输入小写的 a 可以在光标所在位置之后插入文本。<br />
输入大写的 A 可以在光标所在行的行末之后插入文本。</p>
<p>4. 输入大写的 R 将进入替换模式，直至按 &lt;ESC&gt; 键退出替换模式而进入正常模式。</p>
<p>4. 输入 :set xxx 可以设置 xxx 选项。<br />
====================================================<br />
Vim 拥有一个细致全面的在线帮助系统。要启动该帮助系统，请选择如下三种方法之一∶</p>
<blockquote><p>- 按下 &lt;HELP&gt; 键 (如果键盘上有的话)<br />
- 按下 &lt;F1&gt; 键 (如果键盘上有的话)<br />
- 输入:help &lt;回车&gt;<br />
输入 :q &lt;回车&gt; 可以关闭帮助窗口。</p></blockquote>
<p>提供一个正确的参数给&#8221;:help&#8221;命令，您可以找到关于该主题的帮助。请试验以下参数(可别忘了按回车键哦。:)∶</p>
<blockquote><p>:help w &lt;回车&gt;<br />
:help c_&lt;T &lt;回车&gt;<br />
:help insert-index &lt;回车&gt;<br />
:help user-manual &lt;回车&gt;</p></blockquote>
<p>====================================================<br />
Vim的功能特性要比vi多得多，但大部分功能都没有缺省激活。为了启动更多的功能，您得创建一个vimrc文件。</p>
<p>1. 开始编辑vimrc文件，这取决于您所使用的操作系统∶</p>
<blockquote><p>:edit ~/.vimrc     这是Unix系统所使用的命令<br />
:edit $VIM/_vimrc     这是Windows系统所使用的命令</p></blockquote>
<p>2. 接着导入vimrc范例文件∶</p>
<blockquote><p>:read $VIMRUNTIME/vimrc_example.vim</p></blockquote>
<p>3. 保存文件，命令为∶</p>
<blockquote><p>:write</p></blockquote>
<p>在下次您启动vim的时候，编辑器就会有了语法高亮的功能。您可以继续把您喜欢的其它功能设置添加到这个vimrc文件中。</p>
<p>====================================================</p>
<p>PS.在发这篇文章的时候我是复制粘贴了每讲的小结,但复制过后格式有些乱,还有多余的html 标签,于是用vim %s/old/new/g这个命令查找替换了这些标签,轻松完成~~哈!</p>
<p>大家一定要多多实践啊~~</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://imdonkey.com/blog/archives/450/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>倔倔跟风学Vim(1)</title>
		<link>http://imdonkey.com/blog/archives/433</link>
		<comments>http://imdonkey.com/blog/archives/433#comments</comments>
		<pubDate>Wed, 28 Apr 2010 08:47:14 +0000</pubDate>
		<dc:creator>Ting</dc:creator>
				<category><![CDATA[倔倔在前端]]></category>
		<category><![CDATA[Vim]]></category>
		<category><![CDATA[zen-coding]]></category>

		<guid isPermaLink="false">http://imdonkey.com/blog/?p=433</guid>
		<description><![CDATA[<p>最近总时不时的听大家提到Vim.可它到底是个什么东西我一丁儿丁儿概念都没有...后来觉得做技术的不懂介个有点儿丢人吧,今天就找时间要会会 Vim.会了几个小时之后,我决定继续会下去~哈哈</p> <p>熟悉Linux的同学应该对Vim很了解,也清楚它的神通广大~可我一做前端爱设计的人对这东西根本没接触.所以接下来的介绍依然是为那些同类的朋友们准备的.很简单,我也尽量将步骤说得详细些~</p> <p>先记住它是一个编辑器其它的先不用管,马上开始!</p><p class='read-more'><a href='http://imdonkey.com/blog/archives/433'>阅读全文 »</a></p>]]></description>
			<content:encoded><![CDATA[<p>最近总时不时的听大家提到Vim.可它到底是个什么东西我一丁儿丁儿概念都没有&#8230;后来觉得做技术的不懂介个有点儿丢人吧,今天就找时间要会会Vim.会了几个小时之后,我决定继续会下去~哈哈</p>
<p>熟悉Linux的同学应该对Vim很了解,也清楚它的神通广大~可我一做前端爱设计的人对这东西根本没接触.所以接下来的介绍依然是为那些同类的朋友们准备的.很简单,我也尽量将步骤说得详细些~</p>
<p>先记住它是一个编辑器其它的先不用管,马上开始!</p>
<h2>安装</h2>
<p>了解之前咱得先看看这东西长什么样儿. <a href="ftp://ftp.vim.org/pub/vim/pc/gvim72.exe" target="_blank">Download Vim for Win</a></p>
<p>不用修改什么,一直Next下去就成~除非你要改安装路径跟选择语言.</p>
<h2>中文手册安装</h2>
<p>这种编辑器的命令忒多,看英文的手册头疼,下个中文的吧.<a href="http://prdownloads.sourceforge.net/vimcdoc/vimcdoc-1.7.0-setup.exe?download" target="_blank">这里</a></p>
<p>下载之后运行,安装成功后重启Vim,启动界面是中文了,可是菜单上的中文却成了乱码.google之后发现一篇<a href="http://blog.sina.com.cn/s/blog_665923650100hv9s.html" target="_blank">文章</a>,修改后问题解决</p>
<h2>配色方案设置及保存</h2>
<p>但这次修改明白了Vim的用户设置基本都可以通过在_vimrc这个文件里修改添加</p>
<p>于是修改了配色方案,如果不在_vimrc文件里设置的话,下次打开Vim又会还原到最初始状态.</p>
<p>找到 Vim 官方百科 按照<a href="http://vim.wikia.com/wiki/Setting_the_font_in_the_GUI" target="_blank">这篇文章</a> 顺便将字体跟大小也一起改了</p>
<p>我目前选用的是Consolas:h14</p>
<p>效果如下:</p>
<p><a href="http://imdonkey.com/blog/wp-content/uploads/2010/04/vim_screenshot.gif"><img class="alignnone size-full wp-image-452" title="vim_screenshot" src="http://imdonkey.com/blog/wp-content/uploads/2010/04/vim_screenshot.gif" alt="" width="410" height="389" /></a></p>
<h2>在Vim下安装zen coding</h2>
<p><a href="http://www.vim.org/scripts/script.php?script_id=2981" target="_blank">这里</a>包含了所有安装zen-coding的信息.</p>
<p>如果想了解什么是zen-coding可以参看<a href="http://www.qianduan.net/zen-coding-a-new-way-to-write-html-code.html" target="_blank">这里</a></p>
<p>最后阅读中文手册,练习了一些最基本的操作命令(多了也记不住哈哈).目前感觉很不错~</p>
<p>以后会慢慢熟悉Vim,希望自己能快快进步~大家共勉~:)</p>
]]></content:encoded>
			<wfw:commentRss>http://imdonkey.com/blog/archives/433/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>倔倔死磕Javascript之开篇</title>
		<link>http://imdonkey.com/blog/archives/368</link>
		<comments>http://imdonkey.com/blog/archives/368#comments</comments>
		<pubDate>Tue, 27 Apr 2010 04:00:16 +0000</pubDate>
		<dc:creator>Ting</dc:creator>
				<category><![CDATA[倔倔在前端]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://imdonkey.com/blog/?p=368</guid>
		<description><![CDATA[倔倔这个名字不是白起的,完全源于本人性格中最大的特点:那就是倔!

最近各种刺激扑面而来,叫我怎能不好好学习?在坨坨同学的指导下 我开始了"又"一次的Javascript之旅~(之所以说"又"是因为07年自己买下了《<a href="http://product.dangdang.com/product.aspx?product_id=9211839&#38;amp;ref=search-0-A" target="_blank">Javascript高级程序设计</a>》,现在想来真不知道当时自己怎么了....好在是本好书~银子没白花)

先做几个很简单的实例,把自己学习的兴趣提起来.这点很重要.

声明:本人可以说是0基础,所以初学JS的朋友也可以一起学习.高手们可以飘过,多多指导哈 :)<p class='read-more'><a href='http://imdonkey.com/blog/archives/368'>阅读全文 »</a></p>]]></description>
			<content:encoded><![CDATA[<p>倔倔这个名字不是白起的,完全源于本人性格中最大的特点:那就是倔!</p>
<p>最近各种刺激扑面而来,叫我怎能不好好学习?在坨坨同学的指导下 我开始了&#8221;又&#8221;一次的Javascript之旅~(之所以说&#8221;又&#8221;是因为07年自己买下了《<a href="http://product.dangdang.com/product.aspx?product_id=9211839&amp;ref=search-0-A" target="_blank">Javascript高级程序设计</a>》,现在想来真不知道当时自己怎么了&#8230;.好在是本好书~银子没白花)</p>
<p>先做几个很简单的实例,把自己学习的兴趣提起来.这点很重要.</p>
<p>声明:本人可以说是0基础,所以初学JS的朋友也可以一起学习.高手们可以飘过,多多指导哈 <img src='http://imdonkey.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>实例一:图片浏览</h2>
<p><a href="http://imdonkey.com/blog/wp-content/uploads/2010/04/imgSlider_demo_mockup1.gif"><img class="alignnone size-full wp-image-380" title="imgSlider_demo_mockup" src="http://imdonkey.com/blog/wp-content/uploads/2010/04/imgSlider_demo_mockup1.gif" alt="" width="479" height="386" /></a></p>
<p>实现效果:点击&#8221;Previous&#8221;和&#8221;Next&#8221; button实现连续几张图片的切换. 很简单吧~</p>
<h3>第一步:HTML&amp;CSS</h3>
<p>这一步对各位来说应该并不难,不过既然元素少,又是做Demo用的,我们就对自己的要求放松些吧,我说的放松是对于浏览器兼容问题的放松.我们选择HTML5与CSS3.可以暂时不用过多管IE678.(但你可以下载IE9的preview版来看看,也无妨)</p>
<p>主要HTML代码如下:</p>
<pre class="brush: xml;">
	&lt;input type=&quot;button&quot; id=&quot;btn_previous&quot; value=&quot;Previous&quot;/&gt;
	&lt;input type=&quot;button&quot;  id=&quot;btn_next&quot; value=&quot;Next&quot;/&gt;
	&lt;ul id=&quot;container&quot;&gt;
		&lt;li id=&quot;pic_1&quot; class=&quot;current&quot;&gt;
			&lt;img src=&quot;../images/demo/pic_1.gif&quot; title=&quot;NO.1&quot; alt=&quot;NO.1&quot;/&gt;
			&lt;p title=&quot;NO.1&quot;&gt;NO.1&lt;/p&gt;
		&lt;/li&gt;
		&lt;li id=&quot;pic_2&quot;&gt;
			&lt;img src=&quot;../images/demo/pic_2.gif&quot; title=&quot;NO.2&quot; alt=&quot;NO.2&quot;/&gt;
			&lt;p title=&quot;NO.2&quot;&gt;NO.2&lt;/p&gt;
		&lt;/li&gt;
		&lt;li id=&quot;pic_3&quot;&gt;
			&lt;img src=&quot;../images/demo/pic_3.gif&quot; title=&quot;NO.3&quot; alt=&quot;NO.3&quot;/&gt;
			&lt;p title=&quot;NO.3&quot;&gt;NO.3&lt;/p&gt;
		&lt;/li&gt;
		&lt;li id=&quot;pic_4&quot;&gt;
			&lt;img src=&quot;../images/demo/pic_4.gif&quot; title=&quot;NO.4&quot; alt=&quot;NO.4&quot;/&gt;
			&lt;p title=&quot;NO.4&quot;&gt;NO.4&lt;/p&gt;
		&lt;/li&gt;
		&lt;li id=&quot;pic_5&quot;&gt;
			&lt;img src=&quot;../images/demo/pic_5.gif&quot; title=&quot;NO.5&quot; alt=&quot;NO.5&quot;/&gt;
			&lt;p title=&quot;NO.5&quot;&gt;NO.5&lt;/p&gt;
		&lt;/li&gt;
	&lt;/ul&gt;
</pre>
<h3>第二步:梳理思路</h3>
<p>想想需要解决哪几个问题:</p>
<ol>
<li>怎么知道是显示当前图片的上一张还是下一张?</li>
<li>如何替换当前图片?</li>
</ol>
<p>好,先解决掉这两个问题事情就好办多了.</p>
<ol>
<li>我们需要将&#8221;向前&#8221;和&#8221;向后&#8221;分别用两个数值来代替,做为参数传给接下来我们要完成的函数,这里用(-1)和(1)来表示.</li>
<li>知道了是向前还是向后之后 我们就要把当前图片隐藏起来,然后显示出它的上一张或者下一张图片.</li>
</ol>
<p>Ok,那我们就开始吧~</p>
<h3>第三步:编写代码</h3>
<p>首先我们给函数起个名字,就叫 imgSlider.(也许并不贴切,但以后会改进功能).把要传给这个函数的值取名为n.所以简单写下来函数应该长这个样子:</p>
<pre class="brush: jscript;">
function imgSlider(n) {

}
</pre>
<p>然后我们需要一个变量,这个变量用来存储当前显示的是第几张图片,我们先赋一个初始值给它,像这样.</p>
<pre class="brush: jscript;">
var currentImg = 1;
function imgSlider(n) {

}
</pre>
<p>为什么要把这个赋值语句写在函数外面呢?(全局变量)因为函数要对这个值做处理,也就是说将来一旦触发了这个函数,currentImg这个值会改变,所以我们将它写在外面.</p>
<p>接下来我们需要得到网页中的几个对象,取得对象的方法是采用document.getElementById(&#8220;idname&#8221;):</p>
<pre class="brush: jscript;">
var currentImg = 1;
function imgSlider(n) {
	var currentImgCon = document.getElementById(&quot;pic_&quot;+ currentImg);
	var btn_previous = document.getElementById(&quot;btn_previous&quot;);
	var btn_next = document.getElementById(&quot;btn_next&quot;);
}
</pre>
<p>哈哈,现在就到了最关键的步骤了,到目前为至我们还没有用到传进来的参数呢,想想假设现在传进来的是(1),即用户要显示下一张图片的话,我们要做何处理呢?很简单,就是在当前图片基础上+1 显示下一张呗~</p>
<pre class="brush: jscript;">
var currentImg = 1;
function imgSlider(n) {
	var currentImgCon = document.getElementById(&quot;pic_&quot;+ currentImg);
	var btn_previous = document.getElementById(&quot;btn_previous&quot;);
	var btn_next = document.getElementById(&quot;btn_next&quot;);
	currentImg = currentImg + n;
	targetImgCon.setAttribute(&quot;class&quot;,&quot;current&quot;);
	targetImgCon.className = &quot;current&quot;;
}
</pre>
<p>currentImg加了1后,我们根据currentImg的最新值通过document.getElementById()这个方法找到了我们要显示的那个图片,并且将得到的对象命名为targetImgCon,然后将current这个class加到这个对象上,那么第二张图片就显示出来了.可不要忘记在这之前要先将之前的图片隐藏起来,所以还要对代码要做以下修改</p>
<pre class="brush: jscript; highlight: [6,7];">
var currentImg = 1;
function imgSlider(n) {
	var currentImgCon = document.getElementById(&quot;pic_&quot;+ currentImg);
	var btn_previous = document.getElementById(&quot;btn_previous&quot;);
	var btn_next = document.getElementById(&quot;btn_next&quot;);
	currentImgCon.setAttribute(&quot;class&quot;,&quot;&quot;);
	currentImgCon.className = &quot;&quot;;
	currentImg = currentImg + n;
	var targetImgCon = document.getElementById(&quot;pic_&quot;+ currentImg);
	targetImgCon.setAttribute(&quot;class&quot;,&quot;current&quot;);
	targetImgCon.className = &quot;current&quot;;
}
</pre>
<p>到此为至主要功能实现了,但完整程度还差好多~.不信可以将事件加到两个button上,如下:</p>
<pre class="brush: xml;">
&lt;input type=&quot;button&quot; onclick=&quot;imgSlider(-1)&quot; id=&quot;btn_previous&quot; value=&quot;Previous&quot; disabled=&quot;disabled&quot;/&gt;
&lt;input type=&quot;button&quot; onclick=&quot;imgSlider(1)&quot; id=&quot;btn_next&quot; value=&quot;Next&quot;/&gt;
</pre>
<p>那么我们还要做什么呢?目前页面中只有5张图片,我们不希望用户一直点击向前向后,那样currentImg数值会越来越大,而执行过程中又取不到数值大于5的图片,会报错.所以现在我们要对临界值做一个判断处理.我们希望只有在1-5这个范围内再做我们以上的那些事情.</p>
<pre class="brush: jscript; highlight: [9,13];">
var currentImg = 1;
function imgSlider(n) {
	var currentImgCon = document.getElementById(&quot;pic_&quot;+ currentImg);
	var btn_previous = document.getElementById(&quot;btn_previous&quot;);
	var btn_next = document.getElementById(&quot;btn_next&quot;);
	currentImgCon.setAttribute(&quot;class&quot;,&quot;&quot;);
	currentImgCon.className = &quot;&quot;;
	currentImg = currentImg + n;
	if (currentImg &gt; 1 || currentImg &lt; 5 ) {
		var targetImgCon = document.getElementById(&quot;pic_&quot;+ currentImg);
		targetImgCon.setAttribute(&quot;class&quot;,&quot;current&quot;);
		targetImgCon.className = &quot;current&quot;;
	}
}
</pre>
<p>可运行一下,发现到第5张时候再点&#8221;Next&#8221;就什么都显示不出来了,再点&#8221;Previous&#8221;也没反应了,为什么呢?我们用input来跟踪下currentImg的数值变化:<br />
在HTML中添加一个input:</p>
<pre class="brush: xml;">
&lt;input type=&quot;text&quot; value=&quot;&quot; id=&quot;logger&quot;/&gt;
</pre>
<p>JavaScript做如下修改:</p>
<pre class="brush: jscript;">
document.getElementById(&quot;logger&quot;).value = currentImg;
</pre>
<p>刷新下页面,点到最后发现currentImg的值是6,超出了1-5这个范围,自然执行不了我们if条件里的语句了.怎么解决这个问题呢,其实很简单,当页面当前显示的是第一张图片时我们就将&#8221;Previous&#8221;button 屏蔽掉,同理,当页面当前显示的是第5张,也就是最后一张的时候屏蔽掉&#8221;Next&#8221;button,事情就解决了.其它情况下两个button正常显示~~哈哈</p>
<p>初始的时候就要先将&#8221;Previous&#8221; button 置为disabled</p>
<pre class="brush: xml;">
&lt;input type=&quot;button&quot; onclick=&quot;imgSlider(-1)&quot; id=&quot;btn_previous&quot; value=&quot;Previous&quot; disabled=&quot;disabled&quot;/&gt;
</pre>
<p>JavaScript添加如下代码:</p>
<pre class="brush: jscript;">
if(currentImg == 1) {
	btn_previous.setAttribute(&quot;disabled&quot;,&quot;disabled&quot;);
}else {
	btn_previous.removeAttribute(&quot;disabled&quot;);
}

if(currentImg == 5) {
	btn_next.setAttribute(&quot;disabled&quot;,&quot;disabled&quot;);
}else {
	btn_next.removeAttribute(&quot;disabled&quot;);
}
</pre>
<p>大功告成~~<a href="http://www.imdonkey.com/demo/img_slider.html" target="_blank">最终效果</a></p>
<h2><a href="http://www.imdonkey.com/demo/img_slider.html" target="_blank"></a><br />
知识点:</h2>
<ol>
<li>CSS3 渐变<a href="http://www.qianduan.net/understand-the-css3-gradient.html">http://www.qianduan.net/understand-the-css3-gradient.html</a></li>
<li>CSS Selector</li>
<li>CSS 缩写<a href="http://www.qianduan.net/css-font-shorthand-attribute-handbook.html">http://www.qianduan.net/css-font-shorthand-attribute-handbook.html</a></li>
<li>input disabled属性</li>
<li>function定义</li>
<li>全局变量定义/初始化</li>
<li>document.getElementById(&#8220;idName&#8221;)</li>
<li>setAttribute(&#8220;attributeName&#8221;,&#8221;attributeValue&#8221;)</li>
<li>removeAttribute(&#8220;attributeName&#8221;)</li>
<li>if else</li>
</ol>
<h2>下期预告:放大镜~~~</h2>
]]></content:encoded>
			<wfw:commentRss>http://imdonkey.com/blog/archives/368/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>所有关于浮动(Float)的事情[倔倔译]</title>
		<link>http://imdonkey.com/blog/archives/296</link>
		<comments>http://imdonkey.com/blog/archives/296#comments</comments>
		<pubDate>Tue, 13 Apr 2010 08:38:34 +0000</pubDate>
		<dc:creator>Ting</dc:creator>
				<category><![CDATA[倔倔在前端]]></category>
		<category><![CDATA[clear]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[float]]></category>
		<category><![CDATA[overflow hidden]]></category>
		<category><![CDATA[清除浮动]]></category>

		<guid isPermaLink="false">http://imdonkey.com/blog/?p=296</guid>
		<description><![CDATA[英文原文:<a href="http://css-tricks.com/all-about-floats/">http://css-tricks.com/all-about-floats/</a>
<h2>什么是Float?</h2>
Float是一个CSS定位属性.想要搞懂它的目标跟初衷,我们可以来看看平面印刷设计.在一个平面布局中,图片是可以根据需要被文字环绕的放在页面中.这通常被称为"文字环绕".如下图所示:
<img title="all_about_float_print_layout" src="http://imdonkey.com/blog/wp-content/uploads/2010/04/all_about_float_print_layout.gif" alt="" width="548" height="282" /><p class='read-more'><a href='http://imdonkey.com/blog/archives/296'>阅读全文 »</a></p>]]></description>
			<content:encoded><![CDATA[<p>英文原文:<a href="http://css-tricks.com/all-about-floats/">http://css-tricks.com/all-about-floats/</a></p>
<h2>什么是Float?</h2>
<p>Float是一个CSS定位属性.想要搞懂它的目标跟初衷,我们可以来看看平面印刷设计.在一个平面布局中,图片是可以根据需要被文字环绕的放在页面中.这通常被称为&#8221;文字环绕&#8221;.如下图所示:<br />
<img class="alignnone size-full wp-image-297" title="all_about_float_print_layout" src="http://imdonkey.com/blog/wp-content/uploads/2010/04/all_about_float_print_layout.gif" alt="" width="548" height="282" /></p>
<p>在页面布局中,包含文本的盒子可以让文字换行或者忽略换行.忽略换行就会让文字流向右边就像图片不存在一样.这就是图片是与不是页面中的&#8221;流&#8221;的区别.网页设计也是相类似的.</p>
<p><img class="alignnone size-full wp-image-298" title="all_about_float_web_layout" src="http://imdonkey.com/blog/wp-content/uploads/2010/04/all_about_float_web_layout.gif" alt="" width="548" height="282" /></p>
<p>在网页设计中,被赋予了CSS Float 属性的页面元素就会像印刷布局中被文字环绕的图片一样.浮动的元素仍是网页流中的一部分.这与使用绝对定位的网页元素有着很大的区别.被绝对定位了的元素是被网页流<strong>移除</strong>掉的元素,就像印刷布局中被告知忽略页面换行一样.被绝对定位了的元素不会影响其它元素的定位并且其它元素也不会影响它们,不管它们之间是否接触到了.</p>
<p>用CSS设置一个元素为浮动的情况是这样:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#sidebar</span> <span style="color: #00AA00;">&#123;</span>
   <span style="color: #000000; font-weight: bold;">float</span><span style="color: #00AA00;">:</span> <span style="color: #000000; font-weight: bold;">right</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>这里有四种浮动值.<strong>Left</strong>和<strong>Right</strong>将元素分别向这两个方向浮动.<strong>None</strong>(默认值)确使元素不会浮动,<strong>Inherit</strong>会使元素继承父级元素的浮动值.</p>
<h2>浮动元素用来做什么?</h2>
<p>除了让文字围绕在图片周围的例子,浮动元素还可以用来产生<strong>整体网页布局</strong>.</p>
<p><img class="alignnone size-full wp-image-300" title="all_about_float_entire_web_layout" src="http://imdonkey.com/blog/wp-content/uploads/2010/04/all_about_float_entire_web_layout.gif" alt="" width="548" height="255" /></p>
<p>在一些小规模的布局中浮动也是非常有帮助的.看一下网页中的这个小区域.如果你在我们的小头像图片上应用浮动,当图片改变大小时盒子中的文字也会相应的调整流向.</p>
<p><img class="alignnone" title="reflow-example" src="http://css-tricks.com/wp-content/csstricks-uploads/reflow-example-1.png" alt="" width="540" height="177" /></p>
<p>也可以使用容器相对定位而头像绝对定位来完成相同的布局.这种做法,文字将不会受头像影响并且也不会根据大小改变而重新调整流向.</p>
<p><img class="alignnone" title="reflow-example-2" src="http://css-tricks.com/wp-content/csstricks-uploads/reflow-example-2.png" alt="" width="540" height="177" /></p>
<h2>清除浮动</h2>
<p>浮动的姊妹属性是clear.一个被赋予了clear属性的元素将不会向上移动到浮动元素的旁边,但它会将自身向下移动以越过浮动元素.拿出一个实例比文字说明更直观.</p>
<p><img class="alignnone" title="unclearedfooter" src="http://css-tricks.com/wp-content/csstricks-uploads/unclearedfooter.png" alt="" width="540" height="195" /></p>
<p>在上面这个例子中,侧边栏被浮动到了右边而且比Main Content的高度要矮.于是Footer就被要求跳上来补足由浮动元素产生的空间.要解决这个问题,footer可以被设为clear来确保它在所有浮动的列之下.</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#footer</span> <span style="color: #00AA00;">&#123;</span>
   <span style="color: #000000; font-weight: bold;">clear</span><span style="color: #00AA00;">:</span><span style="color: #993333;">both</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p><img class="alignnone" title="clearedfooter" src="http://css-tricks.com/wp-content/csstricks-uploads/clearedfooter.png" alt="" width="540" height="230" /></p>
<p>Clear也有四个可用值.<strong>Both</strong>是最常用的,用来清除来自各个方向的浮动元素.<strong>Left</strong>和<strong>Right</strong>分别来用清除各自方向上的浮动.<strong>None</strong>是默认值,通常来讲是无用的除非是要将样式中的clear值去掉的情况下才用.<strong>Inherit</strong>是第五个属性值,但它在IE中几乎不被支持.只清除左边或只清除右边浮动看似没有被广泛使用,但它的确有用武之地.</p>
<p><img class="alignnone" title="directionalclearing" src="http://css-tricks.com/wp-content/csstricks-uploads/directionalclearing.png" alt="" width="540" height="226" /></p>
<h2>伟大的断裂</h2>
<p>在运用浮动元素的过程中一件很令人费解的事情就是如何让它们去影响包含它们的容器(它们的&#8221;父级&#8221;容器).如果一个元素除了包含浮动元素不包含其它元素的话,它的高度将是0.如果父级容器没有明显可见的背景色时,这一点通常是不明显的,但它又是必须要注意的很重要的一点.</p>
<p><img class="alignnone" title="collapse" src="http://css-tricks.com/wp-content/csstricks-uploads/collapse.png" alt="" width="540" height="182" /></p>
<p>与这种直觉上的反差相比更糟糕的是考虑以下情况:</p>
<p><img class="alignnone" title="whywecollapse" src="http://css-tricks.com/wp-content/csstricks-uploads/whywecollapse.png" alt="" width="540" height="240" /></p>
<p>如果上面这个块级元素自动扩展以适应浮动元素的话,那么我们就会在段落之间的文本流中得到一个不自然的空隙,也没有特别有效的解决方法.在这种情况下设计师们会非常抱怨,这比我们对断裂做出处理更加让人痛苦.</p>
<p>断裂通常需要做些处理用以阻止产生奇怪的布局和一些跨浏览器兼容问题.我们在浮动元素<strong>之后</strong>父级容器<strong>之前</strong>来清除浮动.</p>
<h2>几种清除浮动的方法</h2>
<p>如果你所处的情况是你总是知道随后而来的元素是什么,那么你可以给元素的clear属性设置为both,然后继续做你的事情.这是理想情况,不需要任何虚假的hack技术跟多余的元素而是完全符合语义的.当然事情总不会按照这种方式进行并且在我们的工具箱中需要更多清除浮动的工具.</p>
<ul>
<li><strong>空div方法:</strong>顾名思义,一个空的div.&lt;div style=&#8221;clear: both;&#8221;&gt;&lt;/div&gt;.有时你会看到一个&lt;br/&gt;元素或者其它不常见的元素,但是div是最常用的一个,因为浏览器没有赋予它默认样式,也没有特别功能,一般不太可能被冠以通用CSS样式.这种方法不受语义纯粹主义者的重视是因为它对于页面没有任何实际内容跟语义仅仅是为了显示.当然从严格的角度来讲它们是正确的,可是它起到了自己应该起到的作用也没有伤害到其它任何人.</li>
<li><strong>overflow方法:</strong>需要给父级容器设置overflow属性.如果父级容器被设为auto或者hidden,那么容器就会自动扩展去包容里面的浮动元素,实际上是为了它之后的元素清除浮动的.然后如果你发现自己新加了一个div仅仅是为了应用这一点属性,那么这就跟加一个空div是一样缺少语义的了,同样是很难被接受的.需要记住的是overflow属性并不仅仅是为了清除浮动.小心不要隐藏了内容或者触发了不想要的滚动条.</li>
<li><strong>简单清除方法:</strong>使用CSS伪类选择器(:after)去清除浮动.你需要添加一个类似&#8221;clearfix&#8221;的class来解决这个问题,而不是在父级容器上设置overflow属性.然后应用这样的CSS:</li>
</ul>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.clearfix</span><span style="color: #3333ff;">:after </span><span style="color: #00AA00;">&#123;</span>
   <span style="color: #000000; font-weight: bold;">content</span><span style="color: #00AA00;">:</span><span style="color: #ff0000;">&quot;.&quot;</span><span style="color: #00AA00;">;</span>
   <span style="color: #000000; font-weight: bold;">visibility</span><span style="color: #00AA00;">:</span><span style="color: #993333;">hidden</span><span style="color: #00AA00;">;</span>
   <span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span><span style="color: #993333;">block</span><span style="color: #00AA00;">;</span>
   <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
   <span style="color: #000000; font-weight: bold;">clear</span><span style="color: #00AA00;">:</span><span style="color: #993333;">both</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>不同的情况需要用不同的清除浮动的方法.看下面这个网格结构块,每一个都不同类型.</p>
<p><img class="alignnone" title="grid-blocks" src="http://css-tricks.com/wp-content/csstricks-uploads/grid-blocks.png" alt="" width="540" height="182" /></p>
<p>为了视觉中更好的展示相似块,我们想要按照我们的意愿插入新的一行,这里是指按颜色差异.如果第一组都有一个父级容器的话我们可以就用overflow或者是简易清除方法.又或者我们在每一组之间使用空div方法.三个之前本来不存在的换行div还是三个后加的div.我将交给你来决定哪一种更好.</p>
<p><img class="alignnone" title="grid-blocks-cleared" src="http://css-tricks.com/wp-content/csstricks-uploads/grid-blocks-cleared.png" alt="" width="540" height="329" /></p>
<h2>浮动产生的问题</h2>
<p>浮动通常是因为很<em>脆弱</em>而被击败.它主要的脆弱表现是来自于IE6和大量存在的与浮动相关的bug.因为越来越多的设计师们放弃支持IE6了,你可能也不关心了,但是对于那些还很关心的朋友们这里还是有一些快速解决的方法.</p>
<ul>
<li><strong>下推:</strong>是指一个浮动元素里面的元素比本身浮动的元素宽(特别是图片).大部分浏览器会将图片渲染在浮动元素外面,但是没有影响其它部分的布局.IE则会扩大浮动元素去包含图片,而破坏了布局.一个常见的例子就是main content里的图片过宽而将侧边栏推到下面了.<br />
<img class="alignnone" title="pushdown2" src="http://css-tricks.com/wp-content/csstricks-uploads/pushdown2.png" alt="" width="540" height="198" /><br />
<em>快速解决:</em>确定你没有任何这样的图片,使用overflow:hidden来切掉多余部分.</li>
<li><strong>双边距Bug</strong>-在解决IE6问题上另外一个需要注意的就是如果你给一个浮动元素在浮动方面加了一个外边距的话,就会产生<a href="http://www.cssnewbie.com/double-margin-float-bug/">双边距</a>.<br />
<em>快速解决:</em>给浮动元素设置为display:inline,并且不用担心,它仍然还是一个块级元素.</li>
<li><strong>3像素</strong>是指当文字紧挨着一个被浮动的元素时就会被一种强大的外边像外踢3像素.快速解决:给文字设一个宽度或者一个高度.</li>
<li>当在IE7中,<strong>底部外边距Bug</strong>是如果一个浮动的父级容器里还有一个浮动的子元素,这些子元素的底部外边距就被父级窗容器忽略掉了.<br />
<em>快速解决:</em>快速解决:用父级容器的底部内边距代替.</li>
</ul>
<h2>其它</h2>
<p>如果你需要文字环绕那些图片的话,没有比浮动更适合的了.谈到这,可以参看<a href="http://www.ideashower.com/ideas/active/css-text-wrapper/">更聪明的方法</a>一文,描述如何让文字围绕不规则图形.但对于网页布局,这里确实有几种选择.Eric Sol 在A List Apart上有一篇关于&#8221;<a href="http://alistapart.com/articles/fauxabsolutepositioning">山寨版绝对定位</a>&#8220;的文章,非常有意思地通过多种途径来对比浮动布局的灵活性跟绝对定位的优势.CSS3有布局模板,当它被广泛接受时,就会被证实为网页布局的又一选择.</p>
<p>===============分隔线===============</p>
<h2>倔倔总结:</h2>
<p>还有一篇小文章也是关于浮动问题的<a href="http://css-tricks.com/containers-dont-clear-floats/">http://css-tricks.com/containers-dont-clear-floats/</a></p>
<p>近日还将翻译一篇A List Apart上关于block和inline的文章.敬请期待~~同时欢迎大家对于翻译不妥之处进行指正及需要补充的地方进行完善~</p>
]]></content:encoded>
			<wfw:commentRss>http://imdonkey.com/blog/archives/296/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>imDonkey裸奔啦~~Pia Pia的~~</title>
		<link>http://imdonkey.com/blog/archives/292</link>
		<comments>http://imdonkey.com/blog/archives/292#comments</comments>
		<pubDate>Fri, 09 Apr 2010 03:37:00 +0000</pubDate>
		<dc:creator>Ting</dc:creator>
				<category><![CDATA[倔倔在前端]]></category>
		<category><![CDATA[CSS naked]]></category>
		<category><![CDATA[裸奔]]></category>

		<guid isPermaLink="false">http://imdonkey.com/blog/?p=292</guid>
		<description><![CDATA[<h3>今天我“裸奔”啦！</h3>
知道为什么网页没有想象中很炫的效果吗？因为今天是一年一度的“CSS裸奔节”。

想参与或了解更多，请点击<a title="Web Standards Naked Day" href="http://naked.webrebuild.org/">http://naked.webrebuild.org/</a><p class='read-more'><a href='http://imdonkey.com/blog/archives/292'>阅读全文 »</a></p>]]></description>
			<content:encoded><![CDATA[<h3>今天我“裸奔”啦！</h3>
<p>知道为什么网页没有想象中很炫的效果吗？因为今天是一年一度的<strong>“CSS裸奔节”</strong>。</p>
<p>想参与或了解更多，请点击<a title="Web Standards Naked Day" href="http://naked.webrebuild.org/">http://naked.webrebuild.org/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://imdonkey.com/blog/archives/292/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>美团门?美团们?Groupon!</title>
		<link>http://imdonkey.com/blog/archives/216</link>
		<comments>http://imdonkey.com/blog/archives/216#comments</comments>
		<pubDate>Thu, 25 Mar 2010 06:29:06 +0000</pubDate>
		<dc:creator>Ting</dc:creator>
				<category><![CDATA[倔倔在前端]]></category>
		<category><![CDATA[groupon]]></category>
		<category><![CDATA[前端]]></category>
		<category><![CDATA[模仿]]></category>
		<category><![CDATA[用户体验]]></category>
		<category><![CDATA[电子商务]]></category>
		<category><![CDATA[美团]]></category>

		<guid isPermaLink="false">http://imdonkey.com/blog/?p=216</guid>
		<description><![CDATA[<h1>美团门</h1>
最近特别关注一个网站叫"<a href="http://meituan.com">美团</a>",专注在线团购
<blockquote>是各类web2.0网站的先锋用户？
有自己的blog，写意生活，分享技术？
不能容忍哪怕是一个像素的偏差？
对代码的整洁性有强迫症式的偏执？
对排版、字体、色彩等有超乎寻常的敏感？
准确的知道自己负责的网站加载一个页面有多少次HTTP请求，完成一次请求要花多少时间？
"Every millisecond counts"对你来说意味点什么？
Doug Bowman, Douglas Crockford, Steve Souders等对你来说是如神一般的名字？
以做最NB的前端工程师为长期的职业目标？
曾做过一个一年以上的长期规划并付诸实践？</blockquote>
以上是<a href="http://meituan.com">美团网</a>对于前端开发工程师这一职位提出的10个问题,在投递简历之前需要在邮件中需要先就以上问题给出简单回答.

先不说美团网是模仿也好,抄袭也罢.单从他的招聘信息来看还是给我留下了不错的印象的.看多了那些"基本款"的招聘要求,麻木了.一下子看到这10个问题让我深刻意识到了自己的差距,借以重新思考下自己接下来的努力方向.

其实这些问题只是换了个角度来考查一个前端工程师的基本技能的全面考查:<p class='read-more'><a href='http://imdonkey.com/blog/archives/216'>阅读全文 »</a></p>]]></description>
			<content:encoded><![CDATA[<h1>美团门?</h1>
<p>最近特别关注一个网站叫&#8221;<a href="http://meituan.com">美团</a>&#8220;,专注在线团购</p>
<blockquote><p>是各类web2.0网站的先锋用户？<br />
有自己的blog，写意生活，分享技术？<br />
不能容忍哪怕是一个像素的偏差？<br />
对代码的整洁性有强迫症式的偏执？<br />
对排版、字体、色彩等有超乎寻常的敏感？<br />
准确的知道自己负责的网站加载一个页面有多少次HTTP请求，完成一次请求要花多少时间？<br />
&#8220;Every millisecond counts&#8221;对你来说意味点什么？<br />
Doug Bowman, Douglas Crockford, Steve Souders等对你来说是如神一般的名字？<br />
以做最NB的前端工程师为长期的职业目标？<br />
曾做过一个一年以上的长期规划并付诸实践？</p></blockquote>
<p>以上是<a href="http://meituan.com">美团网</a>对于前端开发工程师这一职位提出的10个问题,在投递简历之前需要在邮件中需要先就以上问题给出简单回答.</p>
<p>先不说美团网是模仿也好,抄袭也罢.单从他的招聘信息来看还是给我留下了不错的印象的.看多了那些&#8221;基本款&#8221;的招聘要求,麻木了.一下子看到这10个问题让我深刻意识到了自己的差距,借以重新思考下自己接下来的努力方向.</p>
<p>其实这些问题只是换了个角度来对一个前端工程师的基本技能做<strong>全面考查</strong>:</p>
<ul>
<li>是各类web2.0网站的先锋用户？<span style="color: #ff9900;">互联网是一个快速发展的产业,如果你跟不上他的脚步,不对自己的行业有足够的了解何以在这个行业立足?</span></li>
<li>有自己的blog，写意生活，分享技术？<span style="color: #ff9900;">开发并不是一个闭门造车的职业,需要积累,需要分享,需要成为你生活中的一部分.</span></li>
<li>不能容忍哪怕是一个像素的偏差？<span style="color: #ff9900;">态度!像素是我们工作中接触到的最小单位,从小见大.一位优秀的前端工程师的素质就表现在此</span></li>
<li>对代码的整洁性有强迫症式的偏执？<span style="color: #ff9900;">这一点更不用多说了,开发者的基本要求.写出的代码一定要漂亮</span></li>
<li>对排版、字体、色彩等有超乎寻常的敏感？<span style="color: #ff9900;">对于美食不敏感的厨师不是好裁缝!</span></li>
<li>准确的知道自己负责的网站加载一个页面有多少次HTTP请求，完成一次请求要花多少时间？<span style="color: #ff9900;">对你的用户负责,对你的代码负责.</span></li>
<li>&#8220;Every millisecond counts&#8221;对你来说意味点什么？<span style="color: #ff9900;">明白用户最关心什么.</span><span style="color: #ff9900;">做到这一点,在同行业中的优势就多出了一大截.赢得了更用的用户!</span></li>
<li>Doug Bowman, Douglas Crockford, Steve Souders等对你来说是如神一般的名字？<span style="color: #ff9900;">Follow the steps of the winners, you will get what they have and even more.</span></li>
<li>以做最NB的前端工程师为长期的职业目标？<span style="color: #ff9900;">对于自己的职业有清晰坚定的目标,想要长期从事前端开发才有可能做出更好的成绩</span></li>
<li>曾做过一个一年以上的长期规划并付诸实践？<span style="color: #ff9900;">情商的考验,现代人的普遍特别:浮躁,缺乏毅力!无法实现自己既定的目标又如何完成好自己的工作?只能靠奴性了&#8230;&#8230;</span></li>
</ul>
<p>这并不是我对于10个问题的回答,而是表面上的分析.提高自己的过程中当然不只是要针对这10个问题,技术的发展,互联网时代的变迁,对于前端工程师会有更多的要求.</p>
<p>其它要求体现在工作职责上:</p>
<ol>
<li>积极寻求改进美团网的各种可能的思路和方案；</li>
<li>对美团网在用户浏览器端的最终视觉呈现负责；</li>
<li>使用HTML/CSS/Javascript开发符合W3C标准的网站前端页面；</li>
<li>和后台工程师一起研讨技术实现方案，制定服务接口等；</li>
<li>积极探索并总结美团网前端开发模式和规范</li>
</ol>
<h1><strong>美团们?</strong></h1>
<p>2010年3月4号 饭否创始人王兴宣布美团网正式上线,上线以来就受到了不小的业内行外的关注,大家对于国内这种&#8221;Copy&#8221;模式已经见怪不怪了.</p>
<p>美团们上场(网友们收集的):</p>
<ul>
<li><a href="http://www.meituan.com/">http://www.meituan.com/</a> 每天团购一次，精品消费指南</li>
<li><a href="http://www.lashou.com/">http://www.lashou.com/</a> 拉手团购打折，全球首家结合Groupon和Foursquare的团购打折网站</li>
<li><a href="http://www.mydingo.com.cn/">http://www.mydingo.com.cn/</a> 丁狗网，每天团购一次</li>
<li><a href="http://24qiang.com/">http://24qiang.com/</a> 每天24小时只卖一件超低价商品</li>
<li><a href="http://www.ftuan.com/">http://www.ftuan.com/</a> 爱赴团，中国第一精品消费限时团购网站</li>
<li><a href="http://www.55tuan.com/">http://www.55tuan.com</a> 窝窝团，北京最热团购</li>
<li><a href="http://www.manzuo.com/">http://www.manzuo.com/</a> 满座网，聪明消费每一天</li>
<li><a href="http://www.taobao.com/go/act/other/juhuasuan1.php">http://www.taobao.com/go/act/other/juhuasuan1.php</a> 淘江湖，聚划算</li>
<li><a href="http://www.masamaso.com/group_buy.php">http://www.masamaso.com/group_buy.php</a> masamaso精品购物团</li>
<li><a href="http://www.zuitu.com/">http://www.zuitu.com/</a> 最土网，精品团购每一天</li>
</ul>
<p>有些真的把我雷倒了&#8230;.送给团们的一篇文章<a href="http://blog.ebizer.org/meituan-groupon-copy-and-risks/">美团网们，Groupon有风险，Copy须谨慎</a></p>
<p><span style="color: #ff0000;">最新消息:</span><a href="http://groupon.cn"><span style="color: #ff0000;">Groupon.cn</span></a><span style="color: #ff0000;">登陆中国了,这个算是正牌吧</span></p>
<h1>Groupon!</h1>
<p>放下美团,来看<a href="http://www.groupon.com">groupon</a>,真的是让人有些兴奋:兴奋的原因是Groupon真的是<strong>好玩又简单</strong>.它带给用户跟商家的好处十分明显直接.相当佩服<strong><a href="http://www.twitter.com/andrewmason">Andrew Mason</a></strong><em><span style="font-style: normal;">啊</span>.</em></p>
<p>这里分享两篇相关分析文章,很全面的分析的groupon的商务模式:</p>
<p><a href="http://blog.ebizer.org/think-small-groupon/">向左走，向右走？本地化+精品模式 vs 全国市场+长尾模式</a></p>
<p>相信这篇文章能引起国人对于此现象的一些思考</p>
<h2>想知道什么?我们都告诉你</h2>
<p>(以下分析从groupon的发家之地:<a href="http://www.groupon.com/chicago/">chicago</a>为例)</p>
<p>groupon在与用户互动上也做了不少文章,这些是目前国内团们还没有做起来的地方:</p>
<h3>1.商品旁边放置用户讨论内容提要(国团们只有**团答疑)</h3>
<p><a href="http://imdonkey.com/blog/wp-content/uploads/2010/03/interaction_disscussion.png"><img class="alignnone size-medium wp-image-221" title="interaction_disscussion" src="http://imdonkey.com/blog/wp-content/uploads/2010/03/interaction_disscussion-300x174.png" alt="" width="300" height="174" /></a></p>
<p>参加团购的消费者们最相信的就是跟他们同一立场的朋友对于商品的评价与讨论,当你看到当日推出的团购商品时会第一时间想要了解其它朋友的看法与讨论.</p>
<h3>2.商品下方列出消费者使用后的评论,客观,真实.</h3>
<p><a href="http://imdonkey.com/blog/wp-content/uploads/2010/03/reviews1.gif"><img class="alignnone size-full wp-image-223" title="reviews" src="http://imdonkey.com/blog/wp-content/uploads/2010/03/reviews1.gif" alt="" width="482" height="764" /></a></p>
<h3>3.在groupon消费过的忠实用户反馈的信息你一定更加感兴趣吧</h3>
<p><a href="http://imdonkey.com/blog/wp-content/uploads/2010/03/customers_say.png"><img class="alignnone size-full wp-image-225" title="customers_say" src="http://imdonkey.com/blog/wp-content/uploads/2010/03/customers_say.png" alt="" width="263" height="399" /></a></p>
<p><a href="http://imdonkey.com/blog/wp-content/uploads/2010/03/twitter_facebook.png"><img class="alignnone size-full wp-image-226" title="twitter_facebook" src="http://imdonkey.com/blog/wp-content/uploads/2010/03/twitter_facebook.png" alt="" width="259" height="735" /></a></p>
<h2>经常回来看看啊</h2>
<p>以上这些小地方还不足以提升信任度,更多的回访率还需要更加长久的关注用户反馈与互动:</p>
<h3>1.明天卖什么?</h3>
<p><a href="http://imdonkey.com/blog/wp-content/uploads/2010/03/email_me.gif"><img class="alignnone size-full wp-image-250" title="email_me" src="http://imdonkey.com/blog/wp-content/uploads/2010/03/email_me.gif" alt="" width="489" height="41" /></a></p>
<h3>2.开设专门的社区</h3>
<p><a href="http://imdonkey.com/blog/wp-content/uploads/2010/03/disscussion1.gif"><img class="alignnone size-full wp-image-230" title="disscussion" src="http://imdonkey.com/blog/wp-content/uploads/2010/03/disscussion1.gif" alt="" width="470" height="253" /></a></p>
<h4>3.举办photo contest</h4>
<p><a href="http://imdonkey.com/blog/wp-content/uploads/2010/03/contest_winner.png"><img class="alignnone size-medium wp-image-231" title="contest_winner" src="http://imdonkey.com/blog/wp-content/uploads/2010/03/contest_winner-282x300.png" alt="" width="282" height="300" /></a></p>
<h4>4.具有诱惑力的奖金</h4>
<blockquote><p>We will choose one person to attempt to survive for one year with nothing but a laptop, cellphone, and an unlimited supply of Groupons. If successful, that person will receive $100,000!</p></blockquote>
<p>够有挑战性的~~刺激!</p>
<p><a href="http://imdonkey.com/blog/wp-content/uploads/2010/03/winner.png"><img class="alignnone size-medium wp-image-232" title="winner" src="http://imdonkey.com/blog/wp-content/uploads/2010/03/winner-300x254.png" alt="" width="300" height="254" /></a></p>
<h2>来Groupon,往这儿看</h2>
<p>groupon在视觉引导上做得比较出色,射线背景一下子将用户的眼球吸引过来,硕大的标题,醒目的价格,明显的折扣数字等等都能引起消费者的购买欲望.</p>
<p>加之提供了来自各个方面的用户信息,评价,反馈.让购买变得又简单又好玩.色彩上的搭配,布局上的安排也合理,简单.每个页面都有一个明确清晰的主题.因为本身模式就简单明了,所以用户的门槛特别低.有着丰富的网上消费经验的用户一定觉得此流程并不繁琐.带来的是快速愉悦的购物体验.</p>
<p><a href="http://imdonkey.com/blog/wp-content/uploads/2010/03/index.gif"><img class="alignnone size-medium wp-image-235" title="index" src="http://imdonkey.com/blog/wp-content/uploads/2010/03/index-300x277.gif" alt="" width="300" height="277" /></a></p>
<p>简单合理布局的表单设计也让用户感觉舒服,采用的眼动分析中跳转次数较少的上label下field的方式.</p>
<p><a href="http://imdonkey.com/blog/wp-content/uploads/2010/03/payment.gif"><img class="alignnone size-medium wp-image-236" title="payment" src="http://imdonkey.com/blog/wp-content/uploads/2010/03/payment-252x300.gif" alt="" width="252" height="300" /></a></p>
<p>以上这些国内的这些团们还没有快速copy过来,相信其中的一部分团会陆续学起来的.</p>
<p>另外对于groupon在手机上的应用恐怕国人一时很难学得起来,毕竟是要受到其它条件影响的 那就是<a href="http://itunes.apple.com/us/app/groupon/id352683833?mt=8">iphone App</a></p>
<p><a href="http://imdonkey.com/blog/wp-content/uploads/2010/03/app_icon.gif"><img class="alignnone size-full wp-image-240" title="app_icon" src="http://imdonkey.com/blog/wp-content/uploads/2010/03/app_icon.gif" alt="" width="183" height="183" /></a></p>
<p><img class="alignnone" title="groupon app screenshot 1" src="http://a1.phobos.apple.com/us/r1000/033/Purple/6f/e3/a5/mzl.yttyepvw.320x480-75.jpg" alt="" width="320" height="460" /></p>
<p><img class="alignnone" title="groupon app screenshot 2" src="http://a1.phobos.apple.com/us/r1000/044/Purple/e6/28/67/mzl.heqkafnk.320x480-75.jpg" alt="" width="320" height="460" /></p>
<p>做足了这些,商家也会不请自来的借此方式宣传自己的商品,折扣的部分全当广告费用了,不但开销少,产生的效应却很大.从此groupon进入一个相对稳定的循环中.但我相信它的创始人不会仅限于此,还会在此基础上发倔更大更好的市场及模式.这也是在发展快速的互联网中的生存之道之一.毕竟目前看来这种模式还是比较容易被模仿的.</p>
<h1>最后</h1>
<p>一个看似简单的网站,要想成功也是需要诸多方面的因素.首先是绝佳的创意模式,优秀的技术支持,出色的市场运作,高效的团队执行,不断的思考改进等等等等.</p>
<p>而国内就缺少这类团队.希望更多的这样的创业队伍出现.让国内的互联网真正健康快速的发展.开发流程的规范,分工的明确,技术的跟进都是大家非常期待的.也需要大家一起努力去营造这样一个理解环境.</p>
<p>PS.面对国内这么多团们,我还是会每天上美团看一眼,没办法,这种每天只推出一种商品的模式对用户的好奇心有很大的影响力:)</p>
]]></content:encoded>
			<wfw:commentRss>http://imdonkey.com/blog/archives/216/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Docutype/button标签/Axure RP/Gzip</title>
		<link>http://imdonkey.com/blog/archives/126</link>
		<comments>http://imdonkey.com/blog/archives/126#comments</comments>
		<pubDate>Wed, 20 Jan 2010 10:15:25 +0000</pubDate>
		<dc:creator>Ting</dc:creator>
				<category><![CDATA[倔倔在前端]]></category>
		<category><![CDATA[Axure RP]]></category>
		<category><![CDATA[button]]></category>
		<category><![CDATA[docutype]]></category>
		<category><![CDATA[Gzip]]></category>

		<guid isPermaLink="false">http://imdonkey.com/blog/?p=126</guid>
		<description><![CDATA[Docutype
淘宝首页使用的文档类型声明是HTML5的写法,而且这种写法在IE6,IE7上的兼容性了不错.只是偶尔会出现些小问题.根据这张对照表可以了解到各个浏览器对于各个文档声明的<a href="http://hsivonen.iki.fi/doctype/#handling">详细渲染情况</a>.
&#60;button&#62;标签与&#60;input type=&#8221;button&#8221;/&#62;的区别
在研究淘宝注册页面的时候发现它的注册表单提交按钮是用的&#60;button&#62;&#60;/button&#62;这个标签,平时工作中我从来没用过这个标签,甚至一时怀疑这是不是W3C标准推荐使用的合理标签.Google一下大致了一些了解:
简单总结区别有以下几点
<ol>
<li>如果用在表单里&#60;button&#62;&#60;/button&#62;不会自动提交表单数据,只会默认提交标签里的图像或文本信息,而&#60;input type=&#8221;button&#8221;/&#62;则会直接提交表单数据,使用起来很方便.所以在HTML的表单当中推荐使用input.</li>
<li>写法上button是成对的闭合标签,里面可以直接包含图片或文本(其它标签不合理,<strong><span style="color: #ff0000;">热点地图是不合法的</span></strong>),而input只</li></ol><p class='read-more'><a href='http://imdonkey.com/blog/archives/126'>阅读全文 »</a></p>]]></description>
			<content:encoded><![CDATA[<h2 style="font-size: 1.5em;">Docutype</h2>
<p>淘宝首页使用的文档类型声明是HTML5的写法,而且这种写法在IE6,IE7上的兼容性了不错.只是偶尔会出现些小问题.根据这张对照表可以了解到各个浏览器对于各个文档声明的<a href="http://hsivonen.iki.fi/doctype/#handling">详细渲染情况</a>.</p>
<h2 style="font-size: 1.5em;">&lt;button&gt;标签与&lt;input type=&#8221;button&#8221;/&gt;的区别</h2>
<p>在研究淘宝注册页面的时候发现它的注册表单提交按钮是用的&lt;button&gt;&lt;/button&gt;这个标签,平时工作中我从来没用过这个标签,甚至一时怀疑这是不是W3C标准推荐使用的合理标签.Google一下大致了一些了解:</p>
<p>简单总结区别有以下几点</p>
<ol>
<li>如果用在表单里&lt;button&gt;&lt;/button&gt;不会自动提交表单数据,只会默认提交标签里的图像或文本信息,而&lt;input type=&#8221;button&#8221;/&gt;则会直接提交表单数据,使用起来很方便.所以在HTML的表单当中推荐使用input.</li>
<li>写法上button是成对的闭合标签,里面可以直接包含图片或文本(其它标签不合理,<strong><span style="color: #ff0000;">热点地图是不合法的</span></strong>),而input只能将文本写在value的属性值里.</li>
<li>从可操控性上来看button要比input更丰富些 具体可参看<a href="http://www.phpx.com/man/dhtmlcn/objects/BUTTON.html">Button元素/button对象</a></li>
</ol>
<h2 style="font-size: 1.5em;">Axure RP 5.6</h2>
<p>昨天在网上下了汉化包,用起来方便多了,因为功能实在是太多了,呵呵.看了一些教程了解了一些基本功能.希望能在公司网站前端优化的同时借机会熟悉下这个软件.它最吸引我的功能是对于模板的管理.</p>
<p>主要是视觉零件与模板结构.这对于代码的重用性和维护性都是一个相当不错的工具. 接下来再要学习的就是交互原型的实现方法了. 当然它还有其它更多优秀的功能,比如流程图,导出HTML演示demo等等.</p>
<h2 style="font-size: 1.5em;">Gzip</h2>
<p>之前对于Gzip一直有个不小的误解,或者说是学习时的粗心.在用firebug查看页面元素时发现所有图片都没有Gzip. 仔细看过<a href="http://developer.yahoo.com/performance/rules.html#gzip">http://developer.yahoo.com/performance/rules.html#gzip</a>才知道原因. 原来图片等这些多媒体文件在传输过程中已经是压缩过的了,如果再压缩会对CPU造成很大压力.所以在发布产品时只对HTML Doc, CSS, JavaScript文件进行Gzip压缩.效果非常明显.</p>
<p>今天就到这里~~</p>
<p>PS.Zen-Coding是真好用.不过一些更方便的语法还没了解到 现在只会写最简单的,以后会越用越熟练~</p>
<p>PPS.最近发现许蒿的歌不错 跟之前后弦的风格很像~~</p>
<p>PPPS.某人真好~竟然将自己一半的年假分给我~估计这不管是在什么样的公司都很少见吧~~哈哈!</p>
]]></content:encoded>
			<wfw:commentRss>http://imdonkey.com/blog/archives/126/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Zen-Coding/Axure RP Pro 5.6</title>
		<link>http://imdonkey.com/blog/archives/116</link>
		<comments>http://imdonkey.com/blog/archives/116#comments</comments>
		<pubDate>Mon, 11 Jan 2010 14:57:31 +0000</pubDate>
		<dc:creator>Ting</dc:creator>
				<category><![CDATA[倔倔在前端]]></category>
		<category><![CDATA[Axure]]></category>
		<category><![CDATA[zen-coding]]></category>
		<category><![CDATA[前端工程师]]></category>

		<guid isPermaLink="false">http://imdonkey.com/blog/?p=116</guid>
		<description><![CDATA[<h2>Zen-Coding</h2>
<p>最近经常看到关于zen-coding的文章,没太在意.今天有空瞄了一眼,看了相关视频,发现真是一个不错的前端开发工具.就试着装到了eclipse里.配好了快捷键还没进一步研究文档.以后一定多多利用,提高效率.不得不佩服老外,只用javascript就搞定了.</p>
<h2>Axure RP Pro 5.6</h2>
<p>一款经常用于产品开发初期制作原型,制定各类组件的软件.功能强大,便于产品设计经理与其它部门人员沟通.(序列号可以在网上搜到)</p>
<p>最后是一篇文章<a title="本书永久链接 Nicholas C. Zakas谈怎样才能成为优秀的前端工程师" rel="bookmark" href="http://www.cn-cuckoo.com/2010/01/10/nicholas-c-zakas-talk-about-what-makes-a-good-front-end-engineer-1356.html">Nicholas C. Zakas谈怎样才能成为优秀的前端工程师</a></p>]]></description>
			<content:encoded><![CDATA[<h2>Zen-Coding</h2>
<p>最近经常看到关于zen-coding的文章,没太在意.今天有空瞄了一眼,看了相关视频,发现真是一个不错的前端开发工具.就试着装到了eclipse里.配好了快捷键还没进一步研究文档.以后一定多多利用,提高效率.不得不佩服老外,只用javascript就搞定了.</p>
<h2>Axure RP Pro 5.6</h2>
<p>一款经常用于产品开发初期制作原型,制定各类组件的软件.功能强大,便于产品设计经理与其它部门人员沟通.(序列号可以在网上搜到)</p>
<p>最后是一篇文章<a title="本书永久链接 Nicholas C. Zakas谈怎样才能成为优秀的前端工程师" rel="bookmark" href="http://www.cn-cuckoo.com/2010/01/10/nicholas-c-zakas-talk-about-what-makes-a-good-front-end-engineer-1356.html">Nicholas C. Zakas谈怎样才能成为优秀的前端工程师</a></p>
]]></content:encoded>
			<wfw:commentRss>http://imdonkey.com/blog/archives/116/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>HTML/XHTML/HTML5&#8230;</title>
		<link>http://imdonkey.com/blog/archives/38</link>
		<comments>http://imdonkey.com/blog/archives/38#comments</comments>
		<pubDate>Wed, 23 Dec 2009 08:21:05 +0000</pubDate>
		<dc:creator>Ting</dc:creator>
				<category><![CDATA[倔倔在前端]]></category>
		<category><![CDATA[doctype]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://imdonkey.com/blog/?p=38</guid>
		<description><![CDATA[昨天了解了到底Web Standards是什么,有什么好处,今天就真正从&#8221;头&#8221;开始了. 在学习&#8221;doctype&#8221;的过程中,又顺便了解了一些关于HTML,XHTML的知识,觉得这些知识对于我这样平时看待问题不求甚解的人来说还是很有必要的.
HTML跟XHTML什么关系?它们之间有什么区别,都说HTML要向XML过渡,可现在又推出了HTML5?为什么要向XML过渡,它有什么好?XHTML2.0又为什么中途夭折了呢?以前上学时老师说过:带着问题学习是一个很好的自学方法~哈哈
HTML
先说说我们熟悉的HTML吧,它是一种可以告诉浏览器如何显示内容的语言.发展的历史可以参看<a href="http://zh.wikipedia.org/wiki/HTML">http://zh.wikipedia.org/wiki/HTML</a>
HTML是一个松散结构的标记语言,其中包含的标签大致分以下四种:
<ol>
<li><span>文档标记(document markup): &#60;h1&#62;&#60;/h1&#62; &#60;p&#62;&#60;/p&#62;</span></li>
<li><span>表示性元素(presentational element):&#60;b&#62;&#60;/b&#62; &#60;s&#038;g</span></li></ol><p class='read-more'><a href='http://imdonkey.com/blog/archives/38'>阅读全文 »</a></p>]]></description>
			<content:encoded><![CDATA[<p>昨天了解了到底Web Standards是什么,有什么好处,今天就真正从&#8221;头&#8221;开始了. 在学习&#8221;doctype&#8221;的过程中,又顺便了解了一些关于HTML,XHTML的知识,觉得这些知识对于我这样平时看待问题不求甚解的人来说还是很有必要的.</p>
<p>HTML跟XHTML什么关系?它们之间有什么区别,都说HTML要向XML过渡,可现在又推出了HTML5?为什么要向XML过渡,它有什么好?XHTML2.0又为什么中途夭折了呢?以前上学时老师说过:带着问题学习是一个很好的自学方法~哈哈</p>
<h2>HTML</h2>
<p>先说说我们熟悉的HTML吧,它是一种可以告诉浏览器如何显示内容的语言.发展的历史可以参看<a href="http://zh.wikipedia.org/wiki/HTML">http://zh.wikipedia.org/wiki/HTML</a></p>
<p>HTML是一个松散结构的标记语言,其中包含的标签大致分以下四种:</p>
<ol>
<li><span>文档标记(document markup): &lt;h1&gt;&lt;/h1&gt; &lt;p&gt;&lt;/p&gt;</span></li>
<li><span>表示性元素(presentational element):&lt;b&gt;&lt;/b&gt; &lt;s&gt;&lt;/s&gt;</span></li>
<li><span>短语元素(phrase element):&lt;acronym&gt;&lt;/acronym&gt;</span></li>
<li><span>图像和其它媒体(images&amp;media element):&lt;img/&gt;</span></li>
</ol>
<p>从它包含的众多标签看来,它是一个相对较弱的规则,将数据的结构,表现都混在一起,没有很强的语义. 与XML相比差别很大.</p>
<p>所以在HTML最初的几个版本开发中,并没有成为W3C推荐的标准,直到<a href="http://zh.wikipedia.org/zh-cn/2000%E5%B9%B4">2000年</a><a >5月15日</a>发布，基于严格的HTML 4.01语法，是<a title="国际标准化组织" href="http://zh.wikipedia.org/zh-cn/%E5%9B%BD%E9%99%85%E6%A0%87%E5%87%86%E5%8C%96%E7%BB%84%E7%BB%87">国际标准化组织</a>和<a title="国际电工委员会" href="http://zh.wikipedia.org/zh-cn/%E5%9B%BD%E9%99%85%E7%94%B5%E5%B7%A5%E5%A7%94%E5%91%98%E4%BC%9A">国际电工委员会</a>的标准.</p>
<p>XML是互联网用来传输数据一个很理想的语言(稍后解释),但是让浏览器支持很难,所以在这过程当中就要一步步慢慢过渡. XHTML出现了.</p>
<h2>XHTML</h2>
<blockquote>
<h5 style="font-size: 0.83em;"><span>1、什么是XHTML？</span></h5>
<p><a  href="http://www.wm23.com/resource/R01/Internet_1003.htm" target="_blank">HTML</a>是一种基本的WEB网页设计语言，XHTML是一个基于<a href="http://www.wm23.com/resource/R01/Internet_1003.htm" target="_blank">XML</a>的置标语言，看起来与HTML有些相象，只有一些小的但重要的区别，XHTML就是一个扮演着类似HTML的角色的XML，所以，本质上说，XHTML是一个过渡技术，结合了XML（有几分）的强大功能及HTML（大多数）的简单特性。</p>
<p>2000年底，国际W3C(World Wide Web Consortium)组织公布发行了XHTML 1.0版本。XHTML 1.0是一种在HTML 4.0基础上优化和改进的的新语言，目的是基于XML应用。XHTML是一种增强了的HTML,它的可扩展性和灵活性将适应未来网络应用更多的需求。下面是W3C的HTML工作组主席Steven Pemberton回答的关于XHTML的常见基础问题。</p>
<p>问：什么是XHTML?</p>
<p>答：XHTML是一种为适应XML而重新改造的HTML。当XML越来越成为一种趋势，就出现了这样一个问题：如果我们有了XML，我们是否依然需要HTML?为了回答这个问题，1998年5月我们在旧金山开了两天的工作会议，会议的结论是：需要。我们依然需要使用HTML。因为大量的人们已经习惯使用HTML来作为他们的设计语言，而且，已经有数以百万计的页面是采用HTML编写的。</p>
<p>问：为什么XHTML 1.0相对HTML 4.0独立发展?</p>
<p>答：并不是这样。XHTML恰恰就是HTML 4.0的重新组织，(确切的说它是HTML 4.01，是一个修正版本的HTML 4.0，只不过以XHTML 1.0命名发行。) 它们在XML里的解释会有一些必要的差别，但另一方面，它们依然非常相似，我们可以把XHTML的工作看作是HTML 4.0基础上的延续。<br />
问：XHTML 1.0如何实现XML标准?</p>
<p>答：XHTML就是一种XML应用。它采用XML的DTD文件格式定义，并运行在支持XML的系统上。这里要感谢XML的Namespaces功能，浏览器制造商不需要再创造新的私有标签(tags)，他们只需要在XHTML代码里包含XML代码片段，或者XML代码里包含XHTML代码片段。</p>
<h5 style="font-size: 0.83em;">2、与HTML相比XHTML有什么特点？</h5>
<p>（1）XHTML解决HTML语言所存在的严重制约其发展的问题。HTML发展到今天存在三个主要缺点：不能适应现在越多的网络设备和应用的需要，比如手机、PDA、信息家电都不能直接显示HTML；由于HTML代码不规范、臃肿，浏览器需要足够智能和庞大才能够正确显示HTML；数据与表现混杂，这样你的页面要改变显示，就必须重新制作HTML。因此HTML需要发展才能解决这个问题，于是W3C又制定了XHTML，XHTML是HTML向XML过度的一个桥梁。<br />
（2）XML是web发展的趋势，所以人们急切的希望加入XML的潮流中。XHTML是当前替代HTML4标记语言的标准，使用XHTML 1.0，只要你小心遵守一些简单规则，就可以设计出既适合XML系统，又适合当前大部分HTML浏览器的页面。这个意思就是说，你可以立刻设计使用XML，而不需要等到人们都使用支持XML的浏览器。这个指导方针可以使web平滑的过渡到XML。<br />
（3）使用XHTML的另一个优势是：它非常严密。当前网络上的HTML的糟糕情况让人震惊，早期的浏览器接受私有的HTML标签，所以人们在页面设计完毕后必须使用各种浏览器来检测页面，看是否兼容，往往会有许多莫名其妙的差异，人们不得不修改设计以便适应不同的浏览器。<br />
（4）XHTML是能与其它基于XML的标记语言、应用程序及协议进行良好的交互工作。<br />
（5）XHTML是Web标准家族的一部分，能很好在无线设备等其它用户代理上。<br />
（6）在网站设计方面，XHTML可助你去掉表现层代码的恶习，帮助你养成标记校验来测试页面工作的习惯。</p></blockquote>
<p>看到这里,我就更加好奇为什么大家都拼了命的要向XML过渡了,到底XML有什么好呢?试着弄清楚些,但也许不是很深刻.</p>
<h2>XML</h2>
<blockquote><p><strong>可扩展置标语言</strong>（<span lang="en" xml:lang="en">eXtensible Markup Language</span>，简称<span lang="en" xml:lang="en">XML</span>），又称<strong>可扩展标记语言</strong>，是一种<a title="置标语言" href="http://zh.wikipedia.org/wiki/%E7%BD%AE%E6%A0%87%E8%AF%AD%E8%A8%80">置标语言</a>。置标指<a title="计算机" href="http://zh.wikipedia.org/wiki/%E8%AE%A1%E7%AE%97%E6%9C%BA">计算机</a>所能理解的信息符号，通过此种标记，计算机之间可以处理包含各种信息的文章等。如何定义这些标记，既可以选择国际通用的标记语言，比如<a title="HTML" href="http://zh.wikipedia.org/wiki/HTML">HTML</a>，也可以使用像XML这样由相关人士自由决定的标记语言，这就是语言的可扩展性。XML是从<a title="标准通用置标语言" href="http://zh.wikipedia.org/wiki/%E6%A0%87%E5%87%86%E9%80%9A%E7%94%A8%E7%BD%AE%E6%A0%87%E8%AF%AD%E8%A8%80">标准通用置标语言</a>（SGML）中简化修改出来的。它主要用到的有可扩展置标语言、<a title="可扩展样式语言" href="http://zh.wikipedia.org/wiki/%E5%8F%AF%E6%89%A9%E5%B1%95%E6%A0%B7%E5%BC%8F%E8%AF%AD%E8%A8%80">可扩展样式语言</a>（XSL）、<a title="XPath" href="http://zh.wikipedia.org/wiki/XPath">XPath</a>等。</p>
<p><span><strong>XML设计目的用来传送及携带数据信息，XML不用来表现或展示数据，</strong><a title="HTML" href="http://zh.wikipedia.org/wiki/HTML"><strong>HTML</strong></a><strong>语言恰恰用来表现数据，所以XML用途的焦点是它说明数据是什么，以及携带数据信息。</strong></span></p></blockquote>
<p>更多深入的了解我会在以后慢慢学习,不想跑题太远呵呵.</p>
<p>在向XML迈进的过程中并不那么理想,比如XHMTL2.0中途夭折了,HTML5草案公布了. 之前我并没有关注这些东西,最近一看还真有点儿糊涂.现在整理整理</p>
<p>XHMTL1.0让编码者的编码方式进一步规范了,这是好事.但XHTML2.0的宣告终止让大家有点迷惑了,但牛人们可以理解,因为XHTML2.0有点儿过了.</p>
<blockquote><p>当万维网联盟（World Wide Web Consortium (W3C)）于 2002 年 8 月 5 日发布 XHTML 2.0 的第一个工作草案时， 最让人吃惊的是：与其先前的版本不同，它不是向后兼容的。 对于先前的发行版，如从 HTML 4.01 转到 XHTML 1.0 以及后来从 XHTML 1.0 到 XTHML 1.1，变化都是添加一些内容； 可以读取 XHTML 1.0（过渡的）文档的浏览器也可以理解 HTML 4.01 文档。而 XHTML 2.0 不是那样的。</p></blockquote>
<h2>HTML5</h2>
<p>XHTML2.0终止了,但HTML5却让大家又激动了一次.</p>
<blockquote>
<p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em;">HTML 5提供了一些新的元素和属性，反映典型的现代用法<a  title="网站" href="http://zh.wikipedia.org/wiki/%E7%B6%B2%E7%AB%99">网站</a>。其中有些是技术上类似&lt;div&gt;和&lt;span&gt;标签，但有一个含义，例如&lt;nav&gt;（网站导航块）和&lt;footer&gt;。这种标签将有利于<a title="搜索引擎" href="http://zh.wikipedia.org/wiki/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E">搜索引擎</a>的索引整理、小屏幕装置和视障人士使用。同时为其他浏览要素提供了新的功能，通过一个标准接口，如&lt;audio&gt;和&lt;video&gt;标记。<sup><a href="http://zh.wikipedia.org/zh-cn/HTML_5#_note-2">[3]</a></sup></p>
<p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em;">一些过时的HTML 4标记将取消。其中包括纯粹显示效果的标记，如&lt;font&gt;和&lt;center&gt;，因为它们已经被<a title="CSS" href="http://zh.wikipedia.org/wiki/CSS">CSS</a>取代。还有一些透过<a title="DOM" href="http://zh.wikipedia.org/wiki/DOM">DOM</a>的网络行为。</p>
</blockquote>
<p>预计HTML5会在2022年正式公布,到时候我们的下一代都会打酱油了&#8230;..</p>
<p>以上是对于HTML发展历史的简单了解~</p>
]]></content:encoded>
			<wfw:commentRss>http://imdonkey.com/blog/archives/38/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
