<?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>思维 &#187; 程序</title>
	<atom:link href="http://blog.acmind.com/archives/category/program/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.acmind.com</link>
	<description>Acme of Mind</description>
	<lastBuildDate>Mon, 19 Apr 2010 02:23:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>用Photoshop设计一个小型、现代的产品主页并由psd转换成XHTML/CSS模板</title>
		<link>http://blog.acmind.com/archives/1686</link>
		<comments>http://blog.acmind.com/archives/1686#comments</comments>
		<pubDate>Fri, 11 Dec 2009 01:17:41 +0000</pubDate>
		<dc:creator>笑谈</dc:creator>
				<category><![CDATA[设计技巧]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[转换]]></category>
		<category><![CDATA[PhotoShop]]></category>
		<category><![CDATA[psd]]></category>
		<category><![CDATA[xhtml]]></category>
		<category><![CDATA[模板]]></category>
		<category><![CDATA[教程]]></category>

		<guid isPermaLink="false">http://blog.acmind.com/archives/1686</guid>
		<description><![CDATA[
这个Photoshop web设计的教程中，我们将学习设计一个整洁的具有现代气息的web站点。这是设计和HTML/CSS模板转换系列教程的第一部分。
第一部分: 用Photoshop设计一个小型、现代的产品主页
预览
以下是我们将要一些设计的页面预览，点击图片可以放大。

建立一个新的Photoshop文档
1 首先在Photoshop中新建一个文档（Ctrl+N），大小为1200 x 1200像素，背景设为透明。

设置头部背景
2 使用矩形选定工具在透明的背景上画出一个矩形，矩形大小：1200px ×120px

3 使用油漆桶工具（G）用任意颜色填充头部刚才选定区域。点开图层样式对话框，用以下设置来增加一个渐变叠加效果。

完了，应该出现以下效果：

创建内容部分的背景图层
4 现在我们将要创建图层内容区域的第二部分背景。把前景色设为#00315C，背景色设为#001B32。选择矩形框选定工具（M）选定剩下的透明图层；选定后，选择渐变工具（G）,然后设置渐变类型为径向渐变。

5 设定好渐变工具（G）后，从顶部的中间垂直的拖动到画布的4/1大小左右。

添加参考线
6 现在我们需要一些参考线保留出宽度为850px的中间内容部分。选择视图 &#62; 新建参考线。在新建参考线对话框中输入175px，取向选择垂直。这样一个画布左边的参考线就做好了。

7 重复6的步骤，创建另外一条垂直参考线，不过这次输入1025px (175px + 850px = 1025px)。这样一个850px宽、居中的区域就做好了。

设计头部区域
8 选择横排文字工具（T），然后对其左边参考线边沿添加上页面标题和标语。

9 在标题文本图层下面创建一个新图层，选定矩形选框工具（M），在头部选取出一个区域。宽度必须填满1200px，高度大概在60px左右。

10 用白色（#FFFFFF）填充（G）选定区域，然后在图层面板中设置透明度为25%。效果如下。

创建导航
11 选择横排文字工具（T），字体大小设定为11-12px左右。然后在标题和标示右边加入导航文字；没菜单项之间留出等宽的边距。

12 在每个菜单项之间使用矩形选框工具（M）做一个1px宽的分割线；长度跨越整个头部。用#CECECE颜色填充（G）这1px的线条。效果如下图。

13 现在，我们在每个菜单项中加入鼠标悬停动态效果（hover）。我已经给其中一个菜单项加入颜色表示鼠标悬停时的效果。使用多边形套索工具（L）按住shift，创建一个三角形，以保证每条线都是直的。

14 用#00315C这个颜色填充选定的三角形区域

创建欢迎区域
15 选择横排文字工具（T）,加入一些欢迎标语；同样左边距紧贴左参考线，然后在上面的页面标题和下面的欢迎文本中留出一定的空间。文本下面加入4个蓝色的列表图标。这个图标是 Function Icon Set 里面的（文件名是circle_blue.png）。

16 在欢迎文本的右边将插入一个欢迎图片；我这里使用的是Six Revisions网站界面裁图。裁剪你的图片，去掉不需要的部分。图片准备好之后，通过编辑 &#62; 变换 &#62; 透视 改变图片的视角。

17 选择椭圆选框工具，然后在欢迎图片下方画一个椭圆。

18 用黑色（#000000）填充（G）椭圆选定区域。
19 然后设置区域图层透明度为35%。
20 然后使用滤镜 &#62; 模糊 &#62; 高斯模糊这个椭圆，设定模糊半径为1到2px。

21 把欢迎图片和下面的阴影再复制一份，然后把它们拖动到原图片的下面。
22 位置拖动好之后，使用高斯模糊下面的裁图，半径为1px。

创建水平3D分割线
23 选择矩形选框工具（M）层叠的创建两个1px的线条；宽度为850px，从左参考线到右参考线。你可以将两个线条放在同一个图层。
24 分别使用颜色#000D19和#003461填充这两个线条。

25 选择椭圆选框工具（M）然后在分割线上面画出一个椭圆。

26 使用黑色（#000000）填充（G）选定区域，加上2到3px的高斯模糊。然后使用矩形选框工具删掉分割线上半部分，这样就剩下了半个椭圆。

27 将这两个图层合并（Ctrl+E），然后添加一个图层蒙版（点击图层面板上的“添加图层蒙版”按钮）来合并图层。
28 使用渐变工具（G）,渐变类型为对称渐变，前景色设为白色（#FFFFFF）,背景色设置黑色（#000000）。

29 [...]]]></description>
			<content:encoded><![CDATA[<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image001.jpg" width="554" height="254" /></p>
<p><i>这个Photoshop web设计的教程中，我们将学习设计一个整洁的具有现代气息的web站点。这是设计和HTML/CSS模板转换系列教程的第一部分。</i></p>
<p><strong><font color="#ffffff" size="3">第一部分: 用Photoshop设计一个小型、现代的产品主页</font></strong></p>
<p><b>预览</b></p>
<p>以下是我们将要一些设计的页面预览，点击图片可以放大。</p>
<p><a href="http://images.sixrevisions.com/2009/10/27-03_minimal_modern_layout_full.jpg" class="highslide-image" onclick="return hs.expand(this);"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image002.gif" width="554" height="433" /></a></p>
<p><b>建立一个新的Photoshop文档</b></p>
<p>1 首先在Photoshop中新建一个文档（Ctrl+N），大小为1200 x 1200像素，背景设为透明。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image003" border="0" alt="clip_image003" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image003.gif" width="555" height="340" /></p>
<p><b>设置头部背景</b></p>
<p>2 使用矩形选定工具在透明的背景上画出一个矩形，矩形大小：1200px ×120px</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image004.gif" width="554" height="73" /></p>
<p>3 使用油漆桶工具（G）用任意颜色填充头部刚才选定区域。点开图层样式对话框，用以下设置来增加一个渐变叠加效果。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image005" border="0" alt="clip_image005" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image005.gif" width="554" height="562" /></p>
<p>完了，应该出现以下效果：</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image006.gif" width="554" height="179" /></p>
<p><b>创建内容部分的背景图层</b></p>
<p>4 现在我们将要创建图层内容区域的第二部分背景。把前景色设为<b>#00315C</b>，背景色设为<b>#001B32</b>。选择矩形框选定工具（M）选定剩下的透明图层；选定后，选择渐变工具（G）,然后设置渐变类型为<b>径向渐变</b>。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image007" border="0" alt="clip_image007" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image007.jpg" width="554" height="657" /></p>
<p>5 设定好渐变工具（G）后，从顶部的中间垂直的拖动到画布的4/1大小左右。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image008.jpg" width="554" height="304" /></p>
<p><b>添加参考线</b></p>
<p>6 现在我们需要一些参考线保留出宽度为<b>850px</b>的中间内容部分。选择视图 &gt; 新建参考线。在新建参考线对话框中输入<b>175px</b>，取向选择垂直。这样一个画布左边的参考线就做好了。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image009" border="0" alt="clip_image009" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image009.jpg" width="554" height="404" /></p>
<p>7 重复6的步骤，创建另外一条垂直参考线，不过这次输入<b>1025px</b> (175px + 850px = 1025px)。这样一个850px宽、居中的区域就做好了。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image010" border="0" alt="clip_image010" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image010.gif" width="554" height="404" /></p>
<p><b>设计头部区域</b></p>
<p>8 选择横排文字工具（T），然后对其左边参考线边沿添加上页面标题和标语。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image011" border="0" alt="clip_image011" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image011.jpg" width="554" height="404" /></p>
<p>9 在标题文本图层下面创建一个新图层，选定矩形选框工具（M），在头部选取出一个区域。宽度必须填满<b>1200px</b>，高度大概在<b>60px</b>左右。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image012" border="0" alt="clip_image012" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image012.jpg" width="554" height="404" /></p>
<p>10 用白色（<b>#FFFFFF</b>）填充（G）选定区域，然后在图层面板中设置透明度为<b>25%</b>。效果如下。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image013" border="0" alt="clip_image013" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image013.jpg" width="554" height="404" /></p>
<p><b>创建导航</b></p>
<p>11 选择横排文字工具（T），字体大小设定为<b>11-12px</b>左右。然后在标题和标示右边加入导航文字；没菜单项之间留出等宽的边距。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image014" border="0" alt="clip_image014" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image014.jpg" width="554" height="404" /></p>
<p>12 在每个菜单项之间使用矩形选框工具（M）做一个<b>1px</b>宽的分割线；长度跨越整个头部。用<b>#CECECE</b>颜色填充（G）这1px的线条。效果如下图。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image015" border="0" alt="clip_image015" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image015.jpg" width="554" height="404" /></p>
<p>13 现在，我们在每个菜单项中加入鼠标悬停动态效果（hover）。我已经给其中一个菜单项加入颜色表示鼠标悬停时的效果。使用多边形套索工具（L）按住shift，创建一个三角形，以保证每条线都是直的。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image016" border="0" alt="clip_image016" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image016.jpg" width="554" height="404" /></p>
<p>14 用<b>#00315C</b>这个颜色填充选定的三角形区域</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image017" border="0" alt="clip_image017" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image017.jpg" width="554" height="232" /></p>
<p><b>创建欢迎区域</b></p>
<p>15 选择横排文字工具（T）,加入一些欢迎标语；同样左边距紧贴左参考线，然后在上面的页面标题和下面的欢迎文本中留出一定的空间。文本下面加入4个蓝色的列表图标。这个图标是 <a href="http://wefunction.com/2008/07/function-free-icon-set/">Function Icon Set</a> 里面的（文件名是<b>circle_blue.png</b>）。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image018" border="0" alt="clip_image018" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image018.jpg" width="554" height="404" /></p>
<p>16 在欢迎文本的右边将插入一个欢迎图片；我这里使用的是Six Revisions网站界面裁图。裁剪你的图片，去掉不需要的部分。图片准备好之后，通过编辑 &gt; 变换 &gt; 透视 改变图片的视角。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image019" border="0" alt="clip_image019" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image019.gif" width="554" height="404" /></p>
<p>17 选择椭圆选框工具，然后在欢迎图片下方画一个椭圆。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image020" border="0" alt="clip_image020" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image020.gif" width="554" height="404" /></p>
<p>18 用黑色（<b>#000000</b>）填充（G）椭圆选定区域。</p>
<p>19 然后设置区域图层透明度为<b>35%</b>。</p>
<p>20 然后使用滤镜 &gt; 模糊 &gt; 高斯模糊这个椭圆，设定模糊半径为<b>1到2px</b>。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image021" border="0" alt="clip_image021" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image021.gif" width="554" height="404" /></p>
<p>21 把欢迎图片和下面的阴影再复制一份，然后把它们拖动到原图片的下面。</p>
<p>22 位置拖动好之后，使用高斯模糊下面的裁图，半径为<b>1px</b>。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image022" border="0" alt="clip_image022" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image022.gif" width="554" height="404" /></p>
<p><b>创建水平3D分割线</b></p>
<p>23 选择矩形选框工具（M）层叠的创建两个1px的线条；宽度为850px，从左参考线到右参考线。你可以将两个线条放在同一个图层。</p>
<p>24 分别使用颜色<b>#000D19</b>和<b>#003461</b>填充这两个线条。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image023" border="0" alt="clip_image023" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image023.gif" width="554" height="404" /></p>
<p>25 选择椭圆选框工具（M）然后在分割线上面画出一个椭圆。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image024" border="0" alt="clip_image024" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image024.jpg" width="554" height="260" /></p>
<p>26 使用黑色（<b>#000000</b>）填充（G）选定区域，加上<b>2到3px</b>的高斯模糊。然后使用矩形选框工具删掉分割线上半部分，这样就剩下了半个椭圆。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image025" border="0" alt="clip_image025" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image025.jpg" width="554" height="404" /></p>
<p>27 将这两个图层合并（Ctrl+E），然后添加一个图层蒙版（点击图层面板上的“添加图层蒙版”按钮）来合并图层。</p>
<p>28 使用渐变工具（G）,渐变类型为对称渐变，前景色设为白色（<b>#FFFFFF</b>）,背景色设置黑色（<b>#000000</b>）。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image026" border="0" alt="clip_image026" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image026.gif" width="554" height="404" /></p>
<p>29 拖动对称渐变，从分割线中间向两边拖动，从而产生中间向两边淡入效果。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image027" border="0" alt="clip_image027" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image027.jpg" width="554" height="316" /></p>
<p><b>设计内容区域</b></p>
<p>30 选择横排文字工具（T）在3D分割线下方，右分割线的左边加入任意的文字标题和段落。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image028" border="0" alt="clip_image028" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image028.jpg" width="554" height="325" /></p>
<p>31 使用圆角矩形工具（U）在内容文本区域的左边创建一个圆角矩形；半径设为<b>10px</b>（默认情况下背景是10px）。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image029" border="0" alt="clip_image029" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image029.gif" width="554" height="404" /></p>
<p>32 路径画好之后，选择钢笔工具（P），右击矩形内部，选择<b>建立选区</b>。</p>
<p>33 设置前景色为<b>#00315C</b>，背景色为<b>#001B32</b> ，然后选择渐变工具（G），渐变类型为径向渐变。</p>
<p>34 从顶部把渐变拖动到中间，和我们绘制背景方法相同。效果如下图。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image030" border="0" alt="clip_image030" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image030.jpg" width="554" height="404" /></p>
<p>35 现在需要给圆角矩形图层加入投影、内阴影和描边的图层样式（双击图层面板上面的图层，打开图层样式对话框）。设置如下。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image031" border="0" alt="clip_image031" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image031.gif" width="554" height="412" /></p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image032" border="0" alt="clip_image032" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image032.gif" width="554" height="412" /></p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image033" border="0" alt="clip_image033" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image033.gif" width="554" height="412" /></p>
<p>36 使用多边形套索工具（L），然后在矩形上面做一个三角形的选区。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image034" border="0" alt="clip_image034" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image034.jpg" width="554" height="404" /></p>
<p>37 剪切并复制选区到一个新图层，一般这样做将会丢失掉选取的图层样式，所以在这之前我们必须给右下角图层重复添加一次样式。</p>
<p>38 通过编辑 &gt; 变换 &gt; 旋转给边角图层翻转180度；</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image035" border="0" alt="clip_image035" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image035.jpg" width="554" height="404" /></p>
<p>39 加入一些任意文字以完成内容框的绘制。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image036" border="0" alt="clip_image036" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image036.jpg" width="554" height="251" /></p>
<p><b>创建页脚区域</b></p>
<p>40 选择圆角矩形工具（U）在也叫拖动出一个圆角矩形。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image037" border="0" alt="clip_image037" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image037.gif" width="554" height="99" /></p>
<p>41 使用任意颜色来填充这个圆角矩形选区，选区加入如下样式的渐变叠加效果。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image038" border="0" alt="clip_image038" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image038.gif" width="554" height="567" /></p>
<p>42 最后，加上页脚信息就大功告成了。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image039" border="0" alt="clip_image039" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image039.gif" width="554" height="77" /></p>
<p><b>完成</b></p>
<p><strong><font color="#ffffff" size="3">第二部分: 将小型、现代的产品主页由psd转换成XHTML/CSS模板</font></strong> </p>
<p> 点击下面的图片将会看到本次制作的 <a href="http://sixrevisions.com/demo/minimal_modern_layout/index.html">demo</a> 的效果。
<p><a href="http://sixrevisions.com/demo/minimal_modern_layout/index.html"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image041" border="0" alt="clip_image041" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image041.jpg" width="554" height="408" /></a></p>
<p> 创建文件结构，准备文件
<p>1 在桌面上创建新的空目录，取名<strong>portfolio</strong>。</p>
<p>2 在portfolio目录下面继续创建<strong>images</strong>目录用于存放图片。</p>
<p>3 接下来创建两个空文件 <strong>styles.css</strong>和<strong>index.html</strong></p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image042" border="0" alt="clip_image042" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image042.gif" width="554" height="386" /></p>
<p>4 用你最喜欢的文本编辑器打开index.html，我将在本教程中使用Adobe Dreamweaver。</p>
<p>5 在文档的&lt;head&gt;标签加入对styles.css的链接。可以使用如下代码：</p>
<div class="mycode">
<pre><font face="微软雅黑">
<font color="#0000ff">&lt;link </font><font color="#ff0000">href</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;styles.css&quot; </font><font color="#ff0000">rel</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;stylesheet&quot; </font><font color="#ff0000">type</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;text/css&quot; </font><font color="#0000ff">/&gt;</font>
</font></pre>
</div>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image043" border="0" alt="clip_image043" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image043.gif" width="554" height="267" /></p>
<p>页面分区 </p>
<p>以下是我们网页模板的基本结构。我们从创建基本分区来开始我们的模板转换工作。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image044" border="0" alt="clip_image044" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image044.gif" width="554" height="434" /></p>
<p>6 我们将从在浏览器中居中、包含整个文档的主容器开始（也被称之为外壳（wrapper））。在容器内部内的5个div将组成一个完整的页面：这些div是：#top,</p>
<p>#welcome, #sidebar, #content 和 #footer。</p>
<p>HTML代码如下：</p>
<div class="mycode">
<pre><font face="微软雅黑">
<font color="#008000">&lt;!--CONTAINER STARTS--&gt;</font>
<font color="#0000ff">&lt;div </font><font color="#ff0000">id</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;container&quot;</font><font color="#0000ff">&gt;</font>

<font color="#000000">	</font><font color="#008000">&lt;!--HEADER/NAVIGATION STARTS--&gt;</font>
<font color="#000000">	</font><font color="#0000ff">&lt;div </font><font color="#ff0000">id</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;top&quot;</font><font color="#0000ff">&gt;</font>

<font color="#000000">	</font><font color="#0000ff">&lt;/div&gt;</font>
<font color="#000000">	</font><font color="#008000">&lt;!--HEADER/NAVIGATION ENDS--&gt;</font>

<font color="#000000">	</font><font color="#008000">&lt;!--WELCOME AREA STARTS--&gt;</font>
<font color="#000000">	</font><font color="#0000ff">&lt;div </font><font color="#ff0000">id</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;welcome&quot;</font><font color="#0000ff">&gt;</font>

<font color="#000000">	</font><font color="#0000ff">&lt;/div&gt;</font>
<font color="#000000">	</font><font color="#008000">&lt;!--WELCOME AREA ENDS--&gt;</font>

<font color="#000000">	</font><font color="#008000">&lt;!--SIDEBAR STARTS--&gt;</font>
<font color="#000000">	</font><font color="#0000ff">&lt;div </font><font color="#ff0000">id</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;sidebar&quot;</font><font color="#0000ff">&gt;</font>

<font color="#000000">	</font><font color="#0000ff">&lt;/div&gt;</font>
<font color="#000000">	</font><font color="#008000">&lt;!--SIDEBAR ENDS--&gt;</font>

<font color="#000000">	</font><font color="#008000">&lt;!--CONTENT STARTS--&gt;</font>
<font color="#000000">	</font><font color="#0000ff">&lt;div </font><font color="#ff0000">id</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;content&quot;</font><font color="#0000ff">&gt;</font>

<font color="#000000">	</font><font color="#0000ff">&lt;/div&gt;</font>
<font color="#000000">	</font><font color="#008000">&lt;!--CONTENT ENDS--&gt;</font>

<font color="#000000">	</font><font color="#008000">&lt;!--FOOTER STARTS--&gt;</font>
<font color="#000000">	</font><font color="#0000ff">&lt;div </font><font color="#ff0000">id</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;footer&quot;</font><font color="#0000ff">&gt;</font>

<font color="#000000">	</font><font color="#0000ff">&lt;/div&gt;</font>
<font color="#000000">	</font><font color="#008000">&lt;!--FOOTER ENDS--&gt;</font>

<font color="#0000ff">&lt;/div&gt;</font>
<font color="#008000">&lt;!--CONTAINER ENDS--&gt;</font>
</font></pre>
</div>
<p>模板背景切片 </p>
<p>7 在我们把各个div转成代码之前，我们首先在页面中加入背景。用Photoshop打开PSD文件，用矩形选框工具（M）选定头部/导航和背景的一点区域；选定的宽度可以只有<strong>1px</strong></p>
<p>（因为我们将会在后面使用css来水平重复它）。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image045" border="0" alt="clip_image045" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image045.gif" width="554" height="404" /></p>
<p>8 在选定区域的底部，用滴管工具（I）记录下色彩的16进制值。</p>
<p>9 选定好之后，点编辑 &gt; 合并拷贝，创建一个新Photoshop文件（Ctrl+N），然后将选定区域复制到新文档中。通常新建Photoshop画布长宽是剪切板中选定区域的大小。如果不是，请确保他</p>
<p>们是一致的。</p>
<p>10 在新Photoshop文档中，点文件 &gt; 另存为 web 和设备所用格式（Alt+Shift+Ctrl+S），选择PNG-8格式，保存文件为<strong>background.png</strong>，保存在images目录下。</p>
<p>将背景转成代码 </p>
<p>11 现在我们已经将背景图片从Photoshop中切片出来，我们可以开始写代码了。打开CSS文件（styles.css），然后写入以下代码：</p>
<div class="mycode">
<pre><font face="微软雅黑">
<font color="#000000">* {</font>
	<font color="#0000ff">margin: </font><font color="#000000">0px;</font>
	<font color="#0000ff">padding: </font><font color="#000000">0px;</font>
	<font color="#0000ff">border: </font><font color="#ff0000">none</font><font color="#000000">;</font>
<font color="#000000">}</font>
<font color="#000000">body {</font>
	<font color="#0000ff">background-image: </font><font color="#ff0000">url</font><font color="#000000">(images/background.png);</font>
	<font color="#0000ff">background-repeat: </font><font color="#ff0000">repeat-x</font><font color="#000000">;</font>
	<font color="#0000ff">background-color: </font><font color="#000000">#001b32;</font>
	<font color="#0000ff">font-family: </font><font color="#000000">Arial, Helvetica, </font><font color="#ff0000">sans-serif</font><font color="#000000">;</font>
	<font color="#0000ff">font-size: </font><font color="#000000">12px;</font>
	<font color="#0000ff">color: </font><font color="#000000">#c8c8c8;</font>
<font color="#000000">}</font>
<font color="#000000">#container {</font>
	<font color="#0000ff">margin: </font><font color="#ff0000">auto</font><font color="#000000">;</font>
	<font color="#0000ff">width: </font><font color="#000000">850px;</font>
<font color="#000000">}</font>
</font></pre>
</div>
<p>让我们来仔细的分析一下样式代码。 </p>
<p>首先我们将所有元素的margin，padding，border的值归零以避免跨浏览器的兼容性。我们这个用到的是<strong>*</strong>选择器。</p>
<p>接下来，我们样式化 body 元素；我们将 background.png 设置为背景，通过 repeat-x 使它水平重复。同样把背景色设置为深蓝（#001b32）。</p>
<p>最后，我们把#container的margin设置为 auto 让布局居中，并且设置宽度为850px。</p>
<p>Logo和站点名的切片 </p>
<p>12 现在我们接着制作模板的logo和站点标题。使用矩形选框工具（M），选定站点的标题和标示文本（以下图为参考）。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image046" border="0" alt="clip_image046" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image046.jpg" width="554" height="404" /></p>
<p>13 就像处理 background.png 一样，复制这个区域到新文档，然后保存为<strong>title.png</strong>放在images目录。</p>
<p>和站点名转换成代码 </p>
<p>14 我们转到HTML文档中，在#top这个div里面我们创建一个新div，ID为title。</p>
<p>15 在#title div里面，加入&lt;h1&gt;元素来放置我们的站点名；同样需要创建一个超链接（&lt;a&gt;）链接到站点主页。对于这个模板，我们仅把href属性的值设为#，如果需要在实际中使用这</p>
<p>个模板，你可以用反斜杠（/）来代替#。</p>
<p>HTML代码如下：</p>
<div class="mycode">
<pre><font face="微软雅黑">
<font color="#008000">&lt;!--HEADER/NAVIGATION STARTS--&gt;</font>
<font color="#0000ff">&lt;div </font><font color="#ff0000">id</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;top&quot;</font><font color="#0000ff">&gt;</font>

<font color="#000000">	</font><font color="#008000">&lt;!--WEBSITE TITLE STARTS--&gt;</font>
<font color="#000000">	</font><font color="#0000ff">&lt;div </font><font color="#ff0000">id</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;title&quot;</font><font color="#0000ff">&gt;</font>
<font color="#000000">		</font><font color="#0000ff">&lt;h1&gt;&lt;a </font><font color="#ff0000">href</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;#&quot; </font><font color="#ff0000">title</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;Your Website Name&quot;</font><font color="#0000ff">&gt;</font><font color="#000000">Your Website Name</font><font color="#0000ff">&lt;/a&gt;&lt;/h1&gt;</font>
<font color="#000000">	</font><font color="#0000ff">&lt;/div&gt;</font>
<font color="#000000">	</font><font color="#008000">&lt;!--WEBSITE TITLE ENDS--&gt;</font>

<font color="#0000ff">&lt;/div&gt;</font>
<font color="#008000">&lt;!--HEADER/NAVIGATION ENDS--&gt;</font>
</font></pre>
</div>
<p>16 现在我们转向样式表。样式化#top区域元素。代码如下。</p>
<div class="mycode">
<pre><font face="微软雅黑">
<font color="#000000">#top {</font>
	<font color="#0000ff">float: </font><font color="#000000">left;</font>
	<font color="#0000ff">width: </font><font color="#000000">850px;</font>
	<font color="#0000ff">height: </font><font color="#000000">119px;</font>
<font color="#000000">}</font>
<font color="#000000">#title {</font>
	<font color="#0000ff">float: </font><font color="#000000">left;</font>
	<font color="#0000ff">width: </font><font color="#000000">278px;</font>
	<font color="#0000ff">height: </font><font color="#000000">74px;</font>
	<font color="#0000ff">padding-top: </font><font color="#000000">45px;</font>
<font color="#000000">}</font>
<font color="#000000">#title h1 {</font>
	<font color="#0000ff">display: </font><font color="#ff0000">block</font><font color="#000000">;</font>
	<font color="#0000ff">float: </font><font color="#000000">left;</font>
	<font color="#0000ff">width: </font><font color="#000000">278px;</font>
	<font color="#0000ff">height: </font><font color="#000000">74px;</font>
	<font color="#0000ff">text-indent: </font><font color="#000000">-9999px;</font>
<font color="#000000">}</font>
<font color="#000000">#title h1 a {</font>
	<font color="#0000ff">display: </font><font color="#ff0000">block</font><font color="#000000">;</font>
	<font color="#0000ff">width: </font><font color="#000000">100%;</font>
	<font color="#0000ff">height: </font><font color="#000000">100%;</font>
	<font color="#0000ff">background-image: </font><font color="#ff0000">url</font><font color="#000000">(images/title.png);</font>
	<font color="#0000ff">background-repeat: </font><font color="#ff0000">no-repeat</font><font color="#000000">;</font>
	<font color="#0000ff">background-position: </font><font color="#000000">0 0;</font>
<font color="#000000">}</font>
</font></pre>
</div>
<p>让我们来仔细分析一下上面的代码。</p>
<p>首先我们需要将#top浮动到左边，然后给定一个固定的宽度和高度。</p>
<p>宽度应该和#container等宽，850px，高度应该和浅灰色区域等高，119px。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image047" border="0" alt="clip_image047" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image047.jpg" width="554" height="404" /></p>
<p>接下来，我们使用一种<a href="http://stopdesign.com/archive/2003/03/07/replace-text.html">CSS背景图片替换</a>的技术使用text-indent方法。我们将#title h1</p>
<p>里面的文字向左缩进-9999px，将文字推出了浏览器的可视区域。这个技术对于屏幕阅读器的可访问性和搜索引擎优化都有好处。</p>
<p>导航转换成代码 </p>
<p>17 在#top里面，#title下面我们创建一个ID为navigation的div。在#navigation里面增加一个无序列表，class值设为nav-links。以下</p>
<p>是#navigation的代码段。</p>
<div class="mycode">
<pre><font face="微软雅黑">
<font color="#008000">&lt;!--NAVIGATION STARTS--&gt;</font>
<font color="#0000ff">&lt;div </font><font color="#ff0000">id</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;navigation&quot;</font><font color="#0000ff">&gt;</font>
<font color="#000000">	</font><font color="#0000ff">&lt;ul&gt;</font>
<font color="#000000">		</font><font color="#0000ff">&lt;li&gt;&lt;a </font><font color="#ff0000">href</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;#&quot; </font><font color="#ff0000">title</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;home&quot;</font><font color="#0000ff">&gt;</font><font color="#000000">home</font><font color="#0000ff">&lt;/a&gt;&lt;/li&gt;</font>
<font color="#000000">		</font><font color="#0000ff">&lt;li&gt;&lt;a </font><font color="#ff0000">href</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;#&quot; </font><font color="#ff0000">title</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;about&quot;</font><font color="#0000ff">&gt;</font><font color="#000000">about</font><font color="#0000ff">&lt;/a&gt;&lt;/li&gt;</font>
<font color="#000000">		</font><font color="#0000ff">&lt;li&gt;&lt;a </font><font color="#ff0000">href</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;#&quot; </font><font color="#ff0000">title</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;portfolio&quot;</font><font color="#0000ff">&gt;</font><font color="#000000">portfolio</font><font color="#0000ff">&lt;/a&gt;&lt;/li&gt;</font>
<font color="#000000">		</font><font color="#0000ff">&lt;li&gt;&lt;a </font><font color="#ff0000">href</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;#&quot; </font><font color="#ff0000">title</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;contact&quot;</font><font color="#0000ff">&gt;</font><font color="#000000">contact</font><font color="#0000ff">&lt;/a&gt;&lt;/li&gt;</font>
<font color="#000000">	</font><font color="#0000ff">&lt;/ul&gt;</font>
<font color="#0000ff">&lt;/div&gt;</font>
<font color="#008000">&lt;!--NAVIGATION ENDS--&gt;</font>
</font></pre>
</div>
<p>给无序列表设定一个nav-links的类主要目录是为了在链接CSS的时候不会影响到页面上的其他无序列表。需要注意的是，最后一个列表项加入borderx2的类，意为“边框乘2”；因为导航中的列表项都有一个分割线，我们需要给最后一样的左右都加上一个1px的边框（也就是边框乘2）。</p>
<p>悬停指示器切片 </p>
<p>18 在给导航加入CSS样式之前，我们得首先把小小的悬停三角形切片。到Photoshop中使用矩形选框工具（M）选定这个三角形，复制透明背景的新文档，保存为images目录下的</p>
<p><strong>nav_hover.png</strong>。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image048" border="0" alt="clip_image048" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image048.gif" width="554" height="404" /></p>
<p>导航样式化 </p>
<p>19 现在该是给导航加入CSS代码的时候了。使用以下代码。</p>
<div class="mycode">
<pre><font face="微软雅黑">
<font color="#000000">.nav-links li a {</font>
	<font color="#0000ff">float: </font><font color="#000000">left;</font>
	<font color="#0000ff">width: </font><font color="#000000">120px;</font>
	<font color="#0000ff">height: </font><font color="#000000">68px;</font>
	<font color="#0000ff">text-decoration: </font><font color="#ff0000">none</font><font color="#000000">;</font>
	<font color="#0000ff">text-transform: </font><font color="#ff0000">capitalize</font><font color="#000000">;</font>
	<font color="#0000ff">color: </font><font color="#000000">#666666;</font>
	<font color="#0000ff">font-size: </font><font color="#000000">12px;</font>
	<font color="#0000ff">text-align: </font><font color="#ff0000">center</font><font color="#000000">;</font>
	<font color="#0000ff">padding-top: </font><font color="#000000">51px;</font>
	<font color="#0000ff">border-left-width: </font><font color="#000000">1px;</font>
	<font color="#0000ff">border-left-style: </font><font color="#ff0000">solid</font><font color="#000000">;</font>
	<font color="#0000ff">border-left-color: </font><font color="#000000">#cecece;</font>
<font color="#000000">}</font>
<font color="#000000">.nav-links li a:hover {</font>
	<font color="#0000ff">color: </font><font color="#000000">#00284a;</font>
	<font color="#0000ff">background-image: </font><font color="#ff0000">url</font><font color="#000000">(images/nav_hover.png);</font>
	<font color="#0000ff">background-repeat: </font><font color="#ff0000">no-repeat</font><font color="#000000">;</font>
	<font color="#0000ff">background-position: </font><font color="#ff0000">center </font><font color="#000000">bottom;</font>
<font color="#000000">}</font>
<font color="#000000">li.borderx2 {</font>
	<font color="#0000ff">border-right-width: </font><font color="#000000">1px;</font>
	<font color="#0000ff">border-right-style: </font><font color="#ff0000">solid</font><font color="#000000">;</font>
	<font color="#0000ff">border-right-color: </font><font color="#000000">#cecece;</font>
<font color="#000000">}</font>
</font></pre>
</div>
<p>首先，为了让列表项挨个的显示，我们将它们向左浮动。然后给他们固定的宽度高度，使他们之前的空间均衡。然后通过给text-decoration值none来去掉超链接默认的下划线。</p>
<p>然后给每个列表项一个1px、灰色的左边框。</p>
<p>然后通过:hover伪类来样式化悬停效果。当鼠标悬停时，我们将列表项的背景设为nav_hover.png。</p>
<p>最后解决最后一个列表项右边没有分割线的问题，需要给.borderx2类声明一个border属性。</p>
<h5>创建欢迎区域</h5>
<p>欢迎区域会被分割成两个部分，左边(#welcome-text)和右边(#welcome-image)。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image049" border="0" alt="clip_image049" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image049.gif" width="554" height="181" /></p>
<p>20 在index.html的#welcome div中加入两个新的div，一个ID为welcome-text，一个ID为welcome-image。我们会在切片完成后将两个div填充上内容。</p>
<p>欢迎图片的切片 </p>
<p>21 转到PSD文件，关闭除了有渐变效果深蓝背景的其他所有图层（点击图层左边的眼睛图标）。</p>
<p>22 使用矩形选框工具（M）选定一个宽度不超过850px的矩形，可以通过第一部分的设定好的参考线来选定。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image050" border="0" alt="clip_image050" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image050.jpg" width="554" height="324" /></p>
<p>23 将这个深蓝背景转成web图片<strong>content_background.png</strong>，放在images目录下。使用同样的方法，关闭除了欢迎图片图层的其他图层，切片蓝点和欢迎图片（见一下参考）。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image051" border="0" alt="clip_image051" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image051.gif" width="554" height="454" /></p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image052" border="0" alt="clip_image052" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image052.jpg" width="554" height="304" /></p>
<p>新区域的HTML类似如下。</p>
<div class="mycode">
<pre><font face="微软雅黑">
<font color="#008000">&lt;!--WELCOME AREA STARTS--&gt;</font>
<font color="#0000ff">&lt;div </font><font color="#ff0000">id</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;welcome&quot;</font><font color="#0000ff">&gt;</font>

<font color="#000000">	</font><font color="#008000">&lt;!--WELCOME TEXT STARTS--&gt;</font>
<font color="#000000">	</font><font color="#0000ff">&lt;div </font><font color="#ff0000">id</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;welcome-text&quot;</font><font color="#0000ff">&gt;</font>

<font color="#000000">	</font><font color="#0000ff">&lt;/div&gt;</font>
<font color="#000000">	</font><font color="#008000">&lt;!--WELCOME TEXT ENDS--&gt;</font>

<font color="#000000">	</font><font color="#008000">&lt;!--WELCOME IMAGE STARTS--&gt;</font>
<font color="#000000">	</font><font color="#0000ff">&lt;div </font><font color="#ff0000">id</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;welcome-image&quot;</font><font color="#0000ff">&gt;</font>
<font color="#000000">		</font><font color="#0000ff">&lt;img </font><font color="#ff0000">src</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;images/welcome_image.png&quot; </font><font color="#ff0000">alt</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;Welcome...&quot; </font><font color="#0000ff">/&gt;</font>
<font color="#000000">	</font><font color="#0000ff">&lt;/div&gt;</font>
<font color="#000000">	</font><font color="#008000">&lt;!--WELCOME IMAGE ENDS--&gt;</font>

<font color="#0000ff">&lt;/div&gt;</font>
<font color="#008000">&lt;!--WELCOME AREA ENDS--&gt;</font>
</font></pre>
</div>
<p>24 在#welcome-text div中文名增加一些欢迎文字。使用&lt;h2&gt;标签给欢迎文字增加标题，然后在以下添加无序列表。</p>
<p>25 在#welcome-image中添加欢迎图片（本案例添加的是Six Revisions的网站裁图）。</p>
<p>合起来，HTML代码如下。</p>
<div class="mycode">
<pre><font face="微软雅黑">
<font color="#008000">&lt;!--WELCOME AREA STARTS--&gt;</font>
<font color="#0000ff">&lt;div </font><font color="#ff0000">id</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;welcome&quot;</font><font color="#0000ff">&gt;</font>

<font color="#000000">	</font><font color="#008000">&lt;!--WELCOME TEXT STARTS--&gt;</font>
<font color="#000000">	</font><font color="#0000ff">&lt;div </font><font color="#ff0000">id</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;welcome-text&quot;</font><font color="#0000ff">&gt;</font>
<font color="#000000">		</font><font color="#0000ff">&lt;h2&gt;</font><font color="#000000">welcome to </font><font color="#0000ff">&lt;span&gt;</font><font color="#000000">yourwebsite!</font><font color="#0000ff">&lt;/span&gt;&lt;/h2&gt;</font>
<font color="#000000">		</font><font color="#0000ff">&lt;p&gt;</font><font color="#000000">Lorem ipsum dolor sit amet, consectetur[...]</font><font color="#0000ff">&lt;/p&gt;</font>
<font color="#000000">		</font><font color="#0000ff">&lt;p&gt;</font><font color="#000000">Proin fringilla nunc lorem, in sollicitudin orci. Sed ut eros ligula.</font><font color="#0000ff">&lt;/p&gt;</font>
<font color="#000000">		</font><font color="#0000ff">&lt;ul&gt;</font>
<font color="#000000">			</font><font color="#0000ff">&lt;li&gt;</font><font color="#000000">Lorem ipsum dolor sit amet...</font><font color="#0000ff">&lt;/li&gt;</font>
<font color="#000000">			</font><font color="#0000ff">&lt;li&gt;</font><font color="#000000">Lorem ipsum dolor sit amet...</font><font color="#0000ff">&lt;/li&gt;</font>
<font color="#000000">			</font><font color="#0000ff">&lt;li&gt;</font><font color="#000000">Lorem ipsum dolor sit amet...</font><font color="#0000ff">&lt;/li&gt;</font>
<font color="#000000">			</font><font color="#0000ff">&lt;li&gt;</font><font color="#000000">Lorem ipsum dolor sit amet...</font><font color="#0000ff">&lt;/li&gt;</font>
<font color="#000000">		</font><font color="#0000ff">&lt;/ul&gt;</font>
<font color="#000000">	</font><font color="#0000ff">&lt;/div&gt;</font>
<font color="#000000">	</font><font color="#008000">&lt;!--WELCOME TEXT ENDS--&gt;</font>
<font color="#000000">	</font>
<font color="#000000">	</font><font color="#008000">&lt;!--WELCOME IMAGE STARTS--&gt;</font>
<font color="#000000">	</font><font color="#0000ff">&lt;div </font><font color="#ff0000">id</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;welcome-image&quot;</font><font color="#0000ff">&gt;</font>
<font color="#000000">		</font><font color="#0000ff">&lt;img </font><font color="#ff0000">src</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;images/welcome_image.png&quot; </font><font color="#ff0000">alt</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;Welcome...&quot; </font><font color="#0000ff">/&gt;</font>
<font color="#000000">	</font><font color="#0000ff">&lt;/div&gt;</font>
<font color="#000000">	</font><font color="#008000">&lt;!--WELCOME IMAGE ENDS--&gt;</font>

<font color="#0000ff">&lt;/div&gt;</font>
<font color="#008000">&lt;!--WELCOME AREA ENDS--&gt;</font>
</font></pre>
</div>
<p>样式化欢迎区域 </p>
<p>26 现在样式化欢迎区域。复制以下代码到CSS中，后面有对代码的解释。</p>
<div class="mycode">
<pre><font face="微软雅黑">
<font color="#000000">#welcome {</font>
	<font color="#0000ff">float: </font><font color="#000000">left;</font>
	<font color="#0000ff">width: </font><font color="#000000">850px;</font>
	<font color="#0000ff">background-image: </font><font color="#ff0000">url</font><font color="#000000">(images/content_background.png);</font>
	<font color="#0000ff">background-repeat: </font><font color="#ff0000">no-repeat</font><font color="#000000">;</font>
	<font color="#0000ff">height: </font><font color="#000000">326px;</font>
	<font color="#0000ff">padding-top: </font><font color="#000000">40px;</font>
<font color="#000000">}</font>
<font color="#000000">h2 {</font>
	<font color="#0000ff">text-transform: </font><font color="#ff0000">uppercase</font><font color="#000000">;</font>
	<font color="#0000ff">color: </font><font color="#000000">#ffffff;</font>
	<font color="#0000ff">font-size: </font><font color="#000000">16px;</font>
	<font color="#0000ff">margin-bottom: </font><font color="#000000">15px;</font>
<font color="#000000">}</font>
<font color="#000000">.heading-color2 {</font>
	<font color="#0000ff">color: </font><font color="#000000">#9a9a9a;</font>
<font color="#000000">}</font>
<font color="#000000">#welcome-text {</font>
	<font color="#0000ff">width: </font><font color="#000000">406px;</font>
	<font color="#0000ff">line-height: </font><font color="#000000">18px;</font>
	<font color="#0000ff">padding-top: </font><font color="#000000">50px;</font>
	<font color="#0000ff">float: </font><font color="#000000">left;</font>
	<font color="#0000ff">text-align: </font><font color="#ff0000">justify</font><font color="#000000">;</font>
<font color="#000000">}</font>
<font color="#000000">#welcome-text {</font>
	<font color="#0000ff">margin-bottom:</font><font color="#000000">10px;</font>
<font color="#000000">}</font>
<font color="#000000">.list li {</font>
	<font color="#0000ff">text-decoration: </font><font color="#ff0000">none</font><font color="#000000">;</font>
	<font color="#0000ff">background-image: </font><font color="#ff0000">url</font><font color="#000000">(images/bullet.png);</font>
	<font color="#0000ff">background-repeat: </font><font color="#ff0000">no-repeat</font><font color="#000000">;</font>
	<font color="#0000ff">list-style-type: </font><font color="#ff0000">none</font><font color="#000000">;</font>
	<font color="#0000ff">float: </font><font color="#000000">left;</font>
	<font color="#0000ff">width: </font><font color="#000000">180px;</font>
	<font color="#0000ff">padding-left: </font><font color="#000000">20px;</font>
	<font color="#0000ff">margin-top: </font><font color="#000000">10px;</font>
	<font color="#0000ff">background-position: </font><font color="#000000">left </font><font color="#ff0000">center</font><font color="#000000">;</font>
<font color="#000000">}</font>
<font color="#000000">#welcome-image {</font>
	<font color="#0000ff">float: </font><font color="#000000">right;</font>
	<font color="#0000ff">height: </font><font color="#000000">326px;</font>
	<font color="#0000ff">width: </font><font color="#000000">427px;</font>
<font color="#000000">}</font>
</font></pre>
</div>
<p>让我们来详解一下上面的代码。首先，我们通过background属性（content_background.png）给#welcome加入渐变背景，并且是不重复的</p>
<p>（repeat: no-repeat）。让后给这个div一个固定的宽度高度；宽度为模板内容宽度（850px）,高度为欢迎图片的高度（236px）。</p>
<p>通过text-transform属性让&lt;h2&gt;内的文字大写。将‘yourwebsite’包裹在class为heading-color2的span中，赋予其不同的颜色。</p>
<p>无序列表加入类list，然后把背景设置为bullet.png，通过list-style-type设为none去掉默认列表项前面的圆点。</p>
<p>最后，为了让#welcome-image在#welcome-text的右边显示，我们将其向右浮动，给定固定的宽度（在浮动元素中常用）。同样给welcome_image.png一个固</p>
<p>定的宽度高度值。</p>
<h5>3D分割线切片</h5>
<p>27 对于3D分割线，我打算通过加入类为separator的div，可以实现复用。使用矩形选框工具（M）选定区域宽度不能大于850px，高度不能超出3D分割线本身的大小。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image053" border="0" alt="clip_image053" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image053.jpg" width="554" height="188" /></p>
<p>28 用之前的方法将选区存为images目录下的separator.png。</p>
<h5>3D分割线转换成代码</h5>
<p>29 对于分割线的HTML和CSS相当简单。在index.html中#welcome下面插入div。将&amp;nbsp;放入.separator的div中。</p>
<div class="mycode">
<pre><font face="微软雅黑">
<font color="#008000">&lt;!--WELCOME AREA ENDS--&gt;</font>

<font color="#000000">	</font><font color="#008000">&lt;!--SEPARATOR STARTS--&gt;</font>
<font color="#000000">	</font><font color="#0000ff">&lt;div&gt;</font><font color="#008080">&amp;nbsp;</font><font color="#0000ff">&lt;/div&gt;</font>
<font color="#000000">	</font><font color="#008000">&lt;!--SEPARATOR ENDS--&gt;</font>
</font></pre>
</div>
<p>30 CSS文件中加入如下代码。</p>
<div class="mycode">
<pre><font face="微软雅黑">
<font color="#000000">.separator {</font>
	<font color="#0000ff">background-image: </font><font color="#ff0000">url</font><font color="#000000">(images/separator.png);</font>
	<font color="#0000ff">background-repeat: </font><font color="#ff0000">no-repeat</font><font color="#000000">;</font>
	<font color="#0000ff">float: </font><font color="#000000">left;</font>
	<font color="#0000ff">height: </font><font color="#000000">17px;</font>
	<font color="#0000ff">width: </font><font color="#000000">850px;</font>
	<font color="#0000ff">margin-top: </font><font color="#000000">20px;</font>
	<font color="#0000ff">margin-bottom: </font><font color="#000000">20px;</font>
<font color="#000000">}</font>
</font></pre>
</div>
<p>我们将.separator的background-image设定为separator.png。给定宽度850，然后向左浮动。height值等于separator.png的高度。然后给顶部和底部</p>
<p>margin设为20px，让它们彼此之间有一定的间歇。</p>
<h5>侧边栏切片</h5>
<p>31 对于侧边栏，我们仅需要侧边栏框。这个教程中侧边栏框大小是固定的，但是如果需要可以很容易的扩展（这部分叫给大家自己完成）。使用矩形选框工具（M）选定这个侧边栏框；我的</p>
<p>选定范围是<strong>259 x 259px</strong>.</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image054" border="0" alt="clip_image054" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image054.jpg" width="554" height="404" /></p>
<p>32 存为images目录下的<strong>contentbox.png</strong><strong>。</strong></p>
<p>33 使用矩形选框工具，设定宽度为1px，高度为2px。选定文字之间的分割线部分。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image055" border="0" alt="clip_image055" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image055.jpg" width="554" height="404" /></p>
<p>32 和往常一样，存为images目录下的<strong>divider.png </strong>。选定很小是因为下面将通过CSS将其水平重复。</p>
<h5>编写侧边栏HTML代码</h5>
<p>35 在.separator层下面，是我们的#sidebar，将&lt;h3&gt;作为侧边栏标题。然后给无序列表加入类sidebar-list使样式可以自定义。</p>
<div class="mycode">
<pre><font face="微软雅黑">
<font color="#008000">&lt;!--SIDEBAR STARTS--&gt;</font>
<font color="#0000ff">&lt;div </font><font color="#ff0000">id</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;sidebar&quot;</font><font color="#0000ff">&gt;</font>
<font color="#000000">	</font><font color="#0000ff">&lt;h3&gt;</font><font color="#000000">lorem ipsum dolor</font><font color="#0000ff">&lt;/h3&gt;</font>
<font color="#000000">	</font><font color="#0000ff">&lt;ul&gt;</font>
<font color="#000000">		</font><font color="#0000ff">&lt;li&gt;</font><font color="#000000">Lorem ipsum dolor sit amet, consectetur sit adipiscding...</font><font color="#0000ff">&lt;/li&gt;</font>
<font color="#000000">		</font><font color="#0000ff">&lt;li&gt;</font><font color="#000000">Lorem ipsum dolor sit amet, consectetur sit adipiscding...</font><font color="#0000ff">&lt;/li&gt;</font>
<font color="#000000">		</font><font color="#0000ff">&lt;li&gt;</font><font color="#000000">Lorem ipsum dolor sit amet, consectetur sit adipiscding...</font><font color="#0000ff">&lt;/li&gt;</font>
<font color="#000000">	</font><font color="#0000ff">&lt;/ul&gt;</font>
<font color="#0000ff">&lt;/div&gt;</font>
<font color="#008000">&lt;!--SIDEBAR ENDS--&gt;</font>
</font></pre>
</div>
<p>通过CSS样式化侧边栏 </p>
<p>36 CSS中加入如下代码</p>
<div class="mycode">
<pre><font face="微软雅黑">
<font color="#000000">#sidebar {</font>
	<font color="#0000ff">float: </font><font color="#000000">left;</font>
	<font color="#0000ff">height: </font><font color="#000000">209px;</font>
	<font color="#0000ff">width: </font><font color="#000000">219px;</font>
	<font color="#0000ff">background-image: </font><font color="#ff0000">url</font><font color="#000000">(images/contentbox.png);</font>
	<font color="#0000ff">background-repeat: </font><font color="#ff0000">no-repeat</font><font color="#000000">;</font>
	<font color="#0000ff">padding-top: </font><font color="#000000">20px;</font>
	<font color="#0000ff">padding-right: </font><font color="#000000">20px;</font>
	<font color="#0000ff">padding-bottom: </font><font color="#000000">30px;</font>
	<font color="#0000ff">padding-left: </font><font color="#000000">20px;</font>
<font color="#000000">}</font>
<font color="#000000">h3 {</font>
	<font color="#0000ff">text-transform: </font><font color="#ff0000">uppercase</font><font color="#000000">;</font>
	<font color="#0000ff">color: </font><font color="#000000">#ffffff;</font>
	<font color="#0000ff">text-align: </font><font color="#ff0000">center</font><font color="#000000">;</font>
	<font color="#0000ff">margin-bottom: </font><font color="#000000">20px;</font>
	<font color="#0000ff">font-size: </font><font color="#000000">12px;</font>
<font color="#000000">}</font>
<font color="#000000">.sidebar-list li {</font>
	<font color="#0000ff">list-style-type: </font><font color="#ff0000">none</font><font color="#000000">;</font>
	<font color="#0000ff">margin-top: </font><font color="#000000">10px;</font>
	<font color="#0000ff">padding-bottom: </font><font color="#000000">10px;</font>
	<font color="#0000ff">background-image: </font><font color="#ff0000">url</font><font color="#000000">(images/divider.png);</font>
	<font color="#0000ff">background-repeat: </font><font color="#ff0000">repeat-x</font><font color="#000000">;</font>
	<font color="#0000ff">background-position: </font><font color="#000000">bottom;</font>
<font color="#000000">}</font>
</font></pre>
</div>
<p>我们给#sidebar和contentbox.png一样的宽度高度。然后向左浮动，保证内容居左。同样设定background-image为contentbox.png。</p>
<p>通过text-transform将h3文字大小，通过text-align让文字居中。</p>
<p>最后通过list-style-type取值为none去掉.sidebar-list列表项的默认圆点，然后设定background-image为divider.png，水平重复</p>
<p>(repeat-x)。然后给定一些margin和padding值，让他们之间留些空间。</p>
<p>内容区域转换为代码 </p>
<p>37 内容区域相对简单，因为只包含了一些段落和标题。在#content层中，加入二级标题(&lt;h2&gt;)，然后通过span.heading-color2给第二部分的文字添加不同</p>
<p>的颜色。填充段落可以用<a href="http://www.lipsum.com/">lorem ipsum</a>无意义文本。HTML代码如下。</p>
<div class="mycode">
<pre><font face="微软雅黑">
<font color="#008000">&lt;!--CONTENT STARTS--&gt;</font>
<font color="#0000ff">&lt;div </font><font color="#ff0000">id</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;content&quot;</font><font color="#0000ff">&gt;</font>
<font color="#000000">	</font><font color="#0000ff">&lt;h2&gt;</font><font color="#000000">welcome to </font><font color="#0000ff">&lt;span&gt;</font><font color="#000000">yourwebsite!</font><font color="#0000ff">&lt;/span&gt;&lt;/h2&gt;</font>
<font color="#000000">	</font><font color="#0000ff">&lt;p&gt;</font><font color="#000000">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque.</font><font color="#0000ff">&lt;/p&gt;</font>
<font color="#000000">	</font><font color="#0000ff">&lt;p&gt;</font><font color="#000000">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque.</font><font color="#0000ff">&lt;/p&gt;</font>
<font color="#000000">	</font><font color="#0000ff">&lt;p&gt;</font><font color="#000000">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque.</font><font color="#0000ff">&lt;/p&gt;</font>
<font color="#0000ff">&lt;/div&gt;</font>
<font color="#008000">&lt;!--CONTENT ENDS--&gt;</font>
</font></pre>
</div>
<p>内容区域样式化 </p>
<p>38 #content层加入以下代码。</p>
<div class="mycode">
<pre><font face="微软雅黑">
<font color="#000000">#content {</font>
	<font color="#0000ff">float: </font><font color="#000000">right;</font>
	<font color="#0000ff">width: </font><font color="#000000">550px;</font>
	<font color="#0000ff">text-align: </font><font color="#ff0000">justify</font><font color="#000000">;</font>
<font color="#000000">}</font>
<font color="#000000">#content p {</font>
	<font color="#0000ff">margin-bottom: </font><font color="#000000">10px;</font>
<font color="#000000">}</font>
</font></pre>
</div>
<p>为了让#content在右边显示，我们将其向右浮动，然后给定一个固定的宽度。不给定一个固定的高度的原因是我们想通过内部文本来控制高度。然后给&lt;p&gt;加入顶部</p>
<p>和底部margin让它们之间留有空间（因为之前我们已经将它们都归零了，这步是必须的）。</p>
<h5>页脚切片</h5>
<p>39 就快要结束了，让我们继续！使用矩形选框工具，大小850px × 60px将也叫背景图片选定。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image056" border="0" alt="clip_image056" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image056.gif" width="554" height="183" /></p>
<p>页脚转换成代码 </p>
<p>40 页脚很好转换成代码：我们之需要之前创建的#footer。在#footer层中，我们使用&lt;p&gt;加入一些版权文字。代码如下：</p>
<div class="mycode">
<pre><font face="微软雅黑">
<font color="#008000">&lt;!--FOOTER STARTS--&gt;</font>
<font color="#0000ff">&lt;div </font><font color="#ff0000">id</font><font color="#0000ff">=</font><font color="#ff00ff">&quot;footer&quot;</font><font color="#0000ff">&gt;</font>
<font color="#000000">	</font><font color="#0000ff">&lt;p&gt;</font><font color="#000000">Copyright </font><font color="#008080">&amp;copy;</font><font color="#000000"> Six Revisions - Design By Richard Carpenter</font><font color="#0000ff">&lt;/p&gt;</font>
<font color="#0000ff">&lt;/div&gt;</font>
<font color="#008000">&lt;!--FOOTER ENDS--&gt;</font>
</font></pre>
</div>
<p>将页脚样式化 </p>
<p>41 加入如下代码。</p>
<div class="mycode">
<pre><font face="微软雅黑">
<font color="#000000">#footer {</font>
	<font color="#0000ff">float: </font><font color="#000000">left;</font>
	<font color="#0000ff">width: </font><font color="#000000">850px;</font>
	<font color="#0000ff">background-image: </font><font color="#ff0000">url</font><font color="#000000">(images/footer.png);</font>
	<font color="#0000ff">background-repeat: </font><font color="#ff0000">no-repeat</font><font color="#000000">;</font>
	<font color="#0000ff">height: </font><font color="#000000">60px;</font>
	<font color="#0000ff">margin-top: </font><font color="#000000">40px;</font>
	<font color="#0000ff">padding-top: </font><font color="#000000">25px;</font>
	<font color="#0000ff">text-align: </font><font color="#ff0000">center</font><font color="#000000">;</font>
<font color="#000000">}</font>
</font></pre>
</div>
<p>我们将#footer层的background-image属性设置为footer.png；向左浮动；通过no-repeat保证背景图的不重复。#footer宽度高度大小和footer.png相</p>
<p>等。然后在顶部通过margin给出一定空间。</p>
<p>完成！ </p>
<p>我们做完了！谢谢阅读本教程，我很期待大家的评论和问题！如果大家做的不错，最终效果应该像这样：</p>
<p>（点击图片查看<a href="http://sixrevisions.com/demo/minimal_modern_layout/index.html">在线demo</a>）</p>
<p><a href="http://sixrevisions.com/demo/minimal_modern_layout/index.html"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image041[1]" border="0" alt="clip_image041[1]" src="http://blog.acmind.com/wp-content/uploads/2009/12/clip_image0411.jpg" width="554" height="408" /></a></p>
<p>下载<a href="http://blog.acmind.com/wp-content/uploads/myhuge/minimal-modern-portfolio-psd_demo.rar" target="_blank">相关文件</a></p>
<p>&#160;</p>
<p>摘自：<a title="http://techguru.cn/design-a-minimal-and-modern-portfolio-layout-in-photoshop" href="http://techguru.cn/design-a-minimal-and-modern-portfolio-layout-in-photoshop">http://techguru.cn/design-a-minimal-and-modern-portfolio-layout-in-photoshop</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.acmind.com/archives/1686/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>值得关注的原型设计软件——Balsamiq Mockups</title>
		<link>http://blog.acmind.com/archives/1628</link>
		<comments>http://blog.acmind.com/archives/1628#comments</comments>
		<pubDate>Wed, 09 Dec 2009 09:41:51 +0000</pubDate>
		<dc:creator>笑谈</dc:creator>
				<category><![CDATA[设计技巧]]></category>
		<category><![CDATA[原型]]></category>
		<category><![CDATA[产品]]></category>
		<category><![CDATA[balsamiq]]></category>
		<category><![CDATA[设计]]></category>
		<category><![CDATA[mockups]]></category>

		<guid isPermaLink="false">http://blog.acmind.com/archives/1628</guid>
		<description><![CDATA[作为一个网站设计人员，最难的一般存在于二个阶段：

针对用户——需求沟通及雏形展示的迭代过程； 
针对自己——雏形及UI设计的起始过程。 

这也是最为直接、直观、起始并终极的二个阶段。
这款名为Balsamiq Mockups的产品原型设计软件可以在很大程度上帮助你顺利解决这些问题。
经试用，Balsamiq Mockups有如下优点：

完全手绘风格：对于一名程序设计员，创意决定成败，这款软件的全手绘风格界面下，应该会点燃你的一丝创意灵感了吧！ 
黑白配色主体：花花绿绿的成品固然是最终，但在设计阶段却并不可取。一种简洁的配色可以让你更加关注于方案的主体，不至于杂乱无章而无从下手。 
控件资源丰富：基本上常用的控件类型都涵盖其中，并且软件本身也伴随着升级不是？！放心，够你用的。 
其他方面：包括操作便利性、中文支持、导出格式、平台、版本等，看图和看网站介绍就够了，不多说了。 

直接上些漂亮的截图：
 
 
 
 
 
 
 
怎么样，很独特吧，有兴趣的快去Balsamiq Mockups 官网试用一下，包括在线版本。
尽管国内用户对于国外软件的支付很不适应，但Balsamiq也为用户提供了免费获得注册码的机会，这是一个非常聪明的做法，毕竟已经不是“酒香不怕巷子深”的时代了，网络、网民的宣传力量是无穷的，包括这种营销策略，很多老守田园的经营者们也值得借鉴与学习一下。
写完本文，博主也尝试去申请一个注册码，期待Balsamiq的诚信与效率。申请成功与否我会通报给大家，但绝不会公布注册码，请大家不要跟帖索取，尊重与诚信都要求我们珍惜与捍卫。
申请状态反馈：
写博后开始申请，发邮件时间2009年12月9日18:04，收到邮件时间2009年12月10日09:26，不到16个小时，可以说Balsamiq反应很迅速，企业反应与执行力值得称道和学习。注册完毕，一切OK。
再次规劝想使用的朋友自己去申请，顺便复习一下英语也好。
]]></description>
			<content:encoded><![CDATA[<p>作为一个网站设计人员，最难的一般存在于二个阶段：</p>
<ol>
<li>针对用户——需求沟通及雏形展示的迭代过程； </li>
<li>针对自己——雏形及UI设计的起始过程。 </li>
</ol>
<p>这也是最为直接、直观、起始并终极的二个阶段。</p>
<p>这款名为<a href="http://www.balsamiq.com" target="_blank">Balsamiq Mockups</a>的产品原型设计软件可以在很大程度上帮助你顺利解决这些问题。</p>
<p>经试用，<a href="http://www.balsamiq.com" target="_blank">Balsamiq Mockups</a>有如下优点：</p>
<ol>
<li>完全手绘风格：对于一名程序设计员，创意决定成败，这款软件的全手绘风格界面下，应该会点燃你的一丝创意灵感了吧！ </li>
<li>黑白配色主体：花花绿绿的成品固然是最终，但在设计阶段却并不可取。一种简洁的配色可以让你更加关注于方案的主体，不至于杂乱无章而无从下手。 </li>
<li>控件资源丰富：基本上常用的控件类型都涵盖其中，并且软件本身也伴随着升级不是？！放心，够你用的。 </li>
<li>其他方面：包括操作便利性、中文支持、导出格式、平台、版本等，看图和看网站介绍就够了，不多说了。 </li>
</ol>
<p>直接上些漂亮的截图：</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/12/wiki.gif" class="highslide-image" onclick="return hs.expand(this);"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="wiki" border="0" alt="wiki" src="http://blog.acmind.com/wp-content/uploads/2009/12/wiki_thumb.gif" width="604" height="479" /></a> </p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/12/bahoomaps.gif" class="highslide-image" onclick="return hs.expand(this);"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="bahoomaps" border="0" alt="bahoomaps" src="http://blog.acmind.com/wp-content/uploads/2009/12/bahoomaps_thumb.gif" width="604" height="462" /></a> </p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/12/boogle.gif" class="highslide-image" onclick="return hs.expand(this);"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="boogle" border="0" alt="boogle" src="http://blog.acmind.com/wp-content/uploads/2009/12/boogle_thumb.gif" width="604" height="395" /></a> </p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/12/iPhoneExamples.png" class="highslide-image" onclick="return hs.expand(this);"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="iPhoneExamples" border="0" alt="iPhoneExamples" src="http://blog.acmind.com/wp-content/uploads/2009/12/iPhoneExamples_thumb.png" width="604" height="362" /></a> </p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/12/mytube.gif" class="highslide-image" onclick="return hs.expand(this);"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="mytube" border="0" alt="mytube" src="http://blog.acmind.com/wp-content/uploads/2009/12/mytube_thumb.gif" width="604" height="539" /></a> </p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/12/bownce.gif" class="highslide-image" onclick="return hs.expand(this);"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="bownce" border="0" alt="bownce" src="http://blog.acmind.com/wp-content/uploads/2009/12/bownce_thumb.gif" width="333" height="484" /></a> </p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/12/2009101600181113c32.png" class="highslide-image" onclick="return hs.expand(this);"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="2009101600181113c32" border="0" alt="2009101600181113c32" src="http://blog.acmind.com/wp-content/uploads/2009/12/2009101600181113c32_thumb.png" width="604" height="322" /></a> </p>
<p>怎么样，很独特吧，有兴趣的快去<a href="http://www.balsamiq.com" target="_blank">Balsamiq Mockups 官网</a>试用一下，包括在线版本。</p>
<p>尽管国内用户对于国外软件的支付很不适应，但Balsamiq也为用户提供了免费获得注册码的机会，这是一个非常聪明的做法，毕竟已经不是“酒香不怕巷子深”的时代了，网络、网民的宣传力量是无穷的，包括这种营销策略，很多老守田园的经营者们也值得借鉴与学习一下。</p>
<p>写完本文，博主也尝试去申请一个注册码，期待Balsamiq的诚信与效率。申请成功与否我会通报给大家，但绝不会公布注册码，请大家不要跟帖索取，尊重与诚信都要求我们珍惜与捍卫。</p>
<p><strong><font color="#ffffff">申请状态反馈：</font></strong></p>
<p><strong><font color="#ffffff">写博后开始申请，发邮件时间2009年12月9日18:04，收到邮件时间2009年12月10日09:26，不到16个小时，可以说Balsamiq反应很迅速，企业反应与执行力值得称道和学习。注册完毕，一切OK。</font></strong></p>
<p><strong><font color="#ffffff">再次规劝想使用的朋友自己去申请，顺便复习一下英语也好。</font></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.acmind.com/archives/1628/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>实用的Web工具Clixpy: 捕获用户行为活动</title>
		<link>http://blog.acmind.com/archives/1128</link>
		<comments>http://blog.acmind.com/archives/1128#comments</comments>
		<pubDate>Wed, 03 Jun 2009 00:52:02 +0000</pubDate>
		<dc:creator>笑谈</dc:creator>
				<category><![CDATA[辅助工具]]></category>
		<category><![CDATA[clixpy]]></category>
		<category><![CDATA[用户]]></category>
		<category><![CDATA[行为]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[捕获]]></category>
		<category><![CDATA[活动]]></category>

		<guid isPermaLink="false">http://blog.acmind.com/?p=1128</guid>
		<description><![CDATA[作为设计师&#38;开发者，我们会尽可能为最终用户制作最容易用的网站，这可以根据内容优先关系等使用不同的大小&#38;颜色建设一个较复杂的系统。
但是，无论我们做什么，我们需要找出这些是不是在工作。因为有的时候，用户会给你带来意外与惊讶，你建设的最易用的网站对他们来说是怎样的不容易。

Clixpy, 一款非常容易安装使用的可用性web测试工具, 对找到用户是如何浏览一个网站十分有帮助.他能记录下以下的活动:

鼠标动作
点击
滚动
表单输入

统计应用可以给你提供访问者的浏览路线。但是，它并不能提供在这条路线上发生的事情及为什么读者选择这条路线，实际上这是非常重要的问题。这是正是Clixpy所能提供。
如何建立与使用?
将JavaScript代码插入到网站的脚部，Clixpy便可以自动检测到并开始跟踪记录（使用代码预防被其他网站使用的意外发生是非常棒的）。
从应用程序的管理界面可以通过域名，日期或者身份筛会话记录（新的捕捉，atched ones，等等）
在查看会话前，你能 atched oneshave（找不到很好的翻译方法）强大的细节，Clixpy 显示综合浏览量，浏览的哪些网页，持续的时间&#38;捕获的用户+浏览器的详细资料。它还可以让你再任何捕获上保存并标记以便以后分析。

通过点击任何所捕获的会话，Clixpy 赠予你读者在网站上相同的体验。
你也可以在捕获过程的中定义限制，比如“捕获前二十个会话”或者&#34;任何时候停止整个捕获&#34;。
预期的结果是什么?
在安装Clixpy &#38; 捕获用户行为一段时间后，分析结果的时候到了，简单的如：

观察此段时间
看一看你的用户觉得困难或者容易使用的特点是哪个
做笔记
&#38;采取行动, 改善你能提供更好的用户体验的部分。然后再仔细检查，使用Clixpy重新捕获网页，看一看更新是不是能真的起作用。

&#160;
摘自：http://www.yeeyan.com/articles/view/61966/44195
]]></description>
			<content:encoded><![CDATA[<p>作为设计师&amp;开发者，我们会尽可能为最终用户制作最容易用的网站，这可以根据内容优先关系等使用不同的大小&amp;颜色建设一个较复杂的系统。</p>
<p>但是，无论我们做什么，<b>我们需要找出这些是不是在工作。</b>因为有的时候，<b>用户会给你带来意外与惊讶，</b>你建设的最易用的网站对他们来说是怎样的不容易。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image00115.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image001" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="196" alt="clip_image001" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image001-thumb13.jpg" width="500" border="0" /></a></p>
<p><a href="http://clixpy.com/"><b>Clixpy</b></a>, 一款非常容易安装使用的<b>可用性web测试工具</b>, 对找到用户是如何浏览一个网站十分有帮助.他能记录下以下的活动:</p>
<ul>
<li>鼠标动作</li>
<li>点击</li>
<li>滚动</li>
<li>表单输入</li>
</ul>
<p>统计应用可以给你提供访问者的浏览路线。但是，它并不能提供在这条路线上发生的事情及为什么读者选择这条路线，实际上这是非常重要的问题。<b>这是正是Clixpy所能提供。</b></p>
<p><b>如何建立与使用?</b></p>
<p>将JavaScript代码插入到网站的脚部，<b>Clixpy</b>便可以自动检测到并开始跟踪记录（使用代码预防被其他网站使用的意外发生是非常棒的）。</p>
<p>从应用程序的管理界面可以通过域名，日期或者身份筛会话记录（新的捕捉，atched ones，等等）</p>
<p>在查看会话前，你能 atched oneshave（找不到很好的翻译方法）强大的细节<b>，Clixpy</b> 显示综合浏览量，浏览的哪些网页，持续的时间&amp;捕获的用户+浏览器的详细资料。它还可以让你再任何捕获上保存并标记以便以后分析。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image00214.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image002" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="49" alt="clip_image002" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image002-thumb12.jpg" width="500" border="0" /></a></p>
<p>通过点击任何所捕获的会话，<b>Clixpy 赠予你读者在网站上相同的体验。</b></p>
<p>你也可以在捕获过程的中定义限制，比如“捕获前二十个会话”或者&quot;任何时候停止整个捕获&quot;。</p>
<p><b>预期的结果是什么?</b></p>
<p>在安装<b>Clixpy</b> &amp; 捕获用户行为一段时间后，分析结果的时候到了，简单的如：</p>
<ul>
<li>观察此段时间</li>
<li>看一看你的用户觉得困难或者容易使用的特点是哪个</li>
<li>做笔记</li>
<li>&amp;<b>采取行动</b>, 改善<b>你能提供更好的用户体验</b>的部分。然后再仔细检查，使用<b>Clixpy</b>重新捕获网页，看一看更新是不是能真的起作用。</li>
</ul>
<p>&#160;</p>
<p>摘自：<a title="http://www.yeeyan.com/articles/view/61966/44195" href="http://www.yeeyan.com/articles/view/61966/44195">http://www.yeeyan.com/articles/view/61966/44195</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.acmind.com/archives/1128/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在现代网页设计中的模态窗口</title>
		<link>http://blog.acmind.com/archives/1062</link>
		<comments>http://blog.acmind.com/archives/1062#comments</comments>
		<pubDate>Wed, 03 Jun 2009 00:34:15 +0000</pubDate>
		<dc:creator>笑谈</dc:creator>
				<category><![CDATA[设计技巧]]></category>
		<category><![CDATA[现代]]></category>
		<category><![CDATA[窗口]]></category>
		<category><![CDATA[网页]]></category>
		<category><![CDATA[模态]]></category>

		<guid isPermaLink="false">http://blog.acmind.com/?p=1062</guid>
		<description><![CDATA[网页设计本质上讲就是把信息组织成一种可读，实用，功能性的并且可以方便的格式。良好的内容组织是至关重要的，当你在建立一个网站的时候你需要一个强大的布局。 您可以使用众多的界面元素和结构去组织内容，如jQuery内容滑动器（slider）和模态窗口（modal windows。 从根本上说，就是窗口浮动在网页上。
模态窗口有许多优点。 例如，当一个模态窗口包含一个较小的元素时，用户并不需要加载一个完成的全新新页面就可以访问它。（达到同样效果的另一种方式来是使用基于AJAX的标签） 。 通过模态窗口，您提高网站的可用性。一次又一次的加载网页是会令大多数用户感到烦扰，因此避免这种状况绝对是一件好事。模态窗口也可以为您以节省空间通过避免使用不需要出现在主页面的大元素。 例如，您只需提供一个链接，缩略图或某种按钮， 而不是把完整的视频的放在网页上。
在这篇文章里面， 我们将了解建立多态窗口的最佳做法和趋势。我们也会提供许多良好的模态窗口的例子和一些脚本来帮助您开始建设他们。
你可以对下面的文章也感兴趣：

30 Scripts For Galleries, Slideshows and Lightboxes&#160; 
How To Use Help Elements To Improve Your Designs 
8 Layout Solutions To Improve Your Designs 
Designing Drop-Down-Menus: Examples and Best Practices 
Breadcrumbs in Web Design 

When to Use Modal Windows 何时使用模态的Windows
模态窗口是一个很好的结构元素，但是他们并不一定适合所有的内容或媒体类型。这里有几个元素素，您应该考虑使用模态窗口。
Lightbox for Images/Videos&#160; 为了图片/视频的lightbox 
最明显的使用模态窗口的是lightbox，用一种干净和实用的方式来展示图片和视频。 使用lightbox展示图片，用户不需要只是为了一个单一的图片或视频而加载新的页面。模态窗口也在内容布局中节省了空间，使您只显示图片或视频的缩略图，点击缩略图，它的模态窗口打开。 使用缩略图代替整个元素，你需要少得多的空间而且布局看起来更有组织。
此外，你通常会模糊或渐暗模态窗口后面的的背景，把焦点放在图片或视频本身，从而创造一个良好的环境使访问者可以查看媒体。 对褪色，模糊模态窗口的背景的细节，看下面给出的样式实例。
当使用了lightbox来实现一个图像画廊，一定要确定链接每个图像到相同的lightbox，提供“下一个”和“上一个”的按钮，使用户可以方便的浏览的一组图片。用户可以不关闭并重新打开模态窗口，以查看画廊中的每一幅画。
Contact [...]]]></description>
			<content:encoded><![CDATA[<p>网页设计本质上讲就是把信息组织成一种可读，实用，功能性的并且可以方便的格式。良好的内容组织是至关重要的，当你在建立一个网站的时候你需要一个强大的布局。 您可以使用众多的界面元素和结构去组织内容，如jQuery内容滑动器（slider）和<b>模态窗口</b>（modal windows。 从根本上说，就是窗口浮动在网页上。</p>
<p>模态窗口有许多优点。 例如，当一个模态窗口包含一个较小的元素时，用户并不需要加载一个完成的全新新页面就可以访问它。（达到同样效果的另一种方式来是使用基于AJAX的标签） 。 通过模态窗口，您提高网站的可用性。一次又一次的加载网页是会令大多数用户感到烦扰，因此避免这种状况绝对是一件好事。模态窗口也可以为您以节省空间通过避免使用不需要出现在主页面的大元素。 例如，您只需提供一个链接，缩略图或某种按钮， 而不是把完整的视频的放在网页上。</p>
<p>在这篇文章里面， 我们将了解<b>建立多态窗口的最佳做法和趋势</b>。我们也会提供许多良好的模态窗口的例子和一些脚本来帮助您开始建设他们。</p>
<p>你可以对下面的文章也感兴趣：</p>
<ul>
<li><a href="http://www.smashingmagazine.com/2007/05/18/30-best-solutions-for-image-galleries-slideshows-lightboxes/">30 Scripts For Galleries, Slideshows and Lightboxes&#160; </a></li>
<li><a href="http://www.smashingmagazine.com/2009/04/23/help-elements-design-showcase/">How To Use Help Elements To Improve Your Designs</a> </li>
<li><a href="http://www.smashingmagazine.com/2009/05/19/8-layout-solutions-to-improve-your-designs/">8 Layout Solutions To Improve Your Designs</a> </li>
<li><a href="http://www.smashingmagazine.com/2009/03/24/designing-drop-down-menus-examples-and-best-practices/">Designing Drop-Down-Menus: Examples and Best Practices</a> </li>
<li><a href="http://www.smashingmagazine.com/2009/03/17/breadcrumbs-in-web-design-examples-and-best-practices-2/">Breadcrumbs in Web Design</a> </li>
</ul>
<p><b>When to Use Modal Windows </b><b>何时使用模态的Windows</b></p>
<p>模态窗口是一个很好的结构元素，但是他们并不一定适合所有的内容或媒体类型。这里有几个元素素，您<i>应该</i>考虑使用模态窗口。</p>
<p><b>Lightbox for Images/Videos&#160; </b><b>为了图片/视频的lightbox </b></p>
<p>最明显的使用模态窗口的是lightbox，用一种干净和实用的方式来展示图片和视频。 使用lightbox展示图片，用户不需要只是为了一个单一的图片或视频而加载新的页面。模态窗口也在内容布局中节省了空间，使您只显示图片或视频的缩略图，点击缩略图，它的模态窗口打开。 使用缩略图代替整个元素，你需要少得多的空间而且布局看起来更有组织。</p>
<p>此外，你通常会模糊或渐暗模态窗口后面的的背景，把焦点放在图片或视频本身，从而创造一个良好的环境使访问者可以查看媒体。 对褪色，模糊模态窗口的背景的细节，看下面给出的样式实例。</p>
<p>当使用了lightbox来实现一个图像画廊，一定要确定链接每个图像到相同的lightbox，提供“下一个”和“上一个”的按钮，使用户可以方便的浏览的一组图片。用户可以不关闭并重新打开模态窗口，以查看画廊中的每一幅画。</p>
<p><b>Contact Forms </b><b>联系表单</b></p>
<p>在模态窗口中的表单是一种常见的联系表单。模态窗口为了这个目的做的很好，是因为您不用为了这个功能建立一个完整的网页。 依据可用性来说，立即可用和容易找到对于联系表单是非常重要的。 使用浮动窗口，联系表单在每个页面是容易访问。联系表单一般很小，所以他们会相当不错组装在这些窗口中。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image00112.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image001" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image001" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image001-thumb11.jpg" width="470" border="0" /></a></p>
<p><b>Sign-Up/Log-In Forms </b><b>注册/登录 表单</b></p>
<p>你可以用一个模态窗口来代替一个单独的页面让用户登录和注册。这种方法可以让表单在每一个页面可用并且容易访问。 你可以包含一个登录创库在页面的标题的地方、</p>
<p><b>Alerts/Notices </b><b>警告/提示</b></p>
<p>当您想提醒用户一个关键功能或行动将发生，最好的方法是通过一个模态窗口。当一个模态窗口在一个页面打开，用户不能忽视它，因为它将直接显示在屏幕中央，那里真是用户关注的地方。 此外，其余内容将褪色并禁用，因此用户什么都不能做，直到他们看到模太窗口然后单击关闭。在下面的截图中，您可以看到一个模态窗口被用来提醒用户将进行下载。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image00211.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image002" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image002" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image002-thumb10.jpg" width="470" border="0" /></a></p>
<p>请注意，你不应该使用模态窗口作为弹出的代替办法。请确定只有当当前会话中有很重要的事情发生的时候警示访问者。 在许多情况下，一个简单的褪色块布局回比一个模态窗口好得多。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image00212.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image002[1]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image002[1]" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0021-thumb.jpg" width="470" border="0" /></a></p>
<p><b>Help Elements/Tips&#160; </b><b>帮助元素/贴士</b></p>
<p>额外的帮助元素和提示内容是没有必要对于网站的功能和导航，所以你不想让他们占据空间并且放在主要内容里面。并不是所有的用户想要使用他们。 然而，他们需要放在谁想要使用它们就能轻易找的位置，因此使用模态窗口似乎可以合理地显示帮助内容和技巧。用户可以方便地打开和关闭它们，而且不需要把它们当作页面的内容和功能。</p>
<p>以下是一个很好的帮助元素在浮动窗口的例子。这个窗口远小于其他的我们已经看到，但它包含着类似的功能。例如，通过一个半透明的边界使视觉上分离并且有一个 “退出” （关闭）按钮在右上角。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0039.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image003" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image003" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image003-thumb9.jpg" width="470" border="0" /></a></p>
<p><b>Search Boxes </b><b>搜索框</b></p>
<p>这是一个不太常见的做法，但你会偶尔会看到模态窗口中包含搜索框。先进的搜索功能会占用了不少的空间，因此，您可以把它在一个浮动窗口以防止大搜索框占据大量空间。你可以在下面的截图看到这在实例中。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0044.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image004" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image004" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image004-thumb4.jpg" width="470" border="0" /></a></p>
<p><b>Embedding PDFs </b><b>嵌入PDFs</b></p>
<p>有时候你需要嵌入文件在你的网站上，如PDF格式的简历。 你可以使用模态窗口， 代替用户可以点击下载PDF到他们的电脑或其他的嵌入的PDF的方式，达到同样的目的。 以这种方式， PDF格式可以很容易地浏览，而不会影响用户体验的。通过模糊的背景，你也把重点放在你的PDF格式，提高了可用性。</p>
<p><b>Usability and Styling Practices </b><b>可用性和样式实例</b></p>
<p>下面列出的可用性和样式的做法和趋势，在你创建模态窗口的时候记得这些。</p>
<p><b>Blur and Fade Out Background of Window </b><b>模糊和渐暗窗口背景</b></p>
<p>对于可用性和样式最重要的是淡出浮动窗口后面的页面。你将会看到这样的实例几乎无处不在，最常于lightboxes用来显示媒体文件。 通过淡出网页，您将让用户所有的注意力集中在浮动窗口上。如果背景不淡出，用户甚至可能不会马上意识到窗口是“漂浮”的网页上面而不是部分的主要布局。一个窗口物理地浮在网页上的样子使增加了网站的维度。它看起来更整洁并且消除混乱。 总体而言，淡出提供窗口和页面所需的分隔度，增强了功能性和实用性。</p>
<p>确保淡出的程度，但留下一个轻微的不透明，使用户知道该网页并没有消失。例如，一个黑色淡出加上75 ％左右不透明效果就非常好。但是，对于网站的一个白色的背景，褪色的页面用白色并且一点点不透明，再加上使用落下式阴影。</p>
<p>有时你会看到一个模态窗口，并不淡出整个页面，而是具有很强的阴影来增加层次感。这就造成同样的效果，并提供了类似的视觉分离。你可以在下面的截图看到使用这种技术完美使用。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0056.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image005" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image005" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image005-thumb6.jpg" width="470" border="0" /></a></p>
<p><b>Exit Strategy: Button, Click Outside Window, Escape Key </b><b>退出策略：按钮，点击窗口外， 退出</b></p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0066.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image006" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image006" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image006-thumb6.jpg" width="470" border="0" /></a></p>
<p>为了提高功能性，始终提供一个退出按钮在窗口上面的角落里。标准做法是用一个简单的圆形带有“ X ”图形的按钮，这样做对于用户来说非常整洁并且相当明显。 在下面的lightbox中，你可以清楚地看到退出按钮。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image00611.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image006[1]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image006[1]" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0061-thumb.jpg" width="470" border="0" /></a></p>
<p>其他允许用户关闭模态窗口的方式是让他们点击窗口后面的页面，点击模态窗口中的显示元素或者使用Esc键。</p>
<p><b>Disable All Other Page Functions </b><b>禁用页面上其他所有功能</b></p>
<p>禁用窗口背后页面里的所有功能。 当模态窗口打开的时候，它应该是去焦点，并且没有按钮应该能够被点击。 浮动窗口应该跟其余内容分离开来，所以禁用页面能创建一个更好的分离。 保持页面滚动功能是一个好主意，不过，如果需要的话，用户至少应该有一些自由返回到页面。</p>
<p><b></b></p>
<p><b>Using Transition Effects </b><b>使用过渡效果</b></p>
<p>过渡效果的小细节，如果用正确的方式做看起来会很不错。一个很好的过渡效果是模态窗口的渐进渐出。但是，不要做的太过让点用户觉得烦。 保持渐变的简短但要稍微能注意到。</p>
<p>在下面的例子中，灰色的模糊背景渐进渐出，创造了非常好的效果。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0075.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image007" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image007" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image007-thumb5.jpg" width="470" border="0" /></a></p>
<p><b>Scripts, Tools and Plug-Ins For Lightboxes and Modal Windows</b></p>
<p><b>Lightboxes and Modal Window </b><b>的脚本， 工具 和插件</b></p>
<p>当你开始集成模态窗口的进程的时候，你可能需要一些东西来构建它。这里有11个出色的基于模态窗口的jQuery脚本和插件。 每个都有自己独特的特点和功能，所以查看他们所有的。</p>
<p><a href="http://fancy.klade.lv/home">Fancy Lightbo</a></p>
<p>这是一个比较好的Lightbox jQuery插件。 它很时尚并且非常具有功能性。它有整洁的风格，标记功能和网页很好的整合，并与AJAX结合。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0084.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image008" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image008" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image008-thumb4.jpg" width="470" border="0" /></a></p>
<p><a href="http://www.lokeshdhakar.com/projects/lightbox2/">Lightbox 2</a></p>
<p>这是原版的lightbox的脚本， 仅仅只是为了图片而创建的。 它简单的风格而且支持一组图片的浏览。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0095.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image009" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image009" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image009-thumb5.jpg" width="470" border="0" /></a></p>
<p><a href="http://www.dynamicdrive.com/dynamicindex4/facebox/index.htm">Facebook Image/Content Viewer</a></p>
<p>这有一个基于facebook浮动窗口很棒的脚本。 它支持图片和内容，并且用跟facebook非常著名的窗口相似的风格</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0104.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image010" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image010" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image010-thumb4.jpg" width="470" border="0" /></a></p>
<p><a href="http://woork.blogspot.com/2008/01/lightbox-using-mootools-and-pathfusion.html">Woork Mootools Lightbox</a></p>
<p>这是一个来自woork的很棒的教程，他指导你怎么创建一个简单的lightbox的脚本。这个脚本包含了支持一组图片和标签的特性。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0113.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image011" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image011" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image011-thumb3.jpg" width="470" border="0" /></a></p>
<p><a href="http://nyromodal.nyrodev.com/">nyroModal jQuery Plug-In</a></p>
<p>这个简单的窗口插件支持所有形式的媒体文件，包括ajax。 他也有很好的显示/隐藏的效果。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0124.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image012" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image012" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image012-thumb4.jpg" width="470" border="0" /></a></p>
<p><a href="http://nyromodal.nyrodev.com/">jQuery Alert Dialog</a></p>
<p>这个jQuery 插件是用来警告和对话的窗口。 它拥有众多的功能并且可以很好的传递信息给用户。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0135.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image013" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image013" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image013-thumb5.jpg" width="470" border="0" /></a></p>
<p><a href="http://stickmanlabs.com/lightwindow/">LightWindow</a></p>
<p>这里是一个有很多特性的综合性的lightbox的脚本， 例如嵌入pdf， 支持多个图片画廊， SWF执行等等。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0143.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image014" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image014" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image014-thumb3.jpg" width="470" border="0" /></a></p>
<p><a href="http://prototype-window.xilinus.com/">Prototype Window Class</a></p>
<p>另外一个深入系列的的脚本， 有各种不同的功能，例如对话框，登录窗口，ajax内容窗口，图片lightboxes 等。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0152.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image015" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image015" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image015-thumb2.jpg" width="470" border="0" /></a></p>
<p><a href="http://prototype-window.xilinus.com/">ThickBox 3.1</a></p>
<p>一个很流行的lightbox工具， Thickbox。 他支持图片，在线内容和AJAX。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0162.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image016" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image016" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image016-thumb2.jpg" width="470" border="0" /></a></p>
<p><a href="http://www.no-margin-for-errors.com/projects/prettyPhoto-jquery-lightbox-clone/">prettyPhoto</a></p>
<p>这是一个时尚的图片lightbox， 很好的支持图片集。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0172.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image017" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image017" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image017-thumb2.jpg" width="470" border="0" /></a></p>
<p><a href="http://www.flowplayer.org/tools/expose.html">jQuery Expose</a></p>
<p>这个是有一点不同于模态窗口的脚本。 他展示选中的HTML元素。 当你单击一个特定的元素， 页面剩下的元素会渐出。 这是一个很棒的模态窗口的替代品。 它也支持页面的渐出而是注意力集中在选中元素上。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0182.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image018" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image018" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image018-thumb2.jpg" width="470" border="0" /></a></p>
<p><b>Showcase of Modal Windows&#160; </b><b>模态窗口的展示</b></p>
<p><a href="http://listen.grooveshark.com/">Grooveshark</a>     <br />Grooveshark 是一个结构量和风格良好的应用。 模态窗口也无一例外，一个模态窗口， 被用在用户的注册登录的模块。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0193.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image019" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image019" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image019-thumb3.jpg" width="470" border="0" /></a></p>
<p><a href="http://digg.com/">Digg</a>     <br />Digg 是另外一个使用浮动窗口来注册和登录的用户生成的网站。登录的链接放在页面的标题处。注意一个半透明的边界被用来代替渐出和投影。这个边界提供了更多的视觉隔离感。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0201.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image020" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image020" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image020-thumb1.jpg" width="470" border="0" /></a></p>
<p><a href="http://www.apple.com/trailers/universal/fastandfurious/">Apple Movie Trailer</a></p>
<p>Apple 在很多地方使用模态窗口。 你可以看到一个窗口备用来观看电影预告片。 这个窗口建立的很好使得大的视屏文件不会影响到窗口的表现。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0214.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image021" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image021" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image021-thumb3.jpg" width="470" border="0" /></a></p>
<p><a href="http://www.apple.com/imac/design.html">Apple iMac: Design Gallery</a></p>
<p>另外一个Apple网站的模态窗口的例子。 它有非常简单干净但是强烈的投影来实现视觉隔离。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image022.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image022" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image022" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image022-thumb.jpg" width="470" border="0" /></a></p>
<p><a href="http://www.taoeffect.com/espionage/">Espionage</a></p>
<p>另外一个一个图片的lightbox的例子。 在这个例子中， 图片扩展到窗口的边缘， 并且推出按钮直接覆盖在图片上。 在这里 没有边界是必要的因为强烈的色彩对比</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0233.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image023" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image023" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image023-thumb3.jpg" width="470" border="0" /></a></p>
<p><a href="http://marketcircle.com/daylite/index.html">Daylite 3</a></p>
<p>一个很好备件渐出的窗口的例子。 多个页面内容被集成在一个单一的模态窗口中。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0241.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image024" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image024" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image024-thumb1.jpg" width="470" border="0" /></a></p>
<p><a href="http://www.behance.net/Gallery/Positive-Hype/55599">Behance</a></p>
<p>另外一个联系表单，这里有一个熟悉的“发送给朋友”的元素， 这个被警察放在模态窗口中。 因为网页有很深的背景色，一个淡的半透明的边界被用来做分隔。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0251.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image025" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image025" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image025-thumb1.jpg" width="470" border="0" /></a></p>
<p><a href="http://www.facebook.com/">Facebook</a></p>
<p>Facebook 有非常容易辨识的模态窗口。 这个包含信息链接到一个帮助元素在注册表单里。 并且， 一个很强的半透明边界。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0261.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image026" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image026" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image026-thumb1.jpg" width="470" border="0" /></a></p>
<p><a href="http://www.kissmetrics.com/">KISSmetrics</a></p>
<p>这是一个很棒的在模态窗口登录表单。 这个表单有良好的风格并且包含了帮助元素来提高可用性：只是因为登录窗口并不意味着你可以忽视可用性。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0272.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image027" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image027" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image027-thumb2.jpg" width="470" border="0" /></a></p>
<p><a href="http://www.nasibriyanilounge.com/">Nasi Briyani Lounge</a></p>
<p>另外一个登录表单。 这个有一点不同。他是用一个简单的弹出窗口代替一个完整的模态窗口。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0281.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image028" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image028" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image028-thumb1.jpg" width="470" border="0" /></a></p>
<p><a href="http://www.pixelightcreative.com/">Pixelight Creative</a></p>
<p>一个自由职业者网站里的lightbox。 当你单击每一个工作档案，一个大一点的图被打开在lightbox</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0291.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image029" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image029" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image029-thumb1.jpg" width="470" border="0" /></a></p>
<p><a href="http://supermegaultragroovy.com/products/Capo/">Capo</a></p>
<p>另外一个时尚的窗口， 这是一个软件漫游的视频，这是一个普通的例子。 它和包含了一个简单的边界和投影。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0301.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image030" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image030" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image030-thumb1.jpg" width="470" border="0" /></a></p>
<p><a href="http://sourcen.accept-ideas.com/">Accept-Idea</a></p>
<p>另外一个浮动窗口附属于搜索窗口。 当你输入一个查询，结果显示在模态窗口里。这个窗口有基本的功能， 包括一个推出按钮和边界。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0311.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image031" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image031" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image031-thumb1.jpg" width="470" border="0" /></a></p>
<p><a href="http://typedeskref.com/">The Typographic Desk Reference</a></p>
<p>一个很简单的模态窗口，用强阴影来增加深度。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0321.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image032" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image032" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image032-thumb1.jpg" width="470" border="0" /></a></p>
<p><a href="http://www.evernote.com/">Evernote Web Application</a></p>
<p>这个显示一个警告当你打开一个Everbote‘s 网页应用。 注意页面是怎么渐出的， 它是的所有的注意力集中在窗口内容中。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image033.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image033" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image033" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image033-thumb.jpg" width="470" border="0" /></a></p>
<p><a href="http://www.geticeberg.com/">Iceberg</a></p>
<p>另外一个在浮动窗口的登录表单。 着一个没有渐出和阴影而用一个边界来分隔。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0341.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image034" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image034" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image034-thumb1.jpg" width="470" border="0" /></a></p>
<p><a href="http://corp.viewzi.com/">Viewzi Corporate</a></p>
<p>一个漂亮风格的模态窗口。 注意干净的大腿处按钮在上角，大的填充和半透明背景。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image035.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image035" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image035" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image035-thumb.jpg" width="470" border="0" /></a></p>
<p><a href="http://www.mailchimp.com/">Mail Chimp</a></p>
<p>这个lightbox有半透明边界和页面的渐出。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0361.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image036" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image036" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image036-thumb1.jpg" width="470" border="0" /></a></p>
<p><a href="http://www.theresumator.com/home/tour/">The Resumator</a></p>
<p>注意这个怎么强烈的图片背景跟页面背景的对比。一个标签被用在这里而不是属于窗口， 创捷了很好的外观。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0371.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image037" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image037" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image037-thumb1.jpg" width="470" border="0" /></a></p>
<p><a href="http://www.checkoutapp.com/">Checkout App</a></p>
<p>一个风格很不错的图片模态窗口，这个窗口用一个投影来增加深度并且一个实心的边界提供给多的分隔感。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0381.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image038" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image038" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image038-thumb1.jpg" width="470" border="0" /></a></p>
<p><a href="http://www.pixelmator.com/">Pixelmator</a></p>
<p>另外一个很好的下载警告例子。 这个警告当下载开始的时候离开弹出，注意非常棒的样式， 就像窗口的轻微不透明。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0391.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image039" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image039" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image039-thumb1.jpg" width="470" border="0" /></a></p>
<p><a href="http://www.getballpark.com/">Ballpark</a></p>
<p>这里有一个视频的模态窗口， 通常用在公司和软件的网站里。你经常看到QuickTime 和 SW在模态窗口里，但是这个是嵌入一个Vimeo的视频。 并且有非常好的渐进和渐出效果，</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image040.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image040" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image040" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image040-thumb.jpg" width="470" border="0" /></a></p>
<p><a href="http://www.backpackit.com/?source=37signals+home#/">Backpack</a></p>
<p>这是另外一个用来放视频的窗口，再次注意页面是怎么渐出更淡的而不是更深的颜色。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0411.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image041" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image041" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image041-thumb1.jpg" width="470" border="0" /></a></p>
<p><a href="http://blog.guifx.com/category/downloads/">Guifx</a>     <br />An image lightbox for a portfolio, always a great idea if you want to include larger images to show details of your work.</p>
<p>一个为了作品档案的图片lightbox， 如果你想包括一个大一点的图片显示你的工作详细一点的信息的话， 这是一个很好的主意。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0421.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image042" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="370" alt="clip_image042" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image042-thumb1.jpg" width="470" border="0" /></a></p>
<p>&#160;</p>
<p>摘自：<a title="http://www.yeeyan.com/articles/view/orangedan/43521" href="http://www.yeeyan.com/articles/view/orangedan/43521">http://www.yeeyan.com/articles/view/orangedan/43521</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.acmind.com/archives/1062/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>简单的Ajax实例</title>
		<link>http://blog.acmind.com/archives/973</link>
		<comments>http://blog.acmind.com/archives/973#comments</comments>
		<pubDate>Wed, 03 Jun 2009 00:04:57 +0000</pubDate>
		<dc:creator>笑谈</dc:creator>
				<category><![CDATA[编程语言]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[实例]]></category>

		<guid isPermaLink="false">http://blog.acmind.com/?p=973</guid>
		<description><![CDATA[Ajax 是一种可以通过Javascript, DHTML and the XMLHttpRequest 来发送GET或POST请求，在数据返回时不必重新载入页面。 下面是一个非常简单的Ajax例子，发送一个请求，打印出请求的字符串和远程用户的IP地址。
简单的Ajax演示 (请参考原文演示: http://www.degraeve.com/reference/simple-ajax-example.php)
Html 页面
这个HTML页面提供了3个JavaScript函数，通过执行XMLHttpRequest来更新HTML页面.(AJAX调用)
&#60;html&#62;
&#60;head&#62;
&#60;title&#62;Simple Ajax Example&#60;/title&#62;
&#60;script language=&#34;Javascript&#34;&#62;
function xmlhttpPost(strURL) {
    var xmlHttpReq = false;
    var self = this;
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        self.xmlHttpReq = new XMLHttpRequest();
    [...]]]></description>
			<content:encoded><![CDATA[<p>Ajax 是一种可以通过Javascript, DHTML and the XMLHttpRequest 来发送GET或POST请求，在数据返回时不必重新载入页面。 下面是一个非常简单的Ajax例子，发送一个请求，打印出请求的字符串和远程用户的IP地址。</p>
<p><strong>简单的Ajax演示 </strong>(请参考原文演示: <a href="http://www.degraeve.com/reference/simple-ajax-example.php">http://www.degraeve.com/reference/simple-ajax-example.php</a>)</p>
<h4>Html 页面</h4>
<p>这个HTML页面提供了3个JavaScript函数，通过执行XMLHttpRequest来更新HTML页面.(AJAX调用)</p>
<pre class="code"><span style="color: blue">&lt;</span><span style="color: #a31515">html</span><span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">head</span><span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">title</span><span style="color: blue">&gt;</span>Simple Ajax Example<span style="color: blue">&lt;/</span><span style="color: #a31515">title</span><span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">script </span><span style="color: red">language</span><span style="color: blue">=&quot;Javascript&quot;&gt;
function </span>xmlhttpPost(strURL) {
    <span style="color: blue">var </span>xmlHttpReq = <span style="color: blue">false</span>;
    <span style="color: blue">var </span>self = <span style="color: blue">this</span>;
    <span style="color: green">// Mozilla/Safari
    </span><span style="color: blue">if </span>(window.XMLHttpRequest) {
        self.xmlHttpReq = <span style="color: blue">new </span>XMLHttpRequest();
    }
    <span style="color: green">// IE
    </span><span style="color: blue">else if </span>(window.ActiveXObject) {
        self.xmlHttpReq = <span style="color: blue">new </span>ActiveXObject(<span style="color: #a31515">&quot;Microsoft.XMLHTTP&quot;</span>);
    }
    self.xmlHttpReq.open(<span style="color: #a31515">'POST'</span>, strURL, <span style="color: blue">true</span>);
    self.xmlHttpReq.setRequestHeader(<span style="color: #a31515">'Content-Type'</span>, <span style="color: #a31515">'application/x-www-form-urlencoded'</span>);
    self.xmlHttpReq.onreadystatechange = <span style="color: blue">function</span>() {
        <span style="color: blue">if </span>(self.xmlHttpReq.readyState == 4) {
            updatepage(self.xmlHttpReq.responseText);
        }
    }
    self.xmlHttpReq.send(getquerystring());
}

<span style="color: blue">function </span>getquerystring() {
    <span style="color: blue">var </span>form     = document.forms[<span style="color: #a31515">'f1'</span>];
    <span style="color: blue">var </span>word = form.word.value;
    qstr = <span style="color: #a31515">'w=' </span>+ escape(word);  <span style="color: green">// NOTE: no '?' before querystring
    </span><span style="color: blue">return </span>qstr;
}

<span style="color: blue">function </span>updatepage(str){
    document.getElementById(<span style="color: #a31515">&quot;result&quot;</span>).innerHTML = str;
}
<span style="color: blue">&lt;/</span><span style="color: #a31515">script</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">head</span><span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">body</span><span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">form </span><span style="color: red">name</span><span style="color: blue">=&quot;f1&quot;&gt;
  &lt;</span><span style="color: #a31515">p</span><span style="color: blue">&gt;</span>word: <span style="color: blue">&lt;</span><span style="color: #a31515">input </span><span style="color: red">name</span><span style="color: blue">=&quot;word&quot; </span><span style="color: red">type</span><span style="color: blue">=&quot;text&quot;&gt;
  &lt;</span><span style="color: #a31515">input </span><span style="color: red">value</span><span style="color: blue">=&quot;Go&quot; </span><span style="color: red">type</span><span style="color: blue">=&quot;button&quot; </span><span style="color: red">onclick</span><span style="color: blue">='JavaScript:xmlhttpPost(&quot;/cgi-bin/simple-ajax-example.cgi&quot;)'&gt;&lt;/</span><span style="color: #a31515">p</span><span style="color: blue">&gt;
  &lt;</span><span style="color: #a31515">div </span><span style="color: red">id</span><span style="color: blue">=&quot;result&quot;&gt;&lt;/</span><span style="color: #a31515">div</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">form</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">body</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">html</span><span style="color: blue">&gt;</span></pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<h4>CGI 脚本</h4>
<p>这个CGI脚本是用来应答HTML页面的JavaScript的请求。 CGI脚本可以通过简单的Python, Puby, PHP, C, Perl 等来实现。</p>
<pre class="code">#!/usr/bin/perl -w
use CGI;

$query = new CGI;

$secretword = $query-&gt;param('w');
$remotehost = $query-&gt;remote_host();

print $query-&gt;header;
print &quot;<span style="color: blue">&lt;</span><span style="color: #a31515">p</span><span style="color: blue">&gt;</span>The secret word is <span style="color: blue">&lt;</span><span style="color: #a31515">b</span><span style="color: blue">&gt;</span>$secretword<span style="color: blue">&lt;/</span><span style="color: #a31515">b</span><span style="color: blue">&gt; </span>and your IP is <span style="color: blue">&lt;</span><span style="color: #a31515">b</span><span style="color: blue">&gt;</span>$remotehost<span style="color: blue">&lt;/</span><span style="color: #a31515">b</span><span style="color: blue">&gt;</span></pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.acmind.com/archives/973/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>绿化数据中心 &#8211; 第一部分 &#8211; 整合，再整合</title>
		<link>http://blog.acmind.com/archives/912</link>
		<comments>http://blog.acmind.com/archives/912#comments</comments>
		<pubDate>Tue, 02 Jun 2009 08:43:09 +0000</pubDate>
		<dc:creator>笑谈</dc:creator>
				<category><![CDATA[数据相关]]></category>
		<category><![CDATA[中心]]></category>
		<category><![CDATA[数据]]></category>
		<category><![CDATA[整合]]></category>

		<guid isPermaLink="false">http://blog.acmind.com/?p=912</guid>
		<description><![CDATA[出于多种原因，服务器整合项目在许多组织里正开展得如火如荼。此类项目一般有如下一些目标：

以新设备替换老设备。 
实现数据中心更好的整体利用率。 
降低购买设备的总成本。 

考虑一下如下事实：今天的多核、多处理器系统与昨日的单核的庞然大物相较而言已是相去甚远。现代的服务器跟老家伙比起来，即便是开足马力，也能以消耗更低能量的方式来实现负荷目标。还有，再考虑一下使用模式。时至今日，把那些旧的单应用服务器迁移至运行于新硬件上的虚拟机器之上的虚拟机器已远非罕见。（译者：很拗口吧，实际上指的是现在的虚拟技术已经允许在虚拟的基础上多重虚拟）。其结果是：大多数情况下，曾经许多10台、20台甚至30台服务器才能满足的负载，现已可高效地仅运行于两三台设备上。随着海量的虚拟机器监控解决方案的出现，由于其中许多都是免费的，虚拟化是实现服务器整合目标最快捷的方式。
在许多情况下，即便是新老设备一对一的替换也能降低整体能源消耗。然而，通过把许多服务器的负载整合到单台设备上则可实现大量的能源节约。
显然，此非易事 &#8211; 不会是抛出一台新服务器、把一堆负载迁移过去然后回家享受周末那么简单。为了在一台虚拟单机上充分支持如此多的负载，海量的存储空间往往是必要的。但是即便加上SAN的电力需求，大部分大型的服务器整合项目仍实现了重大的能耗节省。
节约能耗本身就是一个进行服务器整合的主要理由，但还有其他的能源因素在起作用。比如说冷却。难道给30多台既老旧又低效的服务器降温会比两三台新的服务器加上一个SAN要便宜？除非你买了一个占满整个机房的SAN，我敢打赌冷却需求可大为降低。
整合项目并没有止步于数据中心。实际上，我们完全可以肯定， 这完全可以提高数据中心的能源利用率。想一想虚拟桌面基础设施吧（ VDI ）。通过在整个组织部署低功耗，以及在数据中心部署一些更节能的服务器，组织可以为台式电脑采取在服务器上实施的措施。简而言之，台式机基础设施的总拥有成本的会因此减少，其中包括节约了大量的能源。举个例子，假设你在用户桌面部署了200台瘦客户机型的终端，来取代200台的低能效的胖电脑。再假设需要五台服务器来支持这200个客户。做一下算术题你就会发现，这5台PC和200台瘦客户机的能源消费总量远比200台常规电脑的要的得多。您还可以得到 VDI的的其他一些好处，如桌面的快速部署，从而也降低整体管理成本。
服务器整合项目是越来越常见。如果你所在的组织还没有试水服务器虚拟化和整合的话，现正当时。此外，考虑一下VDI可能带来的好处。虽然这不是对每个组织都合适的灵丹妙药，VDI的确是可以直接且持续的大为降低成本的。
&#160;
摘自：http://www.yeeyan.com/articles/view/%E5%8D%9A%E8%B4%A4/34583?tag_related
]]></description>
			<content:encoded><![CDATA[<p>出于多种原因，服务器整合项目在许多组织里正开展得如火如荼。此类项目一般有如下一些目标：</p>
<ul>
<li>以新设备替换老设备。 </li>
<li>实现数据中心更好的整体利用率。 </li>
<li>降低购买设备的总成本。 </li>
</ul>
<p>考虑一下如下事实：今天的多核、多处理器系统与昨日的单核的庞然大物相较而言已是相去甚远。现代的服务器跟老家伙比起来，即便是开足马力，也能以消耗更低能量的方式来实现负荷目标。还有，再考虑一下使用模式。时至今日，把那些旧的单应用服务器迁移至运行于新硬件上的虚拟机器之上的虚拟机器已远非罕见。（译者：很拗口吧，实际上指的是现在的虚拟技术已经允许在虚拟的基础上多重虚拟）。其结果是：大多数情况下，曾经许多10台、20台甚至30台服务器才能满足的负载，现已可高效地仅运行于两三台设备上。随着海量的虚拟机器监控解决方案的出现，由于其中许多都是免费的，虚拟化是实现服务器整合目标最快捷的方式。</p>
<p>在许多情况下，即便是新老设备一对一的替换也能降低整体能源消耗。然而，通过把许多服务器的负载整合到单台设备上则可实现大量的能源节约。</p>
<p>显然，此非易事 &#8211; 不会是抛出一台新服务器、把一堆负载迁移过去然后回家享受周末那么简单。为了在一台虚拟单机上充分支持如此多的负载，海量的存储空间往往是必要的。但是即便加上SAN的电力需求，大部分大型的服务器整合项目仍实现了重大的能耗节省。</p>
<p>节约能耗本身就是一个进行服务器整合的主要理由，但还有其他的能源因素在起作用。比如说冷却。难道给30多台既老旧又低效的服务器降温会比两三台新的服务器加上一个SAN要便宜？除非你买了一个占满整个机房的SAN，我敢打赌冷却需求可大为降低。</p>
<p>整合项目并没有止步于数据中心。实际上，我们完全可以肯定， 这完全可以提高数据中心的能源利用率。想一想虚拟桌面基础设施吧（ VDI ）。通过在整个组织部署低功耗，以及在数据中心部署一些更节能的服务器，组织可以为台式电脑采取在服务器上实施的措施。简而言之，台式机基础设施的总拥有成本的会因此减少，其中包括节约了大量的能源。举个例子，假设你在用户桌面部署了200台瘦客户机型的终端，来取代200台的低能效的胖电脑。再假设需要五台服务器来支持这200个客户。做一下算术题你就会发现，这5台PC和200台瘦客户机的能源消费总量远比200台常规电脑的要的得多。您还可以得到 VDI的的其他一些好处，如桌面的快速部署，从而也降低整体管理成本。</p>
<p>服务器整合项目是越来越常见。如果你所在的组织还没有试水服务器虚拟化和整合的话，现正当时。此外，考虑一下VDI可能带来的好处。虽然这不是对每个组织都合适的灵丹妙药，VDI的确是可以直接且持续的大为降低成本的。</p>
<p>&#160;</p>
<p>摘自：<a title="http://www.yeeyan.com/articles/view/%E5%8D%9A%E8%B4%A4/34583?tag_related" href="http://www.yeeyan.com/articles/view/%E5%8D%9A%E8%B4%A4/34583?tag_related">http://www.yeeyan.com/articles/view/%E5%8D%9A%E8%B4%A4/34583?tag_related</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.acmind.com/archives/912/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>101条伟大的计算机编程名言</title>
		<link>http://blog.acmind.com/archives/903</link>
		<comments>http://blog.acmind.com/archives/903#comments</comments>
		<pubDate>Tue, 02 Jun 2009 08:12:23 +0000</pubDate>
		<dc:creator>笑谈</dc:creator>
				<category><![CDATA[兴趣关注]]></category>
		<category><![CDATA[编程语言]]></category>
		<category><![CDATA[名言]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[计算机]]></category>

		<guid isPermaLink="false">http://blog.acmind.com/?p=903</guid>
		<description><![CDATA[“人们总是害怕改变。电被发明出来的时候他们害怕电，是不是？他们害怕煤，害怕蒸汽机车。无知无所不在，并导致恐惧。但随着时间推移，人们终究会接受最新的科技。”
正如比尔盖茨曾经警告过一样，计算机已经真正成为我们的最新科技，几乎遍布我们日常生活的每一方面。所以，我们这个时代的某些最伟大的头脑开始思索起计算机和软件对于人类的重要性来了。以下就是101条有关计算机的伟大名言，并且，既然我们这个网站是一个软件开发网站，我们尤其关注编程方面的。
计算机
1、“计算机没什么用。他们只会告诉你答案。”    (巴勃罗·毕加索，画家)      
2、“计算机就跟比基尼一样，省去了人们许多的胡思乱想。”    (萨姆·尤因，作家) 
3、“他们拥有计算机，他们也还可能拥有其他的大规模杀伤性武器。”    (珍内特·雷诺，美国前女司法部长)&#160; 
4、“跟计算机工作酷就酷在这里，它们不会生气，能记住所有东西，还有，它们不会喝光你的啤酒。”    (保罗·利里，吉他手) 
5、“如果汽车能赶上计算机的发展周期的话，一辆今天的劳斯莱斯仅值100美元，每加仑要跑100万英里，每年还得爆炸一次，把里面的人杀个精光。”
(Robert X. Cringely，技术作家)
计算机智能
6、“计算机总是越来越智能的。科学家告诉我们说不久它们就能跟我们对话了。（这里的“它们”，我指的是“计算机”。我怀疑科学家永远都不能跟我们对话。）”    (Dave Barry，幽默作家)      
7、“我最近注意到，在共同文化中，那种对计算机变得智能化并最终掌控世界的妄想恐惧症几乎彻底消失了。据我所知，这跟MS-DOS的发布基本是同步的。”    (Larry DeLuca)
8、“计算机会不会思考这个问题就像问潜水艇会不会游泳一样。”    (Edsger W. Dijkstra，图灵奖获得者)      [...]]]></description>
			<content:encoded><![CDATA[<p>“人们总是害怕改变。电被发明出来的时候他们害怕电，是不是？他们害怕煤，害怕蒸汽机车。无知无所不在，并导致恐惧。但随着时间推移，人们终究会接受最新的科技。”</p>
<p>正如比尔盖茨曾经警告过一样，计算机已经真正成为我们的最新科技，几乎遍布我们日常生活的每一方面。所以，我们这个时代的某些最伟大的头脑开始思索起计算机和软件对于人类的重要性来了。以下就是101条有关计算机的伟大名言，并且，既然我们这个网站是一个软件开发网站，我们尤其关注编程方面的。</p>
<h5>计算机</h5>
<p>1、“计算机没什么用。他们只会告诉你答案。”    <br /><em>(巴勃罗·毕加索，画家)      <br /></em></p>
<p>2、“计算机就跟比基尼一样，省去了人们许多的胡思乱想。”    <br /><em>(萨姆·尤因，作家) </em></p>
<p>3、“他们拥有计算机，他们也还可能拥有其他的大规模杀伤性武器。”    <br /><em>(珍内特·雷诺，美国前女司法部长)&#160; <br /></em></p>
<p>4、“跟计算机工作酷就酷在这里，它们不会生气，能记住所有东西，还有，它们不会喝光你的啤酒。”    <br /><em>(保罗·利里，吉他手) </em></p>
<p>5、“如果汽车能赶上计算机的发展周期的话，一辆今天的劳斯莱斯仅值100美元，每加仑要跑100万英里，每年还得爆炸一次，把里面的人杀个精光。”</p>
<p><em>(Robert X. Cringely，技术作家)</em></p>
<h5>计算机智能</h5>
<p>6、“计算机总是越来越智能的。科学家告诉我们说不久它们就能跟我们对话了。（这里的“它们”，我指的是“计算机”。我怀疑科学家永远都不能跟我们对话。）”    <br /><em>(Dave Barry，幽默作家)      <br /></em></p>
<p>7、“我最近注意到，在共同文化中，那种对计算机变得智能化并最终掌控世界的妄想恐惧症几乎彻底消失了。据我所知，这跟MS-DOS的发布基本是同步的。”    <br /><em>(Larry DeLuca)</em></p>
<p>8、“计算机会不会思考这个问题就像问潜水艇会不会游泳一样。”    <br /><em>(Edsger W. Dijkstra，图灵奖获得者)      <br /></em></p>
<p>9、“活了一百年却只能记住30M字节是荒谬的。你知道，这比一张压缩盘还要少。人类境况正在变得日趋退化。”    <br /><em>(Marvin Minsky，人工智能研究的奠基人)</em></p>
<h5>信任</h5>
<p>10、“这座城市的中央计算机告诉你的？R2D2，你不该相信一台陌生的计算机！”    <br /><em>(C3PO，星球大战中的翻译机器人)</em></p>
<p>11、“不要信赖那些大到不能扔出窗外的计算机”    <br /><em>(斯蒂夫·沃兹尼亚克，苹果联合创始人)</em>     <br /><em>*译者：游戏《文明4》中的科技引言，实际上沃兹尼亚克自己也不记得自己是否确切讲过这样的话。</em></p>
<h5>硬件</h5>
<p>12、“硬件:计算机系统中可被踢的部分。”    <br /><em>(Jeff Pesis)</em></p>
<h5>软件</h5>
<p>13、“今天大部分的软件都很像上百万块砖堆叠在一起组成的埃及金字塔，缺乏结构完整性，只能靠强力和成千上万的奴隶完成。”    <br /><em>(阿伦·凯，图灵奖获得者，面向对象创始人) </em></p>
<p>14、“我终于明白‘向上兼容性’是怎么回事了。这是指我们得保留所有原有错误。”    <br /><em>(Dennie van Tassel)</em></p>
<h5>操作系统</h5>
<p>15、“有两样重要产品出自伯克利：LSD和BSD*。我们不相信这是个巧合。”</p>
<p><em>(Jeremy S. Anderson)</em></p>
<p><em>*译者：LSD是一种药力至强的迷幻剂，BSD-<em>BSD</em>（<em>Berkeley Software Distribution</em>，伯克利软件套件）是Unix的衍生系统       <br /></em></p>
<p>16、“2038年1月19日，凌晨3点14分07秒”    <br /><em>(UNIX中的世界末日*–1970年1月1号之后的2^32秒)</em></p>
<p><em>*译者：word跟world发音类似，UNIX用有符号整形数（WORD）表示时间，所以最多只能计时2^31秒，原文的2^32应为错误。</em></p>
<p>17、“每个操作系统都差不多… 我们都一样的烂。”    <br /><cite>(微软的高级副总裁布莱恩·瓦伦蒂尼这样描述操作系统的安全状况，2003)</cite></p>
<p><cite></cite></p>
<p>18、“微软出了个新版本，Windows XP,据大家说是‘有史以来最稳定的Windows’， 对我而言, 这就好像是在说芦笋是‘有史以来发音最清脆的蔬菜一样’ “</p>
<p><cite>(Dave Barry)      <br /></cite></p>
<h5>互联网</h5>
<p>19、“互联网？那个东西还在吗？”&#160;&#160;&#160; <br /><cite>(Homer Simpson)      <br /></cite></p>
<p>20、“网络就像是个母夜叉。我每转到一处都会看见小个的按钮命令我提交*。”    <br /><cite>(Nytwind)</cite></p>
<p><cite>*译者注：Submit：提交，另一层意思是要求屈服      <br /></cite></p>
<p>21、“想想看吧，已经有一百万只猴子坐在一百万台打字机旁，可Usenet就是不像莎士比亚。”    <br /><cite>(Blair Houghton)      <br /></cite></p>
<h5>软件产业</h5>
<p>22、“计算机软件产业最为惊人的成就，是其持续不断地放弃硬件产业的惊人成果和稳定性。”</p>
<p><em>(Henry Petroski)</em></p>
<p>23、“真正的创新经常来自于那些贴近市场、但无力拥有市场的的小型初创公司。”</p>
<p><em>(Timm Martin)</em></p>
<p>24、“人们常说，伟大的科学学科就像是站在其它巨人肩膀上的巨人。人们也说过，软件产业正如站在其他侏儒脚上的侏儒。”    <br /><em>(Alan Cooper，交互设计之父)      <br /></em></p>
<p>25、“这无关比特、字节和协议，而关乎利润和损益。”    <br /><em>(郭士纳，IBM前CEO)</em></p>
<p>26、“我们是微软。反抗是徒劳的。你会被同化的。”    <br /><cite>(保险杠贴纸)      <br /></cite></p>
<h5>软件演示</h5>
<p>27、“不管演示在彩排的时候有多好，一旦在观众面前展示时，演示的不出错几率为投资总额的观众人数次方的倒数。”    <br /><em>(Mark Gibbs)</em></p>
<h5>软件专利</h5>
<p>28、“专利大多数都是垃圾。浪费时间去阅读这些专利是愚蠢的。只有专利持有人才会这么干，还得强迫自己才会看。”</p>
<p><em>(Linus Torvalds，LINUX创始人)</em></p>
<h5>复杂性</h5>
<p>29、“控制复杂性是计算机编程的本质。”    <br /><em>(Brian Kernigan) </em></p>
<p>30、“复杂性杀死一切。它把程序员的生活给搞砸了，它令产品难以规划、创建和测试，带来了安全挑战，并导致最终用户和管理员沮丧不已。”    <br /><em>(Ray Ozzie) </em></p>
<p>31、“进行软件设计有两种方式。一种是让它尽量简单，明显没有不足。另一种是弄得尽量复杂，没有明显缺陷。”</p>
<p><cite>(C.A.R. Hoare)      <br /></cite></p>
<p>32、“好的软件的作用是让复杂的东西看起来简单。”&#160; <br /><em>(Grady Booch，UML创始人之一)</em></p>
<h5>易用性</h5>
<p>33、“不管那些计算机书怎么说，只需记住，你不是‘傻瓜’。真正的傻瓜是那些所谓的技术专家，因为他们设计不出普通消费者赖以生活的易于使用的软硬件。”</p>
<p><em>(Walter Mossberg，科技专栏记者) </em></p>
<p>34、“软件供应商在努力尝试让他们的软件更‘易于操作’…&#160; 迄今为止，他们最好的办法就是翻出所有的老手册，然后在封面盖上‘易于操作’这几个字。”</p>
<p><em>(比尔·盖茨)</em></p>
<p>35、“有个老套的故事说有人希望他的计算机能像他的电话机一样好用。他的愿望实现了，因为我已经不知道该如何使用自己的电话了。”    <br /><em>(Bjarne Stroustrup，C++之父)</em></p>
<h5>用户</h5>
<p>36、“任何一个傻瓜都会用电脑。的确有很多傻瓜在用。”    <br /><em>(Ted Nelson) </em></p>
<p>37、“只有两个行业把客户称为‘用户’*。”</p>
<p><em>(Edward Tufte，信息设计大师)&#160; <br />*译者注：一个是计算机设计，另一个是毒品交易，computer design and drug dealing</em></p>
<h5>程序员</h5>
<p>38、“程序员在跟宇宙赛跑，他们在努力开发出更大更好的傻瓜程序，而宇宙则努力培养出更大更好的白痴。到目前为止，宇宙领先。”    <br /><em>(Rich Cook) </em></p>
<p>39、“你们当中很多人都知道程序员的美德。当然啦，有三种：那就是懒惰、急躁以及傲慢。”    <br /><em>(Larry Wall，Perl发明者)</em></p>
<p>40、“程序员的问题是你永远都不知道他在做什么，直到为时已晚。”    <br /><em>(Seymour Cray，超级计算机之父)</em></p>
<p>41、“那就是这些自认为痛恨计算机的人的真实面目。他们实际上真正痛恨的是糟糕的程序员。”    <br /><em>(拉瑞·尼文，科幻作家)</em></p>
<p>42、“很长时间以来我一直困惑不已，为什么一些又贵又先进的东西会一点用都没有。直到我突然想起，计算机不就是一台愚蠢之至却拥有难以置信的做聪明事能力的机器嘛，而程序员不就是聪明绝顶却拥有难以置信的干蠢事的能力的人嘛。一句话，他们简直就是天生绝配。”    <br /><em>(比尔·布莱森，旅游文学作家)</em></p>
<p>43、“正如研究画笔和颜料无法让人成为绘画大师，计算机科学的教育不会让任何人成为一名编程大师。”</p>
<p><em>(埃里克·雷蒙，开源运动领袖) </em></p>
<p>44、“一个程序员是经历以下事情后仍能证明自己是严格的专家的人：他可以历经数不清的捶打，可取材于无关紧要的文档，用上面的争议数据作出模糊假设，并以此计算出测微精度的无数片面理解的答案,并由一个不可靠、脑袋充满质疑、公开宣称要让一个倒霉透顶、没有指望、毫无防备,要求第一时间获得信息的部门狼狈不堪、令人生厌的人使用一台准确度有问题的仪器去实施。”</p>
<p><em>(IEEE网格新闻杂志) </em></p>
<p>45、“运气好的黑客能用几个月的时间 &#8211; 生产出一个小规模的开发团体（比如说，7-8人）历尽艰辛一起工作了一年多才能做出来的东西。IBM经常报告说某些程序员的生产力要比其它工人高百倍，甚至更多。”    <br /><em>(Peter Seebach，黑客)</em></p>
<p>46、“最好的程序员跟好的程序员相比可不止好那么一点点。无论用那种标准去衡量：概念创造性、速度、设计的独创性或者解决问题的能力，这种好都不是一个数量级的。”</p>
<p><em>(兰德尔·</em><em>E</em><em>·斯特劳斯，科技作家)</em></p>
<p>47、“伟大的车工值得给他几倍于普通车工的薪水，但一个伟大的软件代码作家，其价值则要等同于一个普通的软件写手的价格的1万倍。”    <br /><em>(比尔·盖茨) </em></p>
<p><ins><ins></ins></ins></p>
<h5>编程</h5>
<p>48、“就算它工作不正常也别担心。如果一切正常，你早该失业了。”&#160; <br /><em>(Mosher的软件工程定律)</em></p>
<p>49、“靠代码行数来衡量开发进程就好比用重量来衡量飞机制造的进度。”<cite>      <br />(比尔·盖茨)       <br /></cite></p>
<p>50、“写代码的社会地位比盗墓的高，比管理的低。”    <br /><em>(杰拉尔德·温伯格，软件与系统思想家) </em></p>
<p>51、“首先学习计算机科学及理论。接着形成自己编程的风格。然后把这一切都忘掉，尽管改程序就是了。”    <br /><em>(George Carrette，杰出软件工程师,开源推广者)</em></p>
<p>52、“先解决问题再写代码。”    <br /><em>(John Johnson) </em></p>
<p>53、“乐观主义是编程行业的职业病；用户反馈则是治疗方法。”    <br /><em>(Kent Beck)</em></p>
<p>54、“迭代者为人，递归者为神。”    <br /><em>(L. Peter Deutsch) </em></p>
<p>55、“布尔值最好的一点是，就算你错了，也顶多错了一位而已。”    <br /><em>(无名氏)</em></p>
<p>56、“数组的下标是从0开始好还是从1开始好呢？我的0.5的折衷方案，以我之见，没有经过适当考虑就被否决掉了。”</p>
<p><em>(Stan Kelly-Bootle) </em></p>
<h5>编程语言</h5>
<p>57、“只有两种编程语言：一种是天天挨骂的，另一种是没人用的。”    <br /><em>(Bjarne Stroustrup，C++之父)</em></p>
<p>58、“PHP是不合格的业余爱好者创建的，他们犯了个小恶；Perl是娴熟而堕落的专家创建的，他们犯了阴险狡诈的大恶。”</p>
<p><cite>(Jon Ribbens)      <br /></cite></p>
<p>59、“COBOL的使用摧残大脑；其教育应被视为刑事犯罪。”    <br /><cite>(E.W. Dijkstra)      <br /></cite></p>
<p><cite>60、“把良好的编程风格教给那些之前曾经接触过BASIC的学生几乎是不可能的。作为可能的程序员，他们已精神残废，无重塑的可能了。”</cite></p>
<p><em>(E. W. Dijkstra)</em></p>
<p>61、“我想微软之所以把它叫做.Net，是因为这样它就不会在Unix的目录里显示出来了。”    <br /><cite>(Oktal)      <br /></cite></p>
<p>62、“没有一种编程语言能阻止程序员写出糟糕的程序来，不管这种语言结构有多良好。”    <br /><em>(Larry Flon) </em></p>
<p>63、“计算机语言设计犹如在公园里漫步。我是说侏罗纪公园。”    <br /><em>(Larry Wall) </em></p>
<h5>C/C++<cite><cite>        <br /></cite></cite></h5>
<p>64、“搞了50年的编程语言的研究，最后就出了个C++？”    <br /><cite>(Richard A. O’Keefe)      <br /></cite></p>
<p>65、“写C或者C++就像是在用一把卸掉所有安全防护装置的链锯。”    <br /><cite>(Bob Gray)      <br /></cite></p>
<p>66、“在C++里你想搬起石头砸自己的脚更为困难了，不过一旦你真的做了，整条腿都要报销。”    <br /><cite>(Bjarne Stroustrup)      <br /></cite></p>
<p>67、“C++ : 友人可造访你的私有成员之地也。”    <br /><cite>(Gavin Russell Baker)</cite></p>
<p><cite>译者：Friends：C++的友元，是一种定义在类外部的普通函数，但它需要在类体内进行说明，为了与该类的成员函数加以区别，在说明时前面加以关键字friend。友元不是成员函数，但是它可以访问类中的私有成员。友元的作用在于提高程序的运行效率，但是，它破坏了类的封装性和隐藏性，使得非成员函数可以访问类的私有成员。      <br /></cite></p>
<p>68、“罗马帝国灭亡的其中一个主要原因是他们没有0 &#8211; 这样他们就没法给自己的C程序指明成功退出的路径了。”    <br /><em>(Robert Firth) </em></p>
<h5>Java</h5>
<p>69、“Java从许多方面来说就是C++–。”    <br /><cite>(Michael Feldman)      <br /></cite></p>
<p>70、“说Java好就好在运行于所有操作系统之上，就好比说肛交好就好在无论男女都行。”</p>
<p><cite>(Alanna)      <br /></cite></p>
<p>71、“好吧，Java也许是编程语言的好榜样。但Java应用则是应用程序的坏榜样。”    <br /><cite>(pixadel)      <br /></cite></p>
<p>72、“要是Java真的有垃圾回收的话，大部分程序在执行之前就会把自己干掉了。”    <br /><em>(Robert Sewell) </em></p>
<h5>开源</h5>
<p>73、“软件就像性事：免费/自由更好。”    <br /><em>(Linus Torvalds) </em></p>
<p>74、“唯一对免费软件感到害怕的人，是自己的产品还要不值钱的人。”    <br /><cite>(David Emery)      <br /></cite></p>
<h5>代码</h5>
<p>75、“好代码本身就是最好的文档。”    <br /><em>(Steve McConnell，《代码大全》的作者)</em></p>
<p>76、“你自己的代码如果超过6个月不看，再看的时候也一样像是别人写的。”    <br /><em>(伊格尔森定律)</em></p>
<p>77、“前面90%的代码要占用开发时间的前90%。剩下的10%的代码要占用开发时间的另一90%。”</p>
<p><em>(Tom Cargill，C++领域中公认的专家) </em></p>
<h5>软件开发</h5>
<p>78、“好的程序员绞尽脑汁，务求考虑各种场景，幸得好的指南拯救我们，不必面面俱到。”    <br /><em>(Francis Glassborow，C和C++领军人物之一) </em></p>
<p>79、“在软件里面，我们鲜有有意义的需求。就算有，衡量成功的唯一尺度，也取决于我们的解决方案是不是搞定了客户的想法 &#8211; 那飘忽不定的、对问题是什么的想法。”</p>
<p><em>(Jeff Atwood，Coding Horror Developer Blog的创始人)</em></p>
<p>80、“想想我们计算机程序的糟糕现状吧，很显然软件开发仍是黑箱艺术，还不能称之为工程学科。”    <br /><em>(Bill Clinton，前美国总统) </em></p>
<p>81、“没有伟大的团队就没有伟大的软件，可大部分的软件团队举止就像是支离破碎的家庭。”    <br /><em>(吉姆·麦卡锡，微软VC++总监)</em></p>
<h5>调试</h5>
<p>82、“一旦我们开始编程，就会惊讶地发现让程序正常没想象中那么简单。调试不可避免。那一刻我认记忆犹新，当时我就意识到，从今往后我生活的大部分时间都要花在寻找自己程序的错误上面了。”</p>
<p><em>(莫里斯·威尔克斯 调试探索, 1949) </em></p>
<p>83、“调试难度本来就是写代码的两倍。因此，如果你写代码的时候聪明用尽，根据定义，你就没有能耐去调试它了。”    <br /><cite>(Brian Kernighan，《C 程序设计语言》的作者之一)</cite></p>
<p><cite></cite></p>
<p>84、“如果调试是除虫的过程，那么编程就一定是把臭虫放进来的过程。”    <br /><em>(Edsger W. Dijkstra) </em></p>
<h5>质量</h5>
<p>85、“<a href="http://translate.google.cn/translate?js=n&amp;prev=_t&amp;hl=zh-CN&amp;ie=UTF-8&amp;u=http://studentclub.ro/ovidiupl/archive/2005/02/03/11378.aspx&amp;sl=ro&amp;tl=en&amp;history_state0=">我才不管它</a><a href="http://translate.google.cn/translate?js=n&amp;prev=_t&amp;hl=zh-CN&amp;ie=UTF-8&amp;u=http://studentclub.ro/ovidiupl/archive/2005/02/03/11378.aspx&amp;sl=ro&amp;tl=en&amp;history_state0=">能</a><a href="http://translate.google.cn/translate?js=n&amp;prev=_t&amp;hl=zh-CN&amp;ie=UTF-8&amp;u=http://studentclub.ro/ovidiupl/archive/2005/02/03/11378.aspx&amp;sl=ro&amp;tl=en&amp;history_state0=">不</a><a href="http://translate.google.cn/translate?js=n&amp;prev=_t&amp;hl=zh-CN&amp;ie=UTF-8&amp;u=http://studentclub.ro/ovidiupl/archive/2005/02/03/11378.aspx&amp;sl=ro&amp;tl=en&amp;history_state0=">能</a><a href="http://translate.google.cn/translate?js=n&amp;prev=_t&amp;hl=zh-CN&amp;ie=UTF-8&amp;u=http://studentclub.ro/ovidiupl/archive/2005/02/03/11378.aspx&amp;sl=ro&amp;tl=en&amp;history_state0=">在你的机器上运行呢！我们又没装到你的机器上</a>！”</p>
<p><cite>(Vidiu Platon，罗马尼亚的微软最佳学生合作伙伴MSP)</cite></p>
<p><cite></cite></p>
<p>86、“编程就像性一样：一时犯错，终生维护。”    <br /><cite>(Michael Sinz)      <br /></cite></p>
<p>87、“有两种写出无错程序的办法；只有第三种有用。”    <br /><cite>(Alan J. Perlis)      <br /></cite></p>
<p>88、“软件质量与指针算法不可兼得。”    <br /><em>(Bertrand Meyer) </em></p>
<p>89、“如果麦当劳像软件公司那样运作的话，每一百个巨无霸就会有一个令你食物中毒，而他们的回应是，‘真对不起，这是一张额外附送两个的赠券。’ “    <br /><em>(Mark Minasi) </em></p>
<p>90、“永远要这样写代码，好像最终维护你代码的人是个狂暴的、知道你住在哪里的精神病患者。”</p>
<p><cite>(Martin Golding)</cite></p>
<p>91、“是人都会犯错，不过要想把事情彻底搞砸还得请电脑出马。”    <br /><em>(Paul Ehrlich) </em></p>
<p>92、“计算机比人类历史上的任何发明都更快速地导致你犯更多的错误–可能除了手枪和龙舌兰酒是例外。”</p>
<p><em>(Mitch Radcliffe) </em></p>
<h5>预测</h5>
<p>93、“能发明的东西都发明出来了。”    <br /><cite>(查尔斯·杜埃尔, 美国专利局局长，1899年)</cite></p>
<p>94、“我认为全球市场约需5台计算机。”    <br /><em>(托马斯·沃森, IBM董事长, 约1948年)</em></p>
<p>95、“看上去我们已经到达了利用计算机技术可能获得的极限了，尽管下这样的结论得小心，因为不出五年这听起来就会相当愚蠢。”&#160; </p>
<p><em>(约翰·冯·诺伊曼,约1949年)</em></p>
<p>96、“但这又有什么好处呢？”    <br /><cite>(IBM先进计算机系统部的工程师对微芯片的评论, 1968年)      <br /></cite></p>
<p>97、“没理由人人都放台电脑到家里面去。”    <br /><em>(肯·奥尔森,数据设备公司（DEC）总裁，1977年)</em></p>
<p>98、“640K对每一个人来说都已足够。”    <br /><cite>(比尔·<cite>盖茨,1981年)</cite> </cite></p>
<p>99、“Windows NT的RAM寻址空间可达2G，这比任何应用程序所需都要多。”&#160; </p>
<p><em>(微软, 谈及Windows NT的开发时所言, 1992年)</em></p>
<p>100、“我们永远也无法真正成为无纸化社会，直到掌上电脑一族发布擦我1.0*（WipeMe 1.0）为止。”</p>
<p><cite>(安迪•皮尔逊，商界领袖)</cite></p>
<p><cite>*译者注：意思是说难道你大便不用纸吗？      <br /></cite></p>
<p>101、“长此以往，除了按键的手指外，人类的肢体将全部退化。”    <br /><em>(弗兰克•劳埃德•赖特，建筑师)</em></p>
<p><em></em></p>
<p>&#160;</p>
<p>摘自：<a title="http://www.yeeyan.com/articles/view/%E5%8D%9A%E8%B4%A4/41893?tag_related" href="http://www.yeeyan.com/articles/view/%E5%8D%9A%E8%B4%A4/41893?tag_related">http://www.yeeyan.com/articles/view/%E5%8D%9A%E8%B4%A4/41893?tag_related</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.acmind.com/archives/903/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>互联网应用表单设计</title>
		<link>http://blog.acmind.com/archives/901</link>
		<comments>http://blog.acmind.com/archives/901#comments</comments>
		<pubDate>Tue, 02 Jun 2009 03:44:00 +0000</pubDate>
		<dc:creator>笑谈</dc:creator>
				<category><![CDATA[设计技巧]]></category>
		<category><![CDATA[互联网]]></category>
		<category><![CDATA[应用]]></category>
		<category><![CDATA[表单]]></category>

		<guid isPermaLink="false">http://blog.acmind.com/?p=901</guid>
		<description><![CDATA[“表单元素应按照逻辑组织，使得用户思维对表单能按相关字段组成的块进行处理。”——HTML: 定义指南。
大部分网络应用都要使用大量的表单以进行数据录入和配置。但是不是所有的网络应用的表单都是统一的。表单字段的不同对齐方式，不同的标签，动作调用以及周围的视觉元素都能对用户的行为的不同方面起到正面或负面的作用。
表单布局
如果填写表单的时间需要尽可能短。而且用户对需要填写的数据是非常熟悉的（比如，在订单流程中输入姓名、地址和支付账户信信息），标签和输入框最好垂直对齐。每个标签和 对应的数据框排列在垂直方向上临近的位置，所有的输入框和标签垂直对齐能够节省视线移动的过程和时间，用户只需要在垂直向下一个方向上移动视线。

在这种布局方式中，建议对标签使用加粗字体。可以强调视觉重量感，在整体布局中突出标签。如果不加粗的话，标签会在视觉吸引力上和输入区域相混。
如果表单取得数据并不为用户所熟悉，又或者不好按照过程分组（比如地址的不同部分），左对齐比较容易看出表单需要的信息。用户可以上下浏览标签就可以了解需要填写的 数据而不会受到输入框的影响。但是，标签和输入框之间的距离通常会被最长的标签撑开，填写表单的时间可能会受到影响。用户需要在列于列之间跳跃寻找标签和输入框之间合适的组合。

还有一种选择就是右对齐标签，这样标签和输入框的对应组合就比较明了了。但是，左侧的参差不齐影响到快速了解所需信息的效率。在西方，习惯从左到右阅读，眼睛更习惯左边有轮廓鲜明的边线。

使用视觉元素
由于“左对齐水平排列标签”的优点（容易纵览标签信息以及节省垂直空间），则有可能会尝试去削弱其主要缺点：表单输入框和对应的标签的分散问题。
其中一种办法就是为标签曾加背景色和横隔线为特征：不同的背景色将表单分成垂直标签列和输入框列；横隔线将每个标签和对应的输入框划分成一组。虽然这些方法可能看起来是可取的，但也的确制造一些问题。
通过格式塔（人们的先天视觉感知规则）可知，另外还有15个视觉元素也被一同加到布局中：中线、每个有背景的方块，每个水平线。这些元素开始分散用户注意力从而使得将焦点放到重要的元素上——标签和输入框——增加了难度。Edward Tufte曾经指出：“信息包含着有重要影响的差异”（信息由差异性构成&#8211;译者）。换句话说，所有不能帮助布局的视觉元素都将会伤害到布局。这一点在你需要扫视左列标签时可以表现出来。视线一再受到水平线、边框和背景构成的方块的影响而停顿。

当然也不是说表单布局中绝对不能使用背景颜色和分隔线。当有必要向用户指出组与组之间的关系的时候，细分隔线或者浅背景色可以再视觉上将有关联的数据组合起来。这两个元素（分割线和背景颜色）都可以有效地帮助吸引用户对表单基本动作的注意力。

基本动作和次级动作
表单的基本动作（通常是“确认”或者“保存”）需要更明显的视觉感受有别于其他的表单元素（在上面的例子中鲜明的颜色、加粗字体、背景颜色等等）而且需要与输入框垂直对齐。这能指引用户完成表单。
如果表单含有多个动作，例如“继续”和“返回”，则减弱次级动作的视觉重量感则比较明智。这可以最大程度减少潜在的错误，进一步指导用户完成表单。

尽管有这些指南可以帮助你更好的设计表单位置，但是布局的组合，视觉元素以及所需的内容，仍然需要通过用户测试和数据分析进行验证（完成率、出错等等）。
&#160;
摘自：http://www.yeeyan.com/articles/view/danqing/42079
]]></description>
			<content:encoded><![CDATA[<p>“表单元素应按照逻辑组织，使得用户思维对表单能按相关字段组成的块进行处理。”——HTML: 定义指南。</p>
<p>大部分网络应用都要使用大量的表单以进行数据录入和配置。但是不是所有的网络应用的表单都是统一的。表单字段的不同对齐方式，不同的标签，动作调用以及周围的视觉元素都能对用户的行为的不同方面起到正面或负面的作用。</p>
<p><strong>表单</strong><strong>布局</strong></p>
<p>如果填写表单的时间需要尽可能短。而且用户对需要填写的数据是非常熟悉的（比如，在订单流程中输入姓名、地址和支付账户信信息），标签和输入框最好垂直对齐。每个标签和 对应的数据框排列在垂直方向上临近的位置，所有的输入框和标签垂直对齐能够节省视线移动的过程和时间，用户只需要在垂直向下一个方向上移动视线。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0014.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image001" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="529" alt="clip_image001" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image001-thumb4.gif" width="553" border="0" /></a></p>
<p>在这种布局方式中，建议对标签使用加粗字体。可以强调视觉重量感，在整体布局中突出标签。如果不加粗的话，标签会在视觉吸引力上和输入区域相混。</p>
<p>如果表单取得数据并不为用户所熟悉，又或者不好按照过程分组（比如地址的不同部分），左对齐比较容易看出表单需要的信息。用户可以上下浏览标签就可以了解需要填写的 数据而不会受到输入框的影响。但是，标签和输入框之间的距离通常会被最长的标签撑开，填写表单的时间可能会受到影响。用户需要在列于列之间跳跃寻找标签和输入框之间合适的组合。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0022.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image002" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="426" alt="clip_image002" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image002-thumb2.gif" width="553" border="0" /></a></p>
<p>还有一种选择就是右对齐标签，这样标签和输入框的对应组合就比较明了了。但是，左侧的参差不齐影响到快速了解所需信息的效率。在西方，习惯从左到右阅读，眼睛更习惯左边有轮廓鲜明的边线。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0032.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image003" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="426" alt="clip_image003" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image003-thumb2.gif" width="553" border="0" /></a></p>
<p><strong>使用视觉元素</strong></p>
<p>由于“左对齐水平排列标签”的优点（容易纵览标签信息以及节省垂直空间），则有可能会尝试去削弱其主要缺点：表单输入框和对应的标签的分散问题。</p>
<p>其中<a href="http://synapticburn.com/comments.php?id=39_0_1_0">一种办法</a>就是为标签曾加背景色和横隔线为特征：不同的背景色将表单分成垂直标签列和输入框列；横隔线将每个标签和对应的输入框划分成一组。虽然这些方法可能看起来是可取的，但也的确制造一些问题。</p>
<p>通过格式塔（人们的先天视觉感知规则）可知，另外还有15个视觉元素也被一同加到布局中：中线、每个有背景的方块，每个水平线。这些元素开始分散用户注意力从而使得将焦点放到重要的元素上——标签和输入框——增加了难度。<a href="http://www.cpcug.org/user/houser/websiteman/style/chartjunk.html">Edward Tufte</a>曾经指出：“信息包含着有重要影响的差异”（信息由差异性构成&#8211;译者）。换句话说，所有不能帮助布局的视觉元素都将会伤害到布局。这一点在你需要扫视左列标签时可以表现出来。视线一再受到水平线、边框和背景构成的方块的影响而停顿。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0042.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image004" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="520" alt="clip_image004" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image004-thumb2.gif" width="553" border="0" /></a></p>
<p>当然也不是说表单布局中绝对不能使用背景颜色和分隔线。当有必要向用户指出组与组之间的关系的时候，细分隔线或者浅背景色可以再视觉上将有关联的数据组合起来。这两个元素（分割线和背景颜色）都可以有效地帮助吸引用户对表单基本动作的注意力。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0051.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image005" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="356" alt="clip_image005" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image005-thumb1.gif" width="553" border="0" /></a></p>
<p><strong>基本动作和次级动作</strong></p>
<p>表单的基本动作（通常是“确认”或者“保存”）需要更明显的视觉感受有别于其他的表单元素（在上面的例子中鲜明的颜色、加粗字体、背景颜色等等）而且需要与输入框垂直对齐。这能指引用户完成表单。</p>
<p>如果表单含有多个动作，例如“继续”和“返回”，则减弱次级动作的视觉重量感则比较明智。这可以最大程度减少潜在的错误，进一步指导用户完成表单。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0061.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image006" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="280" alt="clip_image006" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image006-thumb1.gif" width="553" border="0" /></a></p>
<p>尽管有这些指南可以帮助你更好的设计表单位置，但是布局的组合，视觉元素以及所需的内容，仍然需要通过用户测试和数据分析进行验证（完成率、出错等等）。</p>
<p>&#160;</p>
<p>摘自：<a title="http://www.yeeyan.com/articles/view/danqing/42079" href="http://www.yeeyan.com/articles/view/danqing/42079">http://www.yeeyan.com/articles/view/danqing/42079</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.acmind.com/archives/901/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>企业还在为管理数据犯愁？试试语义网吧</title>
		<link>http://blog.acmind.com/archives/883</link>
		<comments>http://blog.acmind.com/archives/883#comments</comments>
		<pubDate>Tue, 02 Jun 2009 03:34:15 +0000</pubDate>
		<dc:creator>笑谈</dc:creator>
				<category><![CDATA[创意创业]]></category>
		<category><![CDATA[数据相关]]></category>
		<category><![CDATA[企业]]></category>
		<category><![CDATA[商务管理]]></category>
		<category><![CDATA[语义网]]></category>
		<category><![CDATA[数据]]></category>

		<guid isPermaLink="false">http://blog.acmind.com/?p=883</guid>
		<description><![CDATA[普华永道（PricewaterhouseCoopers）最新的一封技术报告（link） 阐释了语义网和连接数据将如何更好的帮助企业管理大规模的数据。普华永道技术创新中心的团队花了数月的时间研究和分析了企业数据仓库（data silos ）的问题以及为解决这一问题正在浮现出来的解决方案。根据普华永道的报告，问题的答案是语义网技术，普华永道相信，语义网为解决大规模的数据整合问题提供了一种实际可行的方法。
我们下载了这封长达58页的报告，然后在此文中为你概括了我们的一些发现。
    普华永道在这封报告中写道，语义网的底层技术（underlying technology）不仅仅可以应用在网络数据，而且也可以应用到“内部信息和非网络的外部信息”——其中包括公司的数据仓库。目前企业在关系数据库中痛苦挣扎，但是普华永道称语义网技术不光可以降低成本而且可以提供更多数据，更重要的是，公司可以将它们“不敏感&#34;的本体（ontologies）贡献到 连接数据的云中。
”有了语义网，你就无需重复别人劳动重新创建你自己的本体，因为像 musicontology.com和DBpedia的公司已经创建了不少的本体而且将它们发布到网上了。既然它们是公开而且也有用，那么你可以使用他们 所创建的本体然后再恰当的地方使用即可。理论上，你可以将一些构成你商业模型的特定的非敏感业务本体公开，让别人也可以使用它们。”
我们对建立阅读完整的报告以全面了解本体。但是本体基本上可以被看成链接数据（connect data）和元数据（metadata）的混合体。普华永道继续解释，称本体技术正在发展成为针对机构的一种流行的业务整合技术。这封报告称，数据密集型的医疗，媒体，石油和天气行业可能会成为此次运动的早期领跑者。“
企业经常面临的一个网络技术问题就是缺乏对引入的控制权。普华永道也承认这点，但是它称企业只需控制部分数据——而不是所有数据。普华永道称，为了真正利用互联网的优势，企业需要充分利用它的规模性—— 如果不放弃一些控制权这是没办法实现的。因此普华永道建议企业”只对那些无需规模化的领域保持完全的受控环境。“
这面这个表是对采用连接数据的方式来进行数据管理所有来好处的一个绝好概括。

普华永道罗列出了许多致力于企业数据整合技术的语义技术提供商。这些解决方案中并不是所有的都是基于语义网标准的，但是大多数解决方案都或多或少的依附于语义网技术。普华永道罗列出的提供商有Cambridge Semantics，Collibra，Metatomix, OpenLink Software,和Talis集团。非常有意思的是，一些大的数据库提供商也涉足早期的企业语义网市场：微软就为Word 2007提供了一个开源的本体插件(Ontology Add-In)，Oracle提供Spatial 11g，这是119数据库的一个选项，根据普华永道的报告，它提供了形形色色的语义数据管理功能。
读者可以通过这个链接（link）免费下载这封报告，这封报道还为那些想进入语义网世界的企业打包提供了许多有用的信息。如果你的公司也正在使用语义网，你可以在下面评论中告诉我们，以及到目前为止，你公司的语义网使用情况怎么样。
&#160;
摘自：http://www.yeeyan.com/articles/view/11302/43998
]]></description>
			<content:encoded><![CDATA[<p>普华永道（PricewaterhouseCoopers）最新的一封技术报告（<a href="http://www.pwc.com/techforecast">link</a>） 阐释了语义网和连接数据将如何更好的帮助企业管理大规模的数据。普华永道技术创新中心的团队花了数月的时间研究和分析了企业数据仓库（data silos ）的问题以及为解决这一问题正在浮现出来的解决方案。根据普华永道的报告，问题的答案是语义网技术，普华永道相信，语义网为解决大规模的数据整合问题提供了一种实际可行的方法。</p>
<p>我们下载了这封长达58页的报告，然后在此文中为你概括了我们的一些发现。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0027.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image002" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="304" alt="clip_image002" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image002-thumb6.jpg" width="388" border="0" /></a>    <br />普华永道在这封报告中写道，<a href="http://www.yeeyan.com/articles/tag/%E8%AF%AD%E4%B9%89%E7%BD%91"><em>语义网</em></a>的底层技术（underlying technology）不仅仅可以应用在网络数据，而且也可以应用到“内部信息和非网络的外部信息”——其中包括公司的数据仓库。目前企业在关系数据库中痛苦挣扎，但是普华永道称语义网技术不光可以降低成本而且可以提供更多数据，更重要的是，公司可以将它们“不敏感&quot;的本体（ontologies）贡献到 连接数据的云中。</p>
<p>”有了<a href="http://www.yeeyan.com/articles/tag/%E8%AF%AD%E4%B9%89%E7%BD%91"><em>语义网</em></a>，你就无需重复别人劳动重新创建你自己的本体，因为像 musicontology.com和DBpedia的公司已经创建了不少的本体而且将它们发布到网上了。既然它们是公开而且也有用，那么你可以使用他们 所创建的本体然后再恰当的地方使用即可。理论上，你可以将一些构成你商业模型的特定的非敏感业务本体公开，让别人也可以使用它们。”</p>
<p>我们对建立阅读完整的报告以全面了解本体。但是本体基本上可以被看成链接数据（connect data）和元数据（metadata）的混合体。普华永道继续解释，称本体技术正在发展成为针对机构的一种流行的业务整合技术。这封报告称，数据密集型的医疗，媒体，石油和天气行业可能会成为此次运动的早期领跑者。“</p>
<p>企业经常面临的一个网络技术问题就是缺乏对引入的控制权。普华永道也承认这点，但是它称企业只需控制部分数据——而不是所有数据。普华永道称，为了真正利用互联网的优势，企业需要充分利用它的规模性—— 如果不放弃一些控制权这是没办法实现的。因此普华永道建议企业”只对那些无需规模化的领域保持完全的受控环境。“</p>
<p>这面这个表是对采用连接数据的方式来进行数据管理所有来好处的一个绝好概括。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0036.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image003" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="385" alt="clip_image003" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image003-thumb6.jpg" width="630" border="0" /></a></p>
<p>普华永道罗列出了许多致力于企业数据整合技术的语义技术提供商。这些解决方案中并不是所有的都是基于<a href="http://www.yeeyan.com/articles/tag/%E8%AF%AD%E4%B9%89%E7%BD%91"><em>语义网</em></a>标准的，但是大多数解决方案都或多或少的依附于语义网技术。普华永道罗列出的提供商有Cambridge Semantics，Collibra，Metatomix, OpenLink Software,和Talis集团。非常有意思的是，一些大的数据库提供商也涉足早期的企业语义网市场：微软就为Word 2007提供了一个开源的本体插件(Ontology Add-In)，Oracle提供Spatial 11g，这是119数据库的一个选项，根据普华永道的报告，它提供了形形色色的语义数据管理功能。</p>
<p>读者可以通过这个链接（<a href="http://www.pwc.com/techforecast">link</a>）免费下载这封报告，这封报道还为那些想进入语义网世界的企业打包提供了许多有用的信息。如果你的公司也正在使用语义网，你可以在下面评论中告诉我们，以及到目前为止，你公司的语义网使用情况怎么样。</p>
<p>&#160;</p>
<p>摘自：<a title="http://www.yeeyan.com/articles/view/11302/43998" href="http://www.yeeyan.com/articles/view/11302/43998">http://www.yeeyan.com/articles/view/11302/43998</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.acmind.com/archives/883/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>你需要知道的开发Web应用程序的结构化过程</title>
		<link>http://blog.acmind.com/archives/875</link>
		<comments>http://blog.acmind.com/archives/875#comments</comments>
		<pubDate>Tue, 02 Jun 2009 03:06:37 +0000</pubDate>
		<dc:creator>笑谈</dc:creator>
				<category><![CDATA[设计技巧]]></category>
		<category><![CDATA[应用]]></category>
		<category><![CDATA[程序]]></category>
		<category><![CDATA[结构]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.acmind.com/?p=875</guid>
		<description><![CDATA[开发web应用程序是一件非常辛苦的事情，你需要花大把大把的时间来做无数的事情。假如你不运用有条理的方法，尤其是在复杂的项目中，你会承受忽视项目，不能按时完成，浪费时间一无所获的风险。
这篇文章中，结构化过程的插图可以帮助你运用简化的方法更加节省时间更加有效的建立你的web开发程序。
下载 Woork Papers N1幻灯片 &#124;你需要知道的开发Web应用程序的结构化过程
工序的主要阶段
     一般的web应用程序开发流程分为五个主要的阶段:     1. 明确需求     2. 设计     3. 执行     4. 测试     5. 发行
规划与跟踪监测是一个“跨阶段”的跟随开发发展的过程，定义一个在项目执行期间你需要跟踪监测的项目计划活动名单，并且每项活动需要定义一套行之有效的信息报告来进行跟踪监测，例如：
- 拥有者    - 持续的时间     - 所耗    [...]]]></description>
			<content:encoded><![CDATA[<p>开发web应用程序是一件非常辛苦的事情，你需要花大把大把的时间来做无数的事情。假如你不运用有条理的方法，尤其是在复杂的项目中，你会承受忽视项目，不能按时完成，浪费时间一无所获的风险。</p>
<p>这篇文章中，结构化过程的插图可以帮助你运用简化的方法更加节省时间更加有效的建立你的web开发程序。</p>
<p><a href="http://www.blockcheat.com/index.php?q=uggc%3A%2F%2Fjjj.fpevoq.pbz%2Fqbp%2F10042348%2FGur-Jbbex-Cncref-A1"><b>下载 Woork Papers N1</b><b>幻灯片 |</b><b>你需要知道的开发Web</b><b>应用程序的结构化过程</b></a></p>
<h6>工序的主要阶段</h6>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0012.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image001" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="226" alt="clip_image001" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image001-thumb2.gif" width="207" border="0" /></a>     <br />一般的web应用程序开发流程分为五个主要的阶段:     <br />1. 明确需求     <br />2. 设计     <br />3. 执行     <br />4. 测试     <br />5. 发行</p>
<p><b>规划与跟踪监测</b>是一个“跨阶段”的跟随开发发展的过程，定义一个在项目执行期间你需要跟踪监测的项目计划活动名单，并且每项活动需要定义一套行之有效的信息报告来进行跟踪监测，例如：</p>
<p>- 拥有者    <br />- 持续的时间     <br />- 所耗     <br />- &#8230;     <br />看一看这些前一段我所写的文章，怎样使用Excel或者Google制表软件设计制作项目实施计划：     <br /><a href="http://www.blockcheat.com/index.php?q=uggc%3A%2F%2Fjbbex.oybtfcbg.pbz%2F2007%2F11%2Fcebwrpg-znantrzrag-betnavmr-cebwrpg.ugzy">How to organize a project plan</a> 怎样组织项目规划     <br /><a href="http://www.blockcheat.com/index.php?q=uggc%3A%2F%2Fjbbex.oybtfcbg.pbz%2F2008%2F02%2Fcebwrpg-znantrzrag-rkpry-tnagg-puneg.ugzy">Excel Gantt chart template</a> Excel图表设计绘制模板     <br /><a href="http://www.blockcheat.com/index.php?q=uggc%3A%2F%2Fjbbex.oybtfcbg.pbz%2F2007%2F11%2Fhfvat-tbbtyr-fcernqfurrgf-gb-vzcyrzrag.ugzy">Implement a project plan and manage activities with Google Spreadsheets</a> 使用google电子表格实施并灵活管理项目规划</p>
<h6>1. 需求定义</h6>
<p>在这第一阶段你必须确定范围和Web应用程序的需求，在你的应用程序中必须做的，主要特点和技术要求：</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0021.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image002" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="225" alt="clip_image002" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image002-thumb1.gif" width="428" border="0" /></a></p>
<p><strong>范围</strong>     <br />为了确定Web应用程序的范围,足以编制一份明确说明适用功能的详细清单。目前重要的不是“如何”实现他们，而是“什么”需要实现！     <br /><strong>需求</strong>     <br />需求分析需求分析是一个开发过程的关键组成部分。在这一步中你需要估计潜在流量，选择一个服务器端语言（ PHP， ASP， Coldfusion &#8230;),数据库，选择一个托管服务&#8230;<strong>这里需要非常注意</strong>不要高估 /低估预期！准确的平衡的预估时间，成本和目标之间每件事情！</p>
<h6>2. 设计</h6>
<p>在需求定义阶段，你需要明确的规划“设计”你的应用。在这个阶段，可以按照以下步骤：</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0031.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image003" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="231" alt="clip_image003" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image003-thumb1.gif" width="456" border="0" /></a></p>
<p><strong>设计: 应用图</strong>     <br />应用图包含对应用有意义的和必要的结构信息：页面（用区块表示）和他们之间的主要关联。你的应用图可以像这样：</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0041.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image004" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="338" alt="clip_image004" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image004-thumb1.gif" width="407" border="0" /></a></p>
<p>通过这种方式，您拥有了有关一些“位置” （页）和“路径” （关系页）的图，您可以非常容易的遵循它，逐页，以执行应用程序的下一阶段。运用这种方式，可以节省大量的时间，并明确什么是你需要执行的。    <br /><strong>设计: 数据库</strong>     <br />Ok,现在到了设计数据库的时候了。一个简单的实现方法是使用实体关系（ER）模型 。一般来说，你可以俺咋好下面的顺序：定义第一个表确定第一个表，而不是属性和关系的表格。您的ER模型将是这样的：</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image005.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image005" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="134" alt="clip_image005" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image005-thumb.gif" width="422" border="0" /></a></p>
<p>1:1表示集的关系（在这种情况下，例如1用户只能分派1的任务， 1个用户只生活在一个城市） 。欲了解更多有关这一主题的内容，来看看我的旧文章：    <br /><a href="http://www.blockcheat.com/index.php?q=uggc%3A%2F%2Fjbbex.oybtfcbg.pbz%2F2007%2F10%2Fcebwrpg-qngnonfr-qrsvar-eryngvbafuvcf.ugzy">Define the entities-relationships model</a> 定义实体关系模型     <br /><a href="http://www.blockcheat.com/index.php?q=uggc%3A%2F%2Fjbbex.oybtfcbg.pbz%2F2007%2F11%2Fpbeerpg-nccebnpu-gb-qrsvar.ugzy">A correct approach to define relationships between database tables</a> 正确对待，以定义数据库表格关系     <br /><a href="http://www.blockcheat.com/index.php?q=uggc%3A%2F%2Fjbbex.oybtfcbg.pbz%2F2008%2F09%2F10-hfrshy-negvpyrf-nobhg-qngnonfr.ugzy">10 Useful articles about Database design</a> 十篇有用的数据库设计文章     <br /><strong>设计: 页面结构</strong>     <br /><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image006.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image006" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="228" alt="clip_image006" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image006-thumb.gif" width="246" border="0" /></a>     <br />下一步工作是设计大体的页面结构，用名称命名确定所有的主要部分 (例如 <em>#header</em>, <em>#navbar</em>, #mainContent, <em>#sidebar</em>).     <br /><strong>设计: 服务端语言</strong>     <br />使用面向对象的开发方法进行开发，你可以定义类，函数和所有你所需要的，记住&#8230; 那不是“执行”只是下一阶段实施的“指南”.     <br /><strong>设计: JS 框架</strong>     <br />这一步选择JavaScript 框架(jQuery, Scriptaculous, MooTools&#8230;), 通过确定主要的特点和所需实施的效果（拖放，动画效果&#8230; ）编制简单的关于在一个或多个网页中有关联的每一个具体功能应用图的列表。</p>
<p>次点设计阶段已完成。让我们实施吧！</p>
<h6>3. 实施</h6>
<p>Ok.. 现在是真正的挑战的开始，因为“执行”才是实现应用。您可以划分这一阶段为以下几个步骤:</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image007.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image007" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="270" alt="clip_image007" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image007-thumb.gif" width="445" border="0" /></a></p>
<p><strong>执行: 数据库</strong>     <br />创建一个新数据库，写SQL代码定义表，属性和关系。看看下面的，过去我致力于一些有关此主题的文章的链接，以获取更多信息：     <br /><a href="http://www.blockcheat.com/index.php?q=uggc%3A%2F%2Fjbbex.oybtfcbg.pbz%2F2007%2F10%2Fcebwrpg-qngnonfr-ubj-gb-hfr-cuc-naq-fdy.ugzy">How to use PHP and SQL to create DB tables and relationships</a> 怎样使用PHP创建DB表和关系     <br /><a href="http://www.blockcheat.com/index.php?q=uggc%3A%2F%2Fjbbex.oybtfcbg.pbz%2F2007%2F10%2Fcebwrpg-qngnonfr-perngr-gnoyr-naq.ugzy">Create tables and relationships with SQL</a> 使用SQL创建表和关系     <br /><strong>执行: HTML</strong>     <br />使用在设计阶段定义的页面结构实施 HTML 代码:</p>
<p>&lt;div id=&quot;header&quot;&gt; &lt;/div&gt;    <br />&lt;div id=&quot;navbar&quot;&gt; &lt;/div&gt;     <br />&lt;div id=&quot;mainContent&quot;&gt; &lt;/div&gt;     <br />&lt;div id=&quot;sidebar&quot;&gt; &lt;/div&gt;     <br />&lt;div id=&quot;footer&quot;&gt; &lt;/div&gt;</p>
<p>这是目前在已经确定的设计阶段需要田间的所有的HTML元素。例如 <b>mainContent</b> 部分包含了所发表的文章的标题，正文本，标签，添加他们:</p>
<p>&lt;div id=&quot;header&quot;&gt; &lt;/div&gt;    <br />&lt;div id=&quot;navbar&quot;&gt; &lt;/div&gt;     <br />&lt;div id=&quot;mainContent&quot;<b>&gt;</b></p>
<p>&lt;h1&gt;&lt;!&#8211; Post title &#8211;&gt;&lt;/h1&gt;    <br />&lt;p&gt;&lt;!&#8211; Text body &#8211;&gt;&lt;/p&gt;     <br />&lt;small&gt;&lt;!&#8211; Post tags &#8211;&gt;&lt;/small&gt;</p>
<p><b>&lt;/div&gt;</b>     <br />&lt;div id=&quot;sidebar&quot;&gt; &lt;/div&gt;     <br />&lt;div id=&quot;footer&quot;&gt; &lt;/div&gt;</p>
<p><strong>实施: <a href="http://www.yeeyan.com/articles/tag/CSS"><em>CSS</em></a></strong>     <br />当主体结构已经准备就绪，开始编写CSS代码添加样式。如果您需要一些如何撰写更好的CSS代码建议，请看看这些文章：     <br /><a href="http://www.blockcheat.com/index.php?q=uggc%3A%2F%2Fjbbex.oybtfcbg.pbz%2F2008%2F11%2Fpff-pbqvat-frznagvp-nccebnpu-va-anzvat.ugzy">CSS coding: semantic approach in naming convention</a> CSS编码：语义的方法命名惯例     <br /><a href="http://www.blockcheat.com/index.php?q=uggc%3A%2F%2Fjbbex.oybtfcbg.pbz%2F2008%2F11%2Fhfrshy-thvqryvarf-gb-vzcebir-pff-pbqvat.ugzy">Useful guidelines to improve CSS coding and maintainability</a> 有益的改善的CSS编码和可维护性的指南     <br /><strong>实施: 服务器端语言</strong></p>
<p>实施应用类，应用功能,DB互动，查询，以及一切需要服务器端的实现的交互。</p>
<p><strong>实施: JavaScript</strong>     <br />使用在设计阶段选择的框架（ jQuery ， Scriptaculous ， MooTools &#8230;)来实施Ajax的功能（拖放，动画效果&#8230; ）</p>
<h6>4. 测试</h6>
<p>在这一阶段需要“强调”的是。你的应用程序能在各种条件下执行（例如使用不同的浏览器）。您的目标是在最后释放前检测和修复所有的应用程序错误。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0081.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image008" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="32" alt="clip_image008" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image008-thumb1.gif" width="32" border="0" /></a></p>
<p>请记住，这一过程需要有条理，需要极大的耐心！测试每个页面和每个功能（在这种情况下还可以帮助理顺应用图） 。如果在测试过程中发现一个bug ，修改代码修复它并继续进行最后的代码确认（进一步的测试）。</p>
<h6>5. 发布</h6>
<p>最后你准备好发布了！在测试文件夹中发布并做最后的测试，假如一切都OK的话，那就进行最后的发布吧。</p>
<h6>在Scribd上，阅读与下载此篇文章</h6>
<p><a href="http://www.blockcheat.com/index.php?q=uggc%3A%2F%2Fjjj.fpevoq.pbz%2Fqbp%2F10042348%2FGur-Jbbex-Cncref-A1"><b>下载 Woork Papers N1</b><b>幻灯片 |</b><b>你需要知道的开发Web</b><b>应用程序的结构化过程</b></a></p>
<p>&#160;</p>
<p>摘自：<a title="http://www.yeeyan.com/articles/view/61966/42660?tag_related" href="http://www.yeeyan.com/articles/view/61966/42660?tag_related">http://www.yeeyan.com/articles/view/61966/42660?tag_related</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.acmind.com/archives/875/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用整洁的HTML标记构建页面</title>
		<link>http://blog.acmind.com/archives/858</link>
		<comments>http://blog.acmind.com/archives/858#comments</comments>
		<pubDate>Tue, 02 Jun 2009 02:58:40 +0000</pubDate>
		<dc:creator>笑谈</dc:creator>
				<category><![CDATA[设计技巧]]></category>
		<category><![CDATA[页面]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[构建]]></category>
		<category><![CDATA[标记]]></category>
		<category><![CDATA[整洁]]></category>

		<guid isPermaLink="false">http://blog.acmind.com/?p=858</guid>
		<description><![CDATA[网络是个不断发展变化的有机体，如何建设可以长久适应互联网发展的页面是很重要的，它可以是你的网站在互联网发展的激流中迅速跟进。
使用整洁的HTML标记，构建符合标准的页面可以帮助你做到这些，更重要的，它可以是你在未来的运营中节省大量的时间和金钱。
网页技术是跟随互联网技术的发展而进步的，HTML技术已经发展了很长时间，它的伴生技术也已发展稳定。
首先是Javascript，然后是CSS、XML，直到现在的AJAX，HTML5的大规模运用也已初现端倪——Firefox、Safari、 Opera和Chrome已经基本完全支持HTML5（在这个问题上，微软的Internet Explorer再一次阻碍了互联网的发展#-_-）
在这篇文章里，我们会探讨基础的web标准，讨论它们是什么，他们有什么意义，以及这些重要但常被忽视的问题的解决方法。
什么是“整洁”的HTML标记？
简单来说，“整洁”的HTML标记指的是：没有累赘，符合标准，使用有意义的标签和结构。
没有累赘的HTML代码可以充分的利用标签，消除了不必要的代码，仅保存有意义的标记。它避免了无用的属性，比如嵌入式CSS，保持了文档结构的整齐。
同样的，没有累赘的CSS代码应该避免自身的重复，使用可继承的属性(记住CSS的本意是层叠样式表)，并且科学的重用CSS Class。
符合标准指的是你的页面可以通过W3C的HTML、CSS、XML标准验证，使用免费的W3C验证器，找出并修改错误，继续测试知道100%符合标准。
为什么要这样？只要能正常显示不就够了吗？
每个项目都有一个紧迫的时限，用户希望网站越早发布越好。所以网站开发和设计人员都被要求快速高效的完成工作。
人很容易陷入一种陷阱——快速就意味着草率，书写整洁、符合标准的代码会浪费时间。经常有人说：“它正常显示了，就没问题了”。
虽然此时此刻它显示了，但明年呢？三年以后呢？浏览器换代怎么办？设备兼容吗？
你真的以为搜索引擎会去一行一行的抠你的代码吗，它们是很挑剔的，如果你不使用标准化的代码，就相当于你自己赶跑了搜索引擎。
如果有其他的员工来修改你的代码会怎样，如果你被老板炒了，或者自己跳槽了会怎样？会有继任者来看你的代码，理解它们的意思。你是想让这件事变得简单，还是想让他在背地里扎你的小人？
开始正确的书写它吧，这并不是一项烦人的事情，它会节省你的时间和金钱，并且让你少些后顾之忧。
你可能以为使用嵌入式CSS写页面更快，你也可能觉得不考虑结构直接书写HTML更方便。
但是当你修改文档或者将来你要改版网站的时候，你会花更多的时间来弥补劣质代码造成的干扰。如果你建立了新的样式表，那分散在HTML代码中的嵌入式CSS会给你带来很大麻烦，你可能会花几小时的时间来剥离他们。
可扩展，设备友好，语义化和易升级
手机浏览器的发展越来越快，手机上网不再是黑莓的专利，现在每天有数以亿计的人在使用手机浏览网页。
具备为视力障碍人士开发的辅助浏览技术或为肢体不方便的人设计的特殊操作界面的设备已经很常见。如果你不想失去这么庞大的用户群的话，就要考虑设备友好的问题。
你的网站可能会被以盲文的形式提供给用户，有了 互联网内容存储、 Google快照等工具，你的网页即使被删除，也可能会在网络上被保留很长时间。     
使用整洁、符合标准的标记可以使你轻松应对以上的情况。
Do和Don&#8217;t (&#34;要&#34;和&#34;不要&#34;)
DO &#8211; 使用预定义的标签。例如：h1是一个网页内容中最重要的部分，然后是h2,h3等等，一个网页中只能有一个h1；
DO &#8211; 使用有意义的元素命名。问问自己如果别人来阅读代码的话，会不会明白你的class和ID的命名的意思，比如，同样一个层，用#box12 还是#comment-footer，你觉得哪个更好些？
DO &#8211; 充分利用CSS的继承性。例如：你在一个container中设置了字体属性，那么你就不必在其子元素中再分别设置了，除非它用不同的字体。这会使你的样式表明晰简洁。
DO &#8211; 让你的HTML、CSS、XML代码符合标准。使用W3C验证器验证错误和警告，修改它们知道100%符合标准。
DO &#8211; 反复检查所见即所得编辑器产生的代码。所见即所得浏览器是产生垃圾代码的大头，一定要尽量精简它产生的代码。
DON&#8217;T &#8211; 不要使用嵌入式css样式和无关的标记和属性。即使你很忙乱，也不要顺手加这些东西。
DON&#8217;T &#8211; 不要满足于“正确显示”。因为隐藏在页面中的错误可能会在其他浏览器或设备中把页面毁的面目全非。
&#160;
摘自：http://www.yeeyan.com/articles/view/oc/40030?tag_related
]]></description>
			<content:encoded><![CDATA[<p>网络是个不断发展变化的有机体，如何建设可以长久适应互联网发展的页面是很重要的，它可以是你的网站在互联网发展的激流中迅速跟进。</p>
<p>使用整洁的HTML标记，构建符合标准的页面可以帮助你做到这些，更重要的，它可以是你在未来的运营中节省大量的时间和金钱。</p>
<p>网页技术是跟随互联网技术的发展而进步的，HTML技术已经发展了很长时间，它的伴生技术也已发展稳定。</p>
<p>首先是Javascript，然后是CSS、XML，直到现在的AJAX，HTML5的大规模运用也已初现端倪——Firefox、Safari、 Opera和Chrome已经基本完全支持HTML5（在这个问题上，微软的Internet Explorer再一次阻碍了互联网的发展#-_-）</p>
<p>在这篇文章里，我们会探讨基础的web标准，讨论它们是什么，他们有什么意义，以及这些重要但常被忽视的问题的解决方法。</p>
<h5>什么是“整洁”的HTML标记？</h5>
<p>简单来说，“整洁”的HTML标记指的是：没有累赘，符合标准，使用有意义的标签和结构。</p>
<p>没有累赘的HTML代码可以充分的利用标签，消除了不必要的代码，仅保存有意义的标记。它避免了无用的属性，比如嵌入式CSS，保持了文档结构的整齐。</p>
<p>同样的，没有累赘的CSS代码应该避免自身的重复，使用可继承的属性(记住CSS的本意是层叠样式表)，并且科学的重用CSS Class。</p>
<p>符合标准指的是你的页面可以通过<a href="http://www.w3.org/Consortium/">W3C</a>的HTML、CSS、XML标准验证，使用免费的W3C验证器，找出并修改错误，继续测试知道100%符合标准。</p>
<h5>为什么要这样？只要能正常显示不就够了吗？</h5>
<p>每个项目都有一个紧迫的时限，用户希望网站越早发布越好。所以网站开发和设计人员都被要求快速高效的完成工作。</p>
<p>人很容易陷入一种陷阱——快速就意味着草率，书写整洁、符合标准的代码会浪费时间。经常有人说：“它正常显示了，就没问题了”。</p>
<p>虽然此时此刻它显示了，但明年呢？三年以后呢？浏览器换代怎么办？设备兼容吗？</p>
<p>你真的以为搜索引擎会去一行一行的抠你的代码吗，它们是很挑剔的，如果你不使用标准化的代码，就相当于你自己赶跑了搜索引擎。</p>
<p>如果有其他的员工来修改你的代码会怎样，如果你被老板炒了，或者自己跳槽了会怎样？会有继任者来看你的代码，理解它们的意思。你是想让这件事变得简单，还是想让他在背地里扎你的小人？</p>
<p>开始正确的书写它吧，这并不是一项烦人的事情，它会节省你的时间和金钱，并且让你少些后顾之忧。</p>
<p>你可能以为使用嵌入式CSS写页面更快，你也可能觉得不考虑结构直接书写HTML更方便。</p>
<p>但是当你修改文档或者将来你要改版网站的时候，你会花更多的时间来弥补劣质代码造成的干扰。如果你建立了新的样式表，那分散在HTML代码中的嵌入式CSS会给你带来很大麻烦，你可能会花几小时的时间来剥离他们。</p>
<h5>可扩展，设备友好，语义化和易升级</h5>
<p>手机浏览器的发展越来越快，手机上网不再是黑莓的专利，现在每天有数以亿计的人在使用手机浏览网页。</p>
<p>具备为视力障碍人士开发的辅助浏览技术或为肢体不方便的人设计的特殊操作界面的设备已经很常见。如果你不想失去这么庞大的用户群的话，就要考虑设备友好的问题。</p>
<p>你的网站可能会被以盲文的形式提供给用户，有了 <a href="http://www.archive.org/index.php">互联网内容存储</a>、 <a href="http://www.googleguide.com/cached_pages.html">Google快照</a>等工具，你的网页即使被删除，也可能会在网络上被保留很长时间。     </p>
<p>使用整洁、符合标准的标记可以使你轻松应对以上的情况。</p>
<h5>Do和Don&#8217;t (&quot;要&quot;和&quot;不要&quot;)</h5>
<p>DO &#8211; 使用预定义的标签。例如：h1是一个网页内容中最重要的部分，然后是h2,h3等等，一个网页中只能有一个h1；</p>
<p>DO &#8211; 使用有意义的元素命名。问问自己如果别人来阅读代码的话，会不会明白你的class和ID的命名的意思，比如，同样一个层，用#box12 还是#comment-footer，你觉得哪个更好些？</p>
<p>DO &#8211; 充分利用CSS的继承性。例如：你在一个container中设置了字体属性，那么你就不必在其子元素中再分别设置了，除非它用不同的字体。这会使你的样式表明晰简洁。</p>
<p>DO &#8211; 让你的HTML、CSS、XML代码符合标准。使用W3C验证器验证错误和警告，修改它们知道100%符合标准。</p>
<p>DO &#8211; 反复检查所见即所得编辑器产生的代码。所见即所得浏览器是产生垃圾代码的大头，一定要尽量精简它产生的代码。</p>
<p>DON&#8217;T &#8211; 不要使用嵌入式css样式和无关的标记和属性。即使你很忙乱，也不要顺手加这些东西。</p>
<p>DON&#8217;T &#8211; 不要满足于“正确显示”。因为隐藏在页面中的错误可能会在其他浏览器或设备中把页面毁的面目全非。</p>
<p>&#160;</p>
<p>摘自：<a title="http://www.yeeyan.com/articles/view/oc/40030?tag_related" href="http://www.yeeyan.com/articles/view/oc/40030?tag_related">http://www.yeeyan.com/articles/view/oc/40030?tag_related</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.acmind.com/archives/858/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS Sprites + 圆角</title>
		<link>http://blog.acmind.com/archives/853</link>
		<comments>http://blog.acmind.com/archives/853#comments</comments>
		<pubDate>Tue, 02 Jun 2009 02:07:11 +0000</pubDate>
		<dc:creator>笑谈</dc:creator>
				<category><![CDATA[设计技巧]]></category>
		<category><![CDATA[圆角]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[sprites]]></category>

		<guid isPermaLink="false">http://blog.acmind.com/?p=853</guid>
		<description><![CDATA[初步介绍
当然，我知道现在有成千上万个关于 用CSS处理圆角 的教程，但不管怎么说，我仍然想把这篇文章展示给您。也希望您会发现这篇文章会非常有用。需要重点指出的是，这篇教程彻底地应用高级CSS技术，但是，我会尽力使初学者看起来简单。CSS3 在这里还没有得到完全的应用，所以，知道现在，我会保持W3C验证的有效。
看一下演示 &#124; 下载 css sprites + 圆角
您还可以参考一下文章：
43个PSD转XHTML, CSS创建布局及导航辅导教程,解析事件背后的每一个步骤
我们将怎样来处理?
我处理圆角的版本是由内置的绝对定位的四个div组成，每个div都有唯一的圆角图片作CSS Sprite操作。我们将会这样做: 
是什么方式导致这项技术表现得这么了不起呢（What makes this technique cool）?
通过可变的宽度和高度处理毗邻的元素的能力。没有极限。（The ability to make rounded-bordered elements with fluid width and height. No limits whatsoever.）这项技术，正如我之前提到的，是与 CSS Sprites 结合操作完成的。如果您不知道这是项怎样的技术或者说不知道怎么使用它，那么请先阅读我 之前的文章。CSS sprites 都学会了吗? 那我们就开始吧!
第一步: 创建我们的 Sprite

为矩形圆角图片处理选择一款编辑器 (在这个案例中我选择的是Firework).       
切割并且导出圆角到本地临时位置 (我们将会在之后用到).       
新创建一个文件，将圆角导入到这个新文件中，复制三次，然后旋转这三个新切片得到另外的三个圆角。 [...]]]></description>
			<content:encoded><![CDATA[<h5>初步介绍</h5>
<p>当然，我知道现在有成千上万个关于<strong> 用CSS处理圆角 </strong>的教程，但不管怎么说，我仍然想把这篇文章展示给您。也希望您会发现这篇文章会非常有用。需要重点指出的是，这篇教程彻底地应用高级CSS技术，但是，我会尽力使初学者看起来简单。<strong>CSS3</strong> 在这里还没有得到完全的应用，所以，知道现在，我会保持W3C验证的有效。</p>
<p><a href="http://www.ignacioricci.com/tutorials/rounded%20corners/demo/rounded-corners.html">看一下演示</a> | <a href="http://www.ignacioricci.com/tutorials/rounded%20corners/demo-rounded-corners.zip">下载 css sprites + 圆角</a></p>
<p>您还可以参考一下文章：</p>
<h4><a href="http://www.iwanna.cn/archives/2009/05/03/886/">43个PSD转XHTML, CSS创建布局及导航辅导教程,解析事件背后的每一个步骤</a></h4>
<h5>我们将怎样来处理?</h5>
<p>我处理圆角的版本是由内置的绝对定位的四个div组成，每个div都有唯一的圆角图片作CSS Sprite操作。我们将会这样做: <a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0026.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image002[6]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="440" alt="clip_image002[6]" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0026-thumb.gif" width="622" border="0" /></a></p>
<h6>是什么方式导致这项技术表现得这么了不起呢（What makes this technique cool）?</h6>
<p>通过可变的宽度和高度处理毗邻的元素的能力。没有极限。（The ability to make rounded-bordered elements with fluid width and height. No limits whatsoever.）这项技术，正如我之前提到的，是与 <a href="http://cssglobe.com/post/3028/creating-easy-and-useful-css-sprites">CSS Sprites</a> 结合操作完成的。如果您不知道这是项怎样的技术或者说不知道怎么使用它，那么请先阅读我 <a href="http://cssglobe.com/post/3028/creating-easy-and-useful-css-sprites">之前的文章</a>。CSS sprites 都学会了吗? 那我们就开始吧!</p>
<h5>第一步: 创建我们的 Sprite</h5>
<ol>
<li>为矩形圆角图片处理选择一款编辑器 (在这个案例中我选择的是Firework).      <br /><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0037.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image003[7]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="125" alt="clip_image003[7]" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0037-thumb.gif" width="499" border="0" /></a> </li>
<li>切割并且导出圆角到本地临时位置 (我们将会在之后用到).      <br /><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0047.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image004[7]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="125" alt="clip_image004[7]" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0047-thumb.gif" width="499" border="0" /></a> </li>
<li>新创建一个文件，将圆角导入到这个新文件中，复制三次，然后旋转这三个新切片得到另外的三个圆角。      <br /><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0056.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image005[6]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="90" alt="clip_image005[6]" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0056-thumb.gif" width="80" border="0" /></a> </li>
<li>合成四个圆角为一张图片, 并用 <strong>1px </strong><strong>的红线</strong> 来区分它们.       <br /><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0066.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image006[6]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="79" alt="clip_image006[6]" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0066-thumb.gif" width="77" border="0" /></a> </li>
<li>导出合成图片，sprite 也就大功告成了。 </li>
</ol>
<h5>第二步: HTML 代码</h5>
<p>首先，我们会给容器 div 一个 <strong>.roundedBox</strong></p>
<p>类 :</p>
<pre>&lt;div <strong>class=&quot;roundedBox&quot;</strong>&gt;&lt;/div&gt;</pre>
<p>现在，我们必须再增加四个 div ，这会在将来创建圆角的时候用到。之后必须给每个加载一个类 <strong>.corner</strong>，同时也标识一个类来指定它们格子的位置。</p>
<pre class="code">&lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;roundedBox&quot;</span>&gt;
     &lt;strong&gt;My content <span style="color: blue">in </span>roundedBox Type 1&lt;/strong&gt;
     &lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;corner topLeft&quot;</span>&gt;&lt;/div&gt;
     &lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;corner topRight&quot;</span>&gt;&lt;/div&gt;
     &lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;corner bottomLeft&quot;</span>&gt;&lt;/div&gt;
     &lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;corner bottomRight&quot;</span>&gt;&lt;/div&gt;
&lt;/div&gt; </pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>一切搞定? 嗯，让我们把注意力再转移到 CSS 代码上来。</p>
<h5>第三步: CSS 代码</h5>
<p>如你所知, (或者您会在这里快速学习到) 绝对定位元素通常都依照相对定位的父元素进行定位。. If this element is not defined, they will take as their parent relatively-positioned element, the body tag.如果这个父元素无法界定，那么它会去最近作相对定位的那个父元素，直至 body 标签。 <strong>哈?!</strong> &#8211; 好了，如果到此为止您仍没有掌握，不用担心，我们将在第二部分了解它。（翻译得有点拗，附上原文：Ok, if you didn’t get this, don’t worry, you’ll catch it in an second.）</p>
<h6>让我们先来定义下所有的圆角</h6>
<p>所有的圆角都必须定义绝对定位，并且注明高度跟宽度。 <strong>我的圆角定义的宽度跟高度都是 17px.<br />
    <br /></strong><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0076.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image007[6]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="76" alt="clip_image007[6]" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0076-thumb.gif" width="72" border="0" /></a></p>
<pre class="code">.corner {
position:absolute;
       width:17px;
       height:17px;
}</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p><em>如果您是第一次切割矩形圆角，那么宽度跟高度很可能会不一样 (咄!)。</em></p>
<h6>现在开始定义 div 容器样式:</h6>
<pre class="code">.roundedBox {position:relative;}</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>任何定义有类 <strong>.roundedBox</strong> 的元素内，绝对定位元素都会相对于这个元素进行定位，而不是标签 body。 我们也必须设置一些padding值，如果没有设置，圆角将会覆盖我们的文本，这肯定不是我们想要的效果。 <strong>重要提示:</strong> top 和 bottom padding 值必须 等价于圆角的 <strong>height</strong>。left 和 right padding 值必须等价于圆角的宽度。 正如您已经知道的，我的圆角宽度跟高度是相等的，因此，四个边角的padding 值也是相等的:</p>
<pre class="code">.roundedBox {position:relative; padding:17px; margin:10px 0;}</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p><em>我也通过 margin 给我们的 div 流出了一定的空隙 </em></p>
<h6>最后，让我们对没有圆角作单独定义</h6>
<p>我们会对每个圆角作绝对定位设置，并且定位背景图的位置 (根据我们的 sprite):</p>
<pre class="code">.roundedBox {position:relative; padding:17px; margin:10px 0;}
.corner {position:absolute; width:17px; height:17px;}
.topLeft {top:0; left:0; background-position:-1px -1px;}
.topRight {top:0; right:0; background-position:-19px -1px;}
.bottomLeft {bottom:0; left:0; background-position:-1px -19px;}
.bottomRight {bottom:0; right:0; background-position:-19px -19px;}</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>您可能已经注意到，我们的样式仍然还没有下载 sprite。我们一般不会去定义它们的原因是，我们会使用另外的方法。</p>
<h5>圆形盒模型 1 (蓝色)</h5>
<h6>HTML 代码</h6>
<pre class="code">&lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;roundedBox&quot; </span>id=<span style="color: #a31515">&quot;type1&quot;</span>&gt;
    &lt;strong&gt;My content <span style="color: blue">in </span>roundedBox Type 1&lt;/strong&gt;
    &lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;corner topLeft&quot;</span>&gt;&lt;/div&gt;
    &lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;corner topRight&quot;</span>&gt;&lt;/div&gt;
    &lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;corner bottomLeft&quot;</span>&gt;&lt;/div&gt;
    &lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;corner bottomRight&quot;</span>&gt;&lt;/div&gt;
&lt;/div&gt;</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>我们必须给容器 div 定义一个ID为 <strong>#type1</strong>，用来实施特殊背景。</p>
<h6>CSS 代码</h6>
<p>首先，我们得给 #type1 匹配一个背景色，使之融合于 sprite 中的圆角:</p>
<pre class="code">#type1 {background-color:#CCDEDE;}</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0096.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image009[6]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="57" alt="clip_image009[6]" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0096-thumb.gif" width="116" border="0" /></a> </p>
<p>之后，通过定义 .corner 类来协助圆形盒模型载入 Sprite 样式:</p>
<pre class="code">#type1 {background-color:#CCDEDE;}
#type1 .corner {background-image:url(../images/corners-type1.gif);}</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0106.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image010[6]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="57" alt="clip_image010[6]" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0106-thumb.gif" width="57" border="0" /></a> </p>
<p>好了，我们的第一个圆角矩形大功告成了！<a href="http://www.ignacioricci.com/tutorials/rounded%20corners/previews/preview-type1.html">预览圆角矩形模型1 (蓝色)</a>.</p>
<h5>圆形盒模型 2 (绿色) / 圆形盒模型 3 (紫色)</h5>
<p>模型1，模型2跟模型3的唯一差别就是它们的颜色，所以我们也仅仅只修改这些。</p>
<h6>模型 2 (绿色)</h6>
<p>HTML 代码</p>
<pre class="code">&lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;roundedBox&quot; </span>id=<span style="color: #a31515">&quot;type2&quot;</span>&gt;
    &lt;strong&gt;My content <span style="color: blue">in </span>roundedBox Type 2&lt;/strong&gt;
    &lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;corner topLeft&quot;</span>&gt;&lt;/div&gt;
    &lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;corner topRight&quot;</span>&gt;&lt;/div&gt;
    &lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;corner bottomLeft&quot;</span>&gt;&lt;/div&gt;
    &lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;corner bottomRight&quot;</span>&gt;&lt;/div&gt;
&lt;/div&gt;</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>CSS 代码 (仅仅修改 sprites 的颜色及背景色)<br />
  <br /><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0116.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image011[6]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="57" alt="clip_image011[6]" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0116-thumb.gif" width="57" border="0" /></a></p>
<pre class="code">#type2 {background-color:#CDDFCA;}
#type2 .corner {background-image:url(../images/corners-type2.gif);}</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p><a href="http://www.ignacioricci.com/tutorials/rounded%20corners/previews/preview-type2.html">预览圆角矩形模型2 (绿色)</a>.</p>
<h6>模型 3 (紫色)</h6>
<p>HTML 代码</p>
<pre class="code">&lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;roundedBox&quot; </span>id=<span style="color: #a31515">&quot;type3&quot;</span>&gt;
    &lt;strong&gt;My content <span style="color: blue">in </span>roundedBox Type 3&lt;/strong&gt;
    &lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;corner topLeft&quot;</span>&gt;&lt;/div&gt;
    &lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;corner topRight&quot;</span>&gt;&lt;/div&gt;
    &lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;corner bottomLeft&quot;</span>&gt;&lt;/div&gt;
    &lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;corner bottomRight&quot;</span>&gt;&lt;/div&gt;
&lt;/div&gt;</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>CSS 代码 (仅仅修改 sprites 的颜色及背景色)<br />
  <br /><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0126.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image012[6]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="57" alt="clip_image012[6]" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0126-thumb.gif" width="57" border="0" /></a></p>
<pre class="code">#type3 {background-color:#D3CADF;}
#type3 .corner {background-image:url(../images/corners-type3.gif);}</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p><a href="http://www.ignacioricci.com/tutorials/rounded%20corners/previews/preview-type3.html">预览圆角矩形模型 3 (紫色)</a>. 都学会了吗？好，现在我们再进一步学习 </p>
<h5>模型 4 (红色边框)</h5>
<p>模型4 跟模型1、2、3又有什么区别呢？边框和颜色，让我们来解决这些因素吧。</p>
<h6>HTML 代码</h6>
<pre class="code">&lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;roundedBox&quot; </span>id=<span style="color: #a31515">&quot;type4&quot;</span>&gt;
    &lt;strong&gt;My content <span style="color: blue">in </span>roundedBox Type 4&lt;/strong&gt;
    &lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;corner topLeft&quot;</span>&gt;&lt;/div&gt;
    &lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;corner topRight&quot;</span>&gt;&lt;/div&gt;
    &lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;corner bottomLeft&quot;</span>&gt;&lt;/div&gt;
    &lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;corner bottomRight&quot;</span>&gt;&lt;/div&gt;
&lt;/div&gt;</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<h6>CSS 代码 (在 sprite 中给您的边角的边框都添上边框，并使 .roundedBox 类的背景及边框融合 sprite。)</h6>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0136.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image013[6]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="57" alt="clip_image013[6]" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0136-thumb.gif" width="128" border="0" /></a></p>
<pre class="code">#type4 {background-color:#CCACAE; border:1px solid #AD9396;}
#type4 .corner {background-image:url(../images/corners-type4.gif);}</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0146.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image014[6]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="57" alt="clip_image014[6]" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0146-thumb.gif" width="57" border="0" /></a> </p>
<p>好了，这个就是截图效果。我们的边角还不能正确地覆盖 #type4 边框。所以我们必须矫正它们的定位来覆盖早期的定位样式。让我们做到这一点:</p>
<pre class="code">#type4 {background-color:#CCACAE; border:1px solid #AD9396;}
#type4 .corner {background-image:url(../images/corners-type4.gif);}
#type4 .topLeft {top:-1px;left:-1px;}
#type4 .topRight {top:-1px; right:-1px;}
#type4 .bottomLeft {bottom:-1px; left:-1px;}
#type4 .bottomRight {bottom:-1px; right:-1px;}</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>好了，这就是我们完成的模型 4。<a href="http://www.ignacioricci.com/tutorials/rounded%20corners/previews/preview-type4.html">预览圆角矩形模型4 (红色边框)</a>. We are almost there, don’t quit now :p</p>
<h5>模型 5 (垂直渐变)</h5>
<p>好了，模型5会需要更多的工作量，我们应该这样:</p>
<ol>
<li>修改上下边角的高度 (由渐变度决定(depending on your gradient))。 </li>
<li>修改上下边角的背景图定位 (由渐变度决定)。 </li>
<li>通过重复平铺 1px 的背景图片来创建容器 div 的渐变效果。 </li>
<li>值得注意的是，我们必须给内容设置一个大小，或者给容器设置一个最小高度(由渐变度决定)。 </li>
</ol>
<p>让我们开始吧。</p>
<h6>HTML 代码 (跟之前的一样)</h6>
<pre class="code">&lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;roundedBox&quot; </span>id=<span style="color: #a31515">&quot;type5&quot;</span>&gt;
    &lt;strong&gt;My content <span style="color: blue">in </span>roundedBox Type 5&lt;/strong&gt;
    &lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;corner topLeft&quot;</span>&gt;&lt;/div&gt;
    &lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;corner topRight&quot;</span>&gt;&lt;/div&gt;
    &lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;corner bottomLeft&quot;</span>&gt;&lt;/div&gt;
    &lt;div <span style="color: blue">class</span>=<span style="color: #a31515">&quot;corner bottomRight&quot;</span>&gt;&lt;/div&gt;
&lt;/div&gt;</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<h6>CSS 代码</h6>
<p>我的渐变是从上到下垂直的。所以我们必须增加上边角的高度，以及更改下边角的背景图位置。当您看到我的新的 sprite 就会明白为什么会这么处理。就是下面这张: <a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0166.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image016[6]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="180" alt="clip_image016[6]" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0166-thumb.gif" width="57" border="0" /></a> </p>
<p>我的div中的背景图片是这样的: </p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0186.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image018[6]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="160" alt="clip_image018[6]" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0186-thumb.gif" width="21" border="0" /></a><em><br />
    <br />1px </em><em>的宽度，它的确是存在的</em>。 我的下边角有一条实心颜色，刚好可以匹配div的背景色。 少说话多行动。我们来继续定义容器 div :</p>
<pre class="code">#type5 {
    background:#FECBCA url(../images/roundedbox-type5-bg.png) repeat-x 0 0;
    min-height:110px;
}</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>给容器设置的背景颜色是我从底部边角中吸取的。然后将背景图片按 x 方向进行重复。最后我给它设置一个最小高度，正如我之前所说的，渐变才不会泄露。最后来加上所有的边角 (我将文件的类型修改为 .png 格式的图片，为的是能得到更好的渐变质量):</p>
<pre class="code">#type5 {
    background:#FECBCA url(../images/roundedbox-type5-bg.png) repeat-x 0 0;
    min-height:110px;
}
#type5 .corner {background-image:url(../images/corners-type5.png);}</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>现在，我增加上边角的高度 (这是由渐变最后抵达的颜色位置决定的):</p>
<pre class="code">#type5 {
    background:#FECBCA url(../images/roundedbox-type5-bg.png) repeat-x 0 0;
    min-height:110px;
}
#type5 .corner {background-image:url(../images/corners-type5.png);}
#type5 .topLeft,#type5 .topRight {height:140px;}</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>最后，我纠正下下边角的背景图定位:</p>
<pre class="code">#type5 {
    background:#FECBCA url(../images/roundedbox-type5-bg.png) repeat-x 0 0;
    min-height:110px;
}
#type5 .corner {background-image:url(../images/corners-type5.png);}
#type5 .topLeft,#type5 .topRight {height:140px;}
#type5 .bottomLeft {background-position:-1px -142px;}
#type5 .bottomRight {background-position:-19px -142px;}</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>全部完成! &#8211; <a href="http://www.ignacioricci.com/tutorials/rounded%20corners/previews/preview-type5.html">预览圆角矩形模型 5 (垂直渐变)</a>.</p>
<h5>IE6 版本</h5>
<p>这项技术在这一令人讨厌的浏览器中是有问题的。我们必须给容器 (.roundedBox, or #type1, #type2, 等等) 确定宽度跟高度。如果您没有定义它，那么它会泄露到盒模型之外。 使用 IE6 条件式注释法来定义它。</p>
<h5>最后的想法</h5>
<p>我希望这项技术对您会有帮组，并且不会显得太难。垂直渐变、透明的角落，只要多加练习，您的脑袋会变得更加好用，也会更加容易定义样式。</p>
<p>&#160;</p>
<p>摘自：<a title="http://www.yeeyan.com/articles/view/seasun/40032?tag_related" href="http://www.yeeyan.com/articles/view/seasun/40032?tag_related">http://www.yeeyan.com/articles/view/seasun/40032?tag_related</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.acmind.com/archives/853/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>网页新手30条进阶秘技</title>
		<link>http://blog.acmind.com/archives/815</link>
		<comments>http://blog.acmind.com/archives/815#comments</comments>
		<pubDate>Tue, 02 Jun 2009 01:51:50 +0000</pubDate>
		<dc:creator>笑谈</dc:creator>
				<category><![CDATA[设计技巧]]></category>
		<category><![CDATA[秘技]]></category>
		<category><![CDATA[网页]]></category>
		<category><![CDATA[技巧]]></category>
		<category><![CDATA[新手]]></category>

		<guid isPermaLink="false">http://blog.acmind.com/?p=815</guid>
		<description><![CDATA[许许多多的网页新手正徘徊在专业编码的门槛前，而网上的教程参差不齐，鱼龙混杂，很容易让新手迷茫。这里总结了30条网页编码的“秘技”，只要在编码过程中牢记它们，灵活运用，你一定会写出一手漂亮的代码，早日迈入专业开发者的行列。
1. 一定要闭合标签
在以往的页面源代码里，经常看到这样的语句：

&#60;li&#62;Some text here.&#160; 
&#60;li&#62;Some new text here.&#160; 
&#60;li&#62;You get the idea.&#160; 

也许过去我们可以容忍这样的非闭合标签，但在今天的标准来看，这是非常不可取的，是必须百分百避免的。一定要注意闭合你的标签，否则将无法通过验证，并且容易出现一些难以预见的问题。
最好使用这样的形式：

&#60;ul&#62; 
&#60;li&#62;Some text here. &#60;/li&#62; 
&#60;li&#62;Some new text here. &#60;/li&#62; 
&#60;li&#62;You get the idea. &#60;/li&#62; 
&#60;/ul&#62; 

2. 声明正确的文档类型( DocType )

笔者早先曾加入过许多CSS论坛，在那里，如果有用户遇到问题，我们会建议他首先做两件事：
1. 验证CSS文件，解决所有可见的错误
2. 加上文档类型 Doctype
DOCTYPE 定义在HTML标签出现之前，它告诉浏览器这个页面包含的是HTML，XHTML，
还是两者混合出现，这样浏览器才能正确的解析标记。

通常有四种文档类型可供选择：

&#60;!DOCTYPE HTML PUBLIC &#34;-//W3C//DTD HTML 4.01//EN&#34; &#34;http://www.w3.org/TR/html4/strict.dtd&#34;&#62; 
&#60;!DOCTYPE HTML PUBLIC &#34;-//W3C//DTD HTML 4.01 Transitional//EN&#34; &#34;http://www.w3.org/TR/html4/loose.dtd&#34;&#62; 
&#60;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML [...]]]></description>
			<content:encoded><![CDATA[<p>许许多多的网页新手正徘徊在专业编码的门槛前，而网上的教程参差不齐，鱼龙混杂，很容易让新手迷茫。这里总结了30条网页编码的“秘技”，只要在编码过程中牢记它们，灵活运用，你一定会写出一手漂亮的代码，早日迈入专业开发者的行列。</p>
<h5>1. 一定要闭合标签</h5>
<p>在以往的页面源代码里，经常看到这样的语句：</p>
<ol>
<li>&lt;li&gt;Some text here.&#160; </li>
<li>&lt;li&gt;Some new text here.&#160; </li>
<li>&lt;li&gt;You get the idea.&#160; </li>
</ol>
<p>也许过去我们可以容忍这样的非闭合标签，但在今天的标准来看，这是非常不可取的，是必须百分百避免的。一定要注意闭合你的标签，否则将无法通过验证，并且容易出现一些难以预见的问题。</p>
<p>最好使用这样的形式：</p>
<ol>
<li>&lt;ul&gt; </li>
<li>&lt;li&gt;Some text here. &lt;/li&gt; </li>
<li>&lt;li&gt;Some new text here. &lt;/li&gt; </li>
<li>&lt;li&gt;You get the idea. &lt;/li&gt; </li>
<li>&lt;/ul&gt; </li>
</ol>
<h5>2. 声明正确的文档类型( DocType )</h5>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0026.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image002" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="84" alt="clip_image002" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image002-thumb5.jpg" width="660" border="0" /></a></p>
<p>笔者早先曾加入过许多CSS论坛，在那里，如果有用户遇到问题，我们会建议他首先做两件事：</p>
<p>1. 验证CSS文件，解决所有可见的错误</p>
<p>2. 加上文档类型 Doctype</p>
<p><b>DOCTYPE 定义在HTML标签出现之前，它告诉浏览器这个页面包含的是HTML，XHTML，</b></p>
<p><b>还是两者混合出现，这样浏览器才能正确的解析标记。</b></p>
<p><b></b></p>
<p>通常有四种文档类型可供选择：</p>
<ol>
<li><strong>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot; &quot;http://www.w3.org/TR/html4/strict.dtd&quot;&gt;</strong> </li>
<li><strong>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot; &quot;http://www.w3.org/TR/html4/loose.dtd&quot;&gt;</strong> </li>
<li><strong>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</strong> </li>
<li><strong>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;</strong> </li>
</ol>
<p>关于该使用什么样的文档类型声明，一直有不同的说法。通常认为使用最严格的声明是最佳选择，但研究表明，大部分浏览器会使用普通的方式解析这种声 明，所以很多人选择使用HTML4.01标准。选择声明的底线是，它是不是真的适合你，所以你要综合考虑来选择适合你得项目的声明。</p>
<h5>3.&#160; 不要使用嵌入式CSS样式</h5>
<p>当你在埋头写代码时，可能会经常顺手或偷懒的加上一点嵌入式css代码，就象这样：</p>
<ol>
<li>&lt;p style=&quot;color: red;&quot;&gt;Oncoding编码营&lt;/p&gt; </li>
</ol>
<p>这样看起来即方便又没有问题，但是它会在你得代码中产生问题。</p>
<p>在你开始写代码时，最好是在内容结构完成之后再开始加入样式代码。</p>
<p><b>这样的编码方式就像打游击，是一种很山寨的做法。——</b>Chris Coyier</p>
<p>更好的做法是，把这个P的样式定义在样式表文件里：</p>
<ol>
<li>#someElement &gt; p {&#160; </li>
<li>color: red;&#160; </li>
<li>}&#160; </li>
</ol>
<h5>4. 在页面head标签中引入所有的样式表文件</h5>
<p>理论上讲，你可以在任何位置引入CSS样式表，但HTML规范建议在网页的head标记中引入，这样可以加快页面的渲染速度。</p>
<p><b>在雅虎的开发过程中，我们发现，在head标签中引入样式表，会加快网页加载速度，</b></p>
<p><b>因为这样可以使页面逐步渲染。 </b>&#160; —— ySlow团队</p>
<ol>
<li>&lt;head&gt; </li>
<li>&lt;title&gt;My Favorites Kinds of Corn&lt;/title&gt; </li>
<li>&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; media=&quot;screen&quot; href=&quot;path/to/file.css&quot; /&gt; </li>
<li>&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; media=&quot;screen&quot; href=&quot;path/to/anotherFile.css&quot; /&gt; </li>
<li>&lt;/head&gt; </li>
</ol>
<h5>5. 在页面底部引入JavaScript文件</h5>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0065.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image006" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="81" alt="clip_image006" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image006-thumb5.jpg" width="660" border="0" /></a></p>
<p>要记住一个原则，就是让页面以最快的速度呈现在用户面前。当加载一个脚本时，页面会暂停加载，直到脚本完全载入。所以会浪费用户更多的时间。</p>
<p>如果你的JS文件只是要实现某些功能，（比如点击按钮事件），那就放心的在body底部引入它，这绝对是最佳的方法。</p>
<p>举例：</p>
<ol>
<li>&lt;p&gt;And now you know my favorite kinds of corn. &lt;/p&gt; </li>
<li>&lt;script type=&quot;text/javascript&quot; src=&quot;path/to/file.js&quot;&gt;&lt;/script&gt; </li>
<li>&lt;script type=&quot;text/javascript&quot; src=&quot;path/to/anotherFile.js&quot;&gt;&lt;/script&gt; </li>
<li>&lt;/body&gt; </li>
<li>&lt;/html&gt; </li>
</ol>
<h5>6. 不要使用嵌入式JavaScript，这都21世纪了！</h5>
<p>许多年以前，还存在一种这样的方式，就是直接将JS代码加入到标签中。尤其是在简单的图片相册中非常常见。本质上讲，一个“onclick”事件是 附加在 标签上的，其效果等同于一些JS代码。不需要讨论太多，非常不应该使用这样的方式，应该把代码转移到一个外部JS文件中，然后使用“ addEventListener / attachEvent ”加入时间侦听器。或者使用jQuery等框架，之需要使用其“clock”方法。</p>
<ol>
<li>$(&#8216;a#moreCornInfoLink&#8217;).click(function() {&#160; </li>
<li>&#160; alert(&#8216;Want to learn more about corn?&#8217;);&#160; </li>
<li>});&#160; </li>
</ol>
<h5>7. 开发中随时进行标准验证</h5>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image008.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image008" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="319" alt="clip_image008" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image008-thumb.gif" width="246" border="0" /></a></p>
<p>很多人并不真正理解标准验证的意义和价值，笔者在一篇 <a href="http://jeff-way.com/2009/05/13/heres-the-thing-about-validation/">博客</a>中详细分析了这个问题。一句话，<b>标准验证是为你服务的，不是给你找麻烦的。</b></p>
<p>如果你刚开始从事网页制作，那强烈建议你下载这个 <a href="https://addons.mozilla.org/en-US/firefox/addon/60">网页开发工具条</a> ，并在编码过程中随时使用&quot;HTML标准验证&quot;和“CSS标准验证”。如果你认为CSS是一种非常好学的语言，那么它会把你整的死去活来。你的不严谨的代码会让你的页面漏洞百出，问题不断，一个好的方法就是—— 验证，验证，再验证。</p>
<h5>8. 下载Firebug</h5>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0103.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image010" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="271" alt="clip_image010" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image010-thumb3.jpg" width="595" border="0" /></a>     <br />Firebug是当之无愧的网页开发最佳插件，它不但可以调试JavaScript，还可以直观的让你了解页面标记的属性和位置。不用多说， <a href="https://addons.mozilla.org/cn-ZH/firefox/addon/1843">下载它！</a></p>
<h5>9. 使用Firebug！ </h5>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0123.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image012" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="359" alt="clip_image012" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image012-thumb3.jpg" width="415" border="0" /></a></p>
<p>据笔者观察，大部分的使用者仅仅使用了Firebug 20%的功能，那真是太浪费了，你不妨花几个小时的时间来系统学习这个工具，相信会让你事半功倍。</p>
<h6>Firebug教程：</h6>
<ul>
<li><a href="http://michaelsync.net/2007/09/08/firebug-tutorial-overview-of-firebug">Overview of Firebug</a> </li>
<li><a href="http://www.digitalmediaminute.com/screencast/firebug-js/">Debug Javascript With Firebug &#8211; video tutorial</a> </li>
</ul>
<h5></h5>
<h5>10. 使用小写的标记</h5>
<p>理论上讲，你可以像这样随性的书写标记：</p>
<ol>
<li>&lt;DIV&gt; </li>
<li>&lt;P&gt;Here&#8217;s an interesting fact about corn. &lt;/P&gt; </li>
<li>&lt;/DIV&gt; </li>
</ol>
<p>最好不要这样写，费力气输入大些字母没有任何用处，并且会让代码很难看，这样子就很好：</p>
<ol>
<li>&lt;div&gt; </li>
<li>&lt;p&gt;Here&#8217;s an interesting fact about corn. &lt;/p&gt; </li>
<li>&lt;/div&gt; </li>
</ol>
<h5>11.使用H1 &#8211; H6标签</h5>
<p>笔者建议你在网页中使用其中全部六种标记，虽然大部分人只会用到前四个，但使用最多的H会有很多好处，比如设备友好、搜索引擎友好等，不妨把你的P标签都替换成H6。</p>
<h5>12. 如果是博客，那把H1留给文章标题</h5>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0134.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image013" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="290" alt="clip_image013" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image013-thumb4.jpg" width="660" border="0" /></a></p>
<p>今天笔者在<a href="http://www.twitter.com/nettuts">Twitter</a>上发起一次讨论：是该把H1定义到LOGO上还是定义到文章标题上，有80%的人选择了后者。</p>
<p>当然具体如何使用要看你的需求，但我建议你在建立博客的时候，将文章题目定为H1，这对搜索引擎优化(SEO)是非常有好处的。</p>
<h5>13. 下载ySlow</h5>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image014.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image014" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="278" alt="clip_image014" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image014-thumb.gif" width="620" border="0" /></a></p>
<p>在过去几年里，雅虎的团队在前端开发领域做了许多伟大的工作。前不久，它们发布了一个叫ySlow的Firebug扩展，它会分析你的网页，并返回一个“成绩单”，上面细致分析了这个网页的方方面面，提出需要改进的地方，虽然它有点苛刻，但它绝对会对你有所帮助，强烈推荐—— <a href="http://developer.yahoo.com/yslow/">ySlow</a>！</p>
<h5></h5>
<h5>14. 使用UL列表布局导航菜单</h5>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0161.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image016" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="94" alt="clip_image016" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image016-thumb1.jpg" width="423" border="0" /></a>     <br />通常网站都会有导航菜单，你可以用这样的方式定义：</p>
<ol>
<li>&lt;div id=&quot;nav&quot;&gt; </li>
<li>&lt;a href=&quot;#&quot;&gt;Home &lt;/a&gt; </li>
<li>&lt;a href=&quot;#&quot;&gt;About &lt;/a&gt; </li>
<li>&lt;a href=&quot;#&quot;&gt;Contact &lt;/a&gt; </li>
<li>&lt;/div&gt; </li>
</ol>
<p>如果你想书写优美的代码，那最好不要用这种方式，</p>
<p><b>为什么要用UL布局导航菜单？</b></p>
<p><b>——因为UL生来就是为定义列表准备的</b></p>
<p><b>最好这样定义</b>：</p>
<ol>
<li>&lt;ul id=&quot;nav&quot;&gt; </li>
<li>&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Home&lt;/a&gt;&lt;/li&gt; </li>
<li>&lt;li&gt;&lt;a href=&quot;#&quot;&gt;About&lt;/a&gt;&lt;/li&gt; </li>
<li>&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Contact&lt;/a&gt;&lt;/li&gt; </li>
<li>&lt;/ul&gt; </li>
</ol>
<h5>15. 学会怎样对付IE</h5>
<p>IE一直以来都是前端开发人员的噩梦！</p>
<p>如果你的CSS样式表基本定型了，那么可以为IE单独建立一个样式表，然后这样仅对IE生效：</p>
<ol>
<li>&lt;!&#8211;[if lt IE 7]&gt; </li>
<li>&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; media=&quot;screen&quot; href=&quot;path/to/ie.css&quot; /&gt; </li>
<li>&lt;![endif]&#8211;&gt; </li>
</ol>
<p>这些代码的意思是：如果用户浏览器是IE6及以下，那这段代码才会生效。如果你想把IE7也包含进来，那么就把“[if lt IE 7]”改为“[if lte IE 7]”。</p>
<h5>16. 使用一个好的代码编辑器</h5>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image017.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image017" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="197" alt="clip_image017" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image017-thumb.gif" width="432" border="0" /></a>     <br />不论你是Windows还是Mac用户，这里都有很多优秀的编辑器供你选择：</p>
<h6>Mac 用户</h6>
<ul>
<li><strong><a href="http://www.panic.com/coda">Coda</a></strong> </li>
<li><strong><a href="http://macrabbit.com/espresso/">Espresso</a></strong> </li>
<li><strong><a href="http://macromates.com/">TextMate</a></strong> </li>
<li><strong><a href="http://www.aptana.com/">Aptana</a></strong> </li>
<li><strong><a href="http://www.adobe.com/products/dreamweaver/">DreamWeaver CS4</a></strong> </li>
</ul>
<h6>PC 用户</h6>
<ul>
<li><strong><a href="http://intype.info/home/index.php">InType</a></strong> </li>
<li><strong><a href="http://www.e-texteditor.com/">E-Text Editor</a></strong> </li>
<li><strong><a href="http://notepad-plus.sourceforge.net/uk/site.htm">Notepad++</a></strong> </li>
<li><strong><a href="http://www.aptana.com/">Aptana</a></strong> </li>
<li><strong><a href="http://www.adobe.com/products/dreamweaver/">Dreamweaver CS4</a></strong> </li>
</ul>
<h5>17. 压缩前端代码！</h5>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0192.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image019" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="288" alt="clip_image019" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image019-thumb2.jpg" width="472" border="0" /></a></p>
<p>通过压缩CSS和JavaScript代码，通常可以减小25%以上的文件体积，在某种情况下，这会大大减轻你的带宽压力，提高加载速度。</p>
<h6>Javascript 压缩服务</h6>
<ul>
<li><a href="http://javascriptcompressor.com/">Javascript Compressor</a> </li>
<li><a href="http://www.xmlforasp.net/JSCompressor.aspx">JS Compressor</a> </li>
<li><a href="http://oncoding.net/tools/jsmin/">JS代码在线压缩( 中文 )</a> </li>
</ul>
<h6><a href="http://www.yeeyan.com/articles/tag/CSS"><em>CSS</em></a> Compression Services</h6>
<ul>
<li><a href="http://www.cssoptimiser.com/">CSS Optimiser</a> </li>
<li><a href="http://www.cssdrive.com/index.php/main/csscompressor/">CSS Compressor</a> </li>
<li><a href="http://www.cleancss.com/">Clean CSS</a> </li>
<li><a href="http://oncoding.net/tools/csstidy/">CSS代码在线压缩( 中文 )        <br /></a></li>
</ul>
<h5>18. 缩减，缩减，缩减</h5>
<p>回望我们大多数人写的第一个页面，一定会发现严重的 “DIV癖”( divitis )，通常初学者的本能就是把一个段落用DIV包起来，然后为了控制定位而套上更多的DIV。—— 其实这是一种低效而有害的做法。</p>
<p><b>网页写完后，一定要多次回头检查，尽量的减少元素的数量。</b></p>
<p><b>能用UL布局的列表就不要用一个个的DIV去布局。</b></p>
<p>正如写文章的关键是“缩减，缩减，缩减”一样，写页面也要遵循这个标准。</p>
<h5>19. 为所有的图片加上Alt属性</h5>
<p>为图片加上alt属性的好处是不言而喻的 —— 这样可以让禁用图片或者使用特殊设备的用户无障碍得了解你的王爷信息，并且对图像搜索引擎友好。</p>
<p>Firefox不支持显示图像Alt属性，可以加入title属性：</p>
<ol>
<li>&lt;img src=&quot;cornImage.jpg&quot; alt=&quot;图片标题&quot; title=&quot;图片标题&quot; /&gt; </li>
</ol>
<h5>20. 学会熬夜</h5>
<p>我经常不知不觉的学习工作到凌晨，我认为这是个很好的状况。</p>
<p>我的“啊～哈！”时间（ &quot;AH-HA&quot; moments，指柳暗花明或豁然开朗的时刻）通常都发生在深夜，比如我彻底理解JavaScript的“闭包”概念，就是在这样一种情况下。如果你还没有感受过这种奇妙的时刻，那就马上试试吧！</p>
<h5>21. 查看源代码</h5>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0213.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image021" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="297" alt="clip_image021" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image021-thumb2.jpg" width="290" border="0" /></a></p>
<p>没有什么比模仿你的偶像能让你更快的学习HTML。起初，我们都要甘做复印机，然后慢慢得发展自己的风格。研究你喜欢的网站页面代码，看看他们是怎么实现的。这是高手的必经之路，你一定要试一下。注意：只是学习和模仿他们的编码风格，而不是抄袭和照搬！</p>
<p>留意网络上各种炫酷的JavaScript效果，如果看上去是使用了插件，那根据它源码中head标签内的文件名，就可以找到这个插件名称，然后就可以学习它据为己用。</p>
<h5>22. 为所有的元素定义样式</h5>
<p>这一条在你制作其他公司企业网站时尤为必要。你自己不使用blockquote标记？那用户可能会用，你自己不使用OL？用户也可能会。花时间做一个页面，显示出ul, ol, p, h1-h6, blockquotes, 等等元素的样式，检查一下是否有遗漏。</p>
<h5>23. 使用第三方服务</h5>
<p>译者注：英文原文标题为“使用Twitter”</p>
<p>现在互联网上流行着许多可以免费加在网页中的API，这些工具非常强大。它可以帮你实现许多巧妙的功能，更重要的是可以帮你宣传网站。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0232.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image023" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="85" alt="clip_image023" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image023-thumb2.jpg" width="345" border="0" /></a></p>
<h5>24. 学习Photoshop</h5>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image025.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image025" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="545" alt="clip_image025" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image025-thumb.jpg" width="567" border="0" /></a></p>
<p>Photoshop是前端工程师的一个重要工具，如果你已经熟练掌握HTML和CSS，那不妨多学习一下Photshop。</p>
<ol>
<li>Psdtuts+上有许多英文的饰品教程：<a href="http://psd.tutsplus.com/category/videos/">Videos section</a> </li>
<li><a href="http://www.lynda.com/">Lynda.com</a> 也有大量教程，不过要支付$25美元 </li>
<li>&quot;<a href="http://www.mydamnchannel.com/You_Suck_at_Photoshop/Season_1/1DistortWarpandLayerEffects_1373.aspx">You Suck at Photoshop</a>&quot; 系列教程 </li>
<li>花费几个小时的时间学习Photoshop的快捷键操作 </li>
</ol>
<h5>25. 学习每一个HTML标签</h5>
<p>虽然有些HTML标签很少用到，但你依然应该了解他们。比如“abbr”、“cite”等，你必须学习它们以备不时之需。</p>
<p>顺便说说上面两个标签：</p>
<p><b>abbr</b><b>：</b></p>
<p>表示一个缩写形式，比如 &quot;Inc.&quot;、&quot;etc.&quot;。通过对缩写词语进行标记，您就能够为浏览器、拼写检查程序、翻译系统以及搜索引擎分度器提供有用的信息。    <br />url：<a href="http://www.w3school.com.cn/tags/tag_abbr.asp">http://www.w3school.com.cn/tags/tag_abbr.asp</a></p>
<p><b>cite</b><b>：</b></p>
<p>通常表示它所包含的文本对某个参考文献的引用，比如书籍或者杂志的标题。    <br />按照惯例，引用的文本将以斜体显示。     <br />url：<a href="http://www.w3school.com.cn/tags/tag_cite.asp">http://www.w3school.com.cn/tags/tag_cite.asp</a></p>
<h5>26. 参与社区讨论</h5>
<p>网络上有许许多多优秀的资源，而社区中也隐藏着许多高手，这里你既可以自学，也能请教经验丰富的开发者。</p>
<h5>27. 使用CSS Reset</h5>
<p>Css Reset也就Reset Css ,就是重置一些标签样式，或者说默认的样式。</p>
<p>关于是否应该使用CSS Reset，网上也有激烈的争论，笔者是建议使用的。你可以先选用一些成熟的CSS Reset，然后慢慢演变成适合自己的。这里有<a href="http://oncoding.net/rebuild/css/article200903/14.html">一些好用的CSS Reset(中文)</a>。</p>
<h5>28. 对齐元素</h5>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image026.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image026" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="632" alt="clip_image026" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image026-thumb.gif" width="620" border="0" /></a></p>
<p>简单来说，你应该尽可能的对齐你的网页元素。可以观察一下你喜欢的网站，它们的LOGO、标题、图表、段落肯定是对得非常整齐的。否则就会显得混乱和不专业。</p>
<h5>29. 关于PSD切片</h5>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0271.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image027" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="630" alt="clip_image027" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image027-thumb1.jpg" width="620" border="0" /></a></p>
<p>现在你已经掌握了HTML、CSS、Photoshop知识，那么你还需要学习如何把PSD转换为网页上的图片和背景，下面有两个不错的教程：</p>
<ul>
<li><a href="http://net.tutsplus.com/videos/screencasts/slice-and-dice-that-psd/">Slice and Dice that PSD</a> </li>
<li><a href="http://net.tutsplus.com/videos/screencasts/converting-a-design-from-psd-to-html/">From PSD to HTML/CSS</a> </li>
</ul>
<h5>30. 不要随意使用框架</h5>
<p>Javascript和CSS都有许多优秀的框架，但如果你是初学者，不要急于使用它们。如果你还没能熟练的驾驭CSS，使用框架会混淆你的知识体系。</p>
<p>CSS框架是为熟练开发者设计的，这样会节省它们大量的时间。</p>
<p>&#160;</p>
<p>摘自：<a title="http://www.yeeyan.com/articles/view/oc/41248?tag_related" href="http://www.yeeyan.com/articles/view/oc/41248?tag_related">http://www.yeeyan.com/articles/view/oc/41248?tag_related</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.acmind.com/archives/815/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>12个针对网页设计师的非常便利的CSS框架、模板和摘录网站</title>
		<link>http://blog.acmind.com/archives/784</link>
		<comments>http://blog.acmind.com/archives/784#comments</comments>
		<pubDate>Tue, 02 Jun 2009 01:34:37 +0000</pubDate>
		<dc:creator>笑谈</dc:creator>
				<category><![CDATA[设计技巧]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[网页]]></category>
		<category><![CDATA[框架]]></category>
		<category><![CDATA[模板]]></category>

		<guid isPermaLink="false">http://blog.acmind.com/?p=784</guid>
		<description><![CDATA[如果您经常性地需要建立和开发新的网站，那么您就应该考虑使用模板创建，收集有用的代码片段等等。为了加快开发的进程，您就应该这样做，在需要的适 合您可以使用、修改并优化这些模板文件；如果是作为商业用途的您应该检查下许可条款。然而，到目前为止，这是从最榜的站点中挑选出来的最好的站点的普通清单。好好地使用它们吧！
除此之外，您也可以参考下这些文章：
八种布局方案改善你的设计     IE不支持的10个非常有用的CSS属性     CSS处理大背景图片     五种方法让CSS实现垂直居中     针对IE8正式版的CSS hack
1. CSSTidy

CSSTidy 一个开源的CSS解析器和优化器。 它可以作为可执行文件 (Windows, Linux 和 Mac 中是有效的) 控制每个命令行和作为PHP脚本 (这两个功能几乎相同).     相反，大多数其它的CSS解析器都没有使用正则表达式，而CSSTidy则完全支持CSS2且具有更高的可靠性。”
贴上它们的信息，因为它们说的比我说的要强多了。
某些人可能会有个疑问 &#8211; 为什么您需要优化自己的CSS代码? 仅仅因为，如果您想要更清洁的代码，更快的载入速度，这样，你们俩 &#8211; 您跟访问者都将得以与此！
这里获取可执行文件 or use 在线优化!
2. Clean CSS

您也可以使用这个非常类似的在线优化版本，但我是个反复无常的人，所以我用这个网站要更多一些。这就要求挑选一个您喜欢的吧！
3. Blueprint CSS

“Blueprint 是一个 CSS框架, 其目的是减少你的CSS开发时间。在您项目的顶部预置它会给您的CSS打下坚实的基础。非常易于使用网格、合理的排版甚至是用样式进行打印。”
非常有用的模板文件，帮助您不是反复地从零开始编写代码 &#8211; 现在您可以花费更多的时间来天下新的特征和考虑如何设计，然后是反复的过程。

4. [...]]]></description>
			<content:encoded><![CDATA[<p>如果您经常性地需要建立和开发新的网站，那么您就应该考虑使用模板创建，收集有用的代码片段等等。为了加快开发的进程，您就应该这样做，在需要的适 合您可以使用、修改并优化这些模板文件；如果是作为商业用途的您应该检查下许可条款。然而，到目前为止，这是从最榜的站点中挑选出来的最好的站点的普通清单。好好地使用它们吧！</p>
<p>除此之外，您也可以参考下这些文章：</p>
<p><a href="http://www.iwanna.cn/archives/2009/05/24/1129/">八种布局方案改善你的设计</a>     <br /><a href="http://www.iwanna.cn/archives/2009/05/22/1113/">IE不支持的10个非常有用的CSS属性</a>     <br /><a href="http://www.iwanna.cn/archives/2009/05/11/1046/">CSS处理大背景图片</a>     <br /><a href="http://www.iwanna.cn/archives/2009/05/07/983/">五种方法让CSS实现垂直居中</a>     <br /><a href="http://www.iwanna.cn/archives/2009/05/07/981/">针对IE8正式版的CSS hack</a></p>
<p><a href="http://csstidy.sourceforge.net/">1. CSSTidy</a></p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0015.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image001" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="288" alt="clip_image001" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image001-thumb4.jpg" width="590" border="0" /></a></p>
<p><em>CSS</em>Tidy 一个开源的CSS解析器和优化器。 它可以作为可执行文件 (Windows, Linux 和 Mac 中是有效的) 控制每个命令行和作为PHP脚本 (这两个功能几乎相同).     <br />相反，大多数其它的<em>CSS</em>解析器都没有使用正则表达式，而CSSTidy则完全支持CSS2且具有更高的可靠性。”</p>
<p>贴上它们的信息，因为它们说的比我说的要强多了。</p>
<p>某些人可能会有个疑问 &#8211; 为什么您需要优化自己的<em>CSS</em>代码? 仅仅因为，如果您想要更清洁的代码，更快的载入速度，这样，你们俩 &#8211; 您跟访问者都将得以与此！</p>
<p><a href="http://csstidy.sourceforge.net/download.php">这里获取可执行文件</a> or use <a href="http://floele.flyspray.org/csstidy/css_optimiser.php">在线优化</a>!</p>
<p><a href="http://cleancss.com/">2. Clean CSS</a></p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0023.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image002" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="363" alt="clip_image002" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image002-thumb3.jpg" width="590" border="0" /></a></p>
<p>您也可以使用这个非常类似的在线优化版本，但我是个反复无常的人，所以我用这个网站要更多一些。这就要求挑选一个您喜欢的吧！</p>
<p><a href="http://www.blueprintcss.org/">3. Blueprint CSS</a></p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0035.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image003" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="77" alt="clip_image003" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image003-thumb5.jpg" width="260" border="0" /></a></p>
<p>“Blueprint 是一个 <strong><em>CSS</em></strong><strong>框架</strong>, 其目的是减少你的CSS开发时间。在您项目的顶部预置它会给您的CSS打下坚实的基础。非常易于使用网格、合理的排版甚至是用样式进行打印。”</p>
<p>非常有用的模板文件，帮助您不是反复地从零开始编写代码 &#8211; 现在您可以花费更多的时间来天下新的特征和考虑如何设计，然后是反复的过程。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0042.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image004" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="337" alt="clip_image004" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image004-thumb2.jpg" width="590" border="0" /></a></p>
<p><a href="http://www.code-sucks.com/">4. Code-Sucks</a></p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0054.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image005" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="84" alt="clip_image005" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image005-thumb4.jpg" width="260" border="0" /></a></p>
<p>收藏了许多非常好的，如<em>CSS</em>布局、代码段 (CSS, JavaScript, PHP), 网站模板等。这使web的发展进程变得敏捷。良好的使用使用这些吧。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0063.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image006" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="451" alt="clip_image006" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image006-thumb3.jpg" width="438" border="0" /></a></p>
<p><a href="http://snipplr.com/">5. Snipplr</a></p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0073.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image007" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="86" alt="clip_image007" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image007-thumb3.jpg" width="265" border="0" /></a></p>
<p>Snipplr是存储和组织很多代码片段的非常有用的地方 (Javascript, HTML, PHP, <em>CSS</em>, Ruby)。随着您的发展进程会经常使用。并且每个人都可以分享和添加它们的片段，当然，这部分中热门代码段无疑就是代表最佳的和经常被大家使用的。</p>
<p><a href="http://css.maxdesign.com.au/">6. MaxDesign</a></p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0083.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image008" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="464" alt="clip_image008" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image008-thumb3.jpg" width="590" border="0" /></a></p>
<p><a href="http://meyerweb.com/eric/tools/css/reset/">7. MeyerWeb CSS Reset</a></p>
<p>Eric Meyer <em>CSS</em> reset 非常受还有。您应该使用重置来消除浏览器之前默认风格的不同。同时，Eric也指出，这仅仅是个起点，但非常好用。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0092.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image009" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="223" alt="clip_image009" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image009-thumb2.jpg" width="590" border="0" /></a></p>
<p><a href="http://developer.yahoo.com/yui/examples/">8. YUI Library</a></p>
<p>“每个YUI库中的组件都有300个一些列的例子来说明它的实施。这些例子可以作为您研究YUI的出发点，如，获取代码段作为您编程的开始，或者只是作为您开发各种互动模式灵感的源泉。”</p>
<p>非常有用的模板文件，出发点非常好，并且收藏了很好的例子以满足于几乎所有的网页设计师。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0102.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image010" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="324" alt="clip_image010" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image010-thumb2.jpg" width="287" border="0" /></a></p>
<p><a href="http://960.gs/">9. 960 Grid System</a></p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0112.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image011" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="155" alt="clip_image011" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image011-thumb2.jpg" width="590" border="0" /></a></p>
<p>这个网格系统正在变得很受欢迎 &#8211; 他们提供常用尺寸, 基于 960 像素的宽度，提供 12 列跟 16 列网格系统。设计师们使用网格是为了使它们的网站看起来更为和谐和精准。当您下载了该网格系统，会得到几个模板文件跟mockups，它会是您的得力助手。</p>
<h6><a href="http://960.gs/files/960_download.zip">Download</a> / <a href="http://www.1stwebdesigner.com/wp-content/uploads/2009/01/demo.html">Demo</a></h6>
<p><a href="http://sencss.kilianvalkhof.com/">10. Sensible Standards CSS Framework</a></p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0122.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image012" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="277" alt="clip_image012" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image012-thumb2.jpg" width="590" border="0" /></a></p>
<p>这个框架也是基于 Eric Meyer reset 系统, 当然也有许多新的基础样式特征，没有任何双重重置和更多，到它的首页查看更多的细节吧。</p>
<p><a href="http://www.spiffycorners.com/">11. CSS 圆角</a></p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0132.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image013" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="217" alt="clip_image013" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image013-thumb2.jpg" width="526" border="0" /></a></p>
<p>我猜测，您肯定听到过不少关于圆角实现的争论和如何创建它，从这里您可以快速地在线获得圆角跟样式。</p>
<p><a href="http://www.contentwithstyle.co.uk/content/a-css-framework">12. 内容与风格</a></p>
<p>良好的框架集有助于您迅速快捷开发新的网站，使您更加关心图形设计而不是代码的编写。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0142.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image014" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="132" alt="clip_image014" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image014-thumb2.jpg" width="511" border="0" /></a></p>
<p>我希望这些参考网站有助于提升您的技能并加速您的发展进程！我相信除了这些网站之外还有许多，如果您知道一些，那么请您留下链接地址，感激不尽！</p>
<p>&#160;</p>
<p>摘自：<a title="http://www.yeeyan.com/articles/view/seasun/44063" href="http://www.yeeyan.com/articles/view/seasun/44063">http://www.yeeyan.com/articles/view/seasun/44063</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.acmind.com/archives/784/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>正则表达式高级技巧基本概念实例详解</title>
		<link>http://blog.acmind.com/archives/755</link>
		<comments>http://blog.acmind.com/archives/755#comments</comments>
		<pubDate>Tue, 02 Jun 2009 01:10:18 +0000</pubDate>
		<dc:creator>笑谈</dc:creator>
				<category><![CDATA[设计技巧]]></category>
		<category><![CDATA[实例]]></category>
		<category><![CDATA[表达式]]></category>
		<category><![CDATA[高级]]></category>
		<category><![CDATA[技巧]]></category>
		<category><![CDATA[概念]]></category>
		<category><![CDATA[正则]]></category>

		<guid isPermaLink="false">http://blog.acmind.com/?p=755</guid>
		<description><![CDATA[正则表达式(Regular Expression, abbr. regex) 功能强大，能够用于在一大串字符里找到所需信息。它利用约定俗成的字符结构表达式来发生作用。不幸的是，简单的正则表达式对于一些高级运用，功能远远不够。若要进行筛选的结构比较复杂，你可能就需要用到高级正则表达式。
本文为您介绍正则表达式的高级技巧。我们筛选出了八个常用的概念，并配上实例解析，每个例子都是满足某种复杂要求的简单写法。如果你对正则的基本概念尚缺乏了解，请先阅读这篇文章，或者这个教程，或者维基条目。
这里的正则语法适用于PHP，与Perl兼容。
1. 贪婪/懒惰

所有能多次限定的正则运算符都是贪婪的。他们尽可能多地匹配目标字符串，也就是说匹配结果会尽可能地长。不幸的是，这种做法并不总是我们想要的。因此，我们添加“懒惰”限定符来解决问题。在各个贪婪运算符后添加“?”能让表达式只匹配尽可能短的长度。另外，修改器“U”也能惰化能多次限定的运算符。理解贪婪与懒惰的区别是运用高级正则表达式的基础。
贪婪操作符
操作符 * 匹配之前的表达式零次或零次以上。它是一个贪婪操作符。请看下面的例子：
preg_match( '/&#60;h1&#62;.*&#60;\/h1&#62;/', '&#60;h1&#62;这是一个标题。&#60;/h1&#62;
&#160;
&#60;h1&#62;这是另一个。&#60;/h1&#62;', $matches ); 
句点(.)能代表除换行符外的任意字符。上面的正则表达式匹配 h1 标签以及标签内的所有内容。它用句点(.)和星号(*)来匹配标签内的所有内容。匹配结果如下：
&#60;h1&#62;这是一个标题。&#60;/h1&#62;&#60;h1&#62;这是另一个。&#60;/h1&#62;
整个字串都被返回。* 操作符会连续匹配所有内容—— 甚至包括中间的 h1 闭合标签。因为它是贪婪的，匹配整个字串是符合其利益最大化原则。
懒惰操作符
把上面的式子稍作修改，加上一个问号(?)，能让表达式变懒惰：
/&#60;h1&#62;.*?&#60;\/h1&#62;/
这样它会觉得，只需匹配到第一个 h1 结尾标签就完成任务了。
另一个有着类似属性的贪婪操作符是 {n,} 。它代表之前的匹配模式重复n次或n次以上，如果没有加上问号，它会寻找尽可能多的重复次数，加上的话，则会尽可能少重复（当然也就是“重复n次”最少）。
# 建立字串
$str = 'hihihi oops hi';
# 使用贪婪的{n,}操作符进行匹配
preg_match( '/(hi){2,}/', $str, $matches );&#160; # matches[0] 将是 'hihihi'
# 使用堕化了的 {n,}? 操作符匹配
preg_match( '/(hi){2,}?/', $str, $matches );&#160; # matches[0] 将是 'hihi'
2. 回返引用(Back referencing)

有什么用？
回返引用(Back referencing)一般被翻译成“反向引用”、“后向引用”、“向后引用”，个人觉得“回返引用”更为贴切。它是在正则表达式内部引用之前捕获到的内容的方法。例如，下面这个简单例子的目的是匹配出引号内部的内容：
# 建立匹配数组
$matches = array();
&#160;
# 建立字串
$str [...]]]></description>
			<content:encoded><![CDATA[<p>正则表达式(Regular Expression, abbr. regex) 功能强大，能够用于在一大串字符里找到所需信息。它利用约定俗成的字符结构表达式来发生作用。不幸的是，简单的正则表达式对于一些高级运用，功能远远不够。若要进行筛选的结构比较复杂，你可能就需要用到<strong>高级正则表达式</strong>。</p>
<p>本文为您<strong>介绍正则表达式的高级技巧</strong>。我们筛选出了八个常用的概念，并配上实例解析，每个例子都是满足某种复杂要求的简单写法。如果你对正则的基本概念尚缺乏了解，请先阅读<a href="http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm#introduction">这篇文章</a>，或者<a href="http://www.regexlab.com/zh/deelx/syntax.htm">这个教程</a>，或者<a href="http://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F">维基条目</a>。</p>
<p>这里的正则语法适用于PHP，与Perl兼容。</p>
<h5>1. 贪婪/懒惰</h5>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0013.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image001" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="320" alt="clip_image001" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image001-thumb3.jpg" width="420" border="0" /></a></p>
<p>所有能多次限定的正则运算符都是贪婪的。他们<strong>尽可能多</strong>地匹配目标字符串，也就是说匹配结果会<strong>尽可能地长</strong>。不幸的是，这种做法并不总是我们想要的。因此，我们添加“懒惰”限定符来解决问题。在各个贪婪运算符后添加“?”能让表达式只匹配<strong>尽可能短</strong>的长度。另外，修改器“U”也能惰化能多次限定的运算符。理解贪婪与懒惰的区别是运用高级正则表达式的基础。</p>
<h6>贪婪操作符</h6>
<p>操作符 * 匹配之前的表达式零次或零次以上。它是一个贪婪操作符。请看下面的例子：</p>
<pre>preg_match( '/&lt;h1&gt;.*&lt;\/h1&gt;/', '&lt;h1&gt;这是一个标题。&lt;/h1&gt;</pre>
<pre>&#160;</pre>
<pre>&lt;h1&gt;这是另一个。&lt;/h1&gt;', $matches ); </pre>
<p>句点(.)能代表除换行符外的任意字符。上面的正则表达式匹配 h1 标签以及标签内的所有内容。它用句点(.)和星号(*)来匹配标签内的所有内容。匹配结果如下：</p>
<pre>&lt;h1&gt;这是一个标题。&lt;/h1&gt;&lt;h1&gt;这是另一个。&lt;/h1&gt;</pre>
<p>整个字串都被返回。* 操作符会连续匹配所有内容—— 甚至包括中间的 h1 闭合标签。因为它是贪婪的，匹配整个字串是符合其利益最大化原则。</p>
<h6>懒惰操作符</h6>
<p>把上面的式子稍作修改，加上一个问号(?)，能让表达式变懒惰：</p>
<pre>/&lt;h1&gt;.*?&lt;\/h1&gt;/</pre>
<p>这样它会觉得，只需匹配到第一个 h1 结尾标签就完成任务了。</p>
<p>另一个有着类似属性的贪婪操作符是 {n,} 。它代表之前的匹配模式重复n次或n次以上，如果没有加上问号，它会寻找尽可能多的重复次数，加上的话，则会尽可能少重复（当然也就是“重复n次”最少）。</p>
<pre># 建立字串</pre>
<pre>$str = 'hihihi oops hi';</pre>
<pre># 使用贪婪的{n,}操作符进行匹配</pre>
<pre>preg_match( '/(hi){2,}/', $str, $matches );&#160; # matches[0] 将是 'hihihi'</pre>
<pre># 使用堕化了的 {n,}? 操作符匹配</pre>
<pre>preg_match( '/(hi){2,}?/', $str, $matches );&#160; # matches[0] 将是 'hihi'</pre>
<h5>2. 回返引用(Back referencing)</h5>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0022.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image002" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="310" alt="clip_image002" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image002-thumb2.jpg" width="320" border="0" /></a></p>
<h6>有什么用？</h6>
<p><strong>回返引用(Back referencing)</strong>一般被翻译成“反向引用”、“后向引用”、“向后引用”，个人觉得“回返引用”更为贴切。它是在正则表达式内部引用<strong>之前捕获到的内容</strong>的方法。例如，下面这个简单例子的目的是匹配出引号内部的内容：</p>
<pre># 建立匹配数组</pre>
<pre>$matches = array();</pre>
<pre>&#160;</pre>
<pre># 建立字串</pre>
<pre>$str = &quot;&quot;This is a 'string'&quot;&quot;;</pre>
<pre>&#160;</pre>
<pre># 用正则表达式捕捉内容</pre>
<pre>preg_match( &quot;/(\&quot;|').*?(\&quot;|')/&quot;, $str, $matches );</pre>
<pre>&#160;</pre>
<pre># 输出整个匹配字串</pre>
<pre>echo&#160; $matches[0];</pre>
<p>它会输出：</p>
<pre>&quot;This is a'</pre>
<p>显然，这并不是我们想要的内容。</p>
<p>这个表达式从开头的双引号开始匹配，遭遇单引号之后就错误地结束了匹配。这是因为表达式里说：(”|’)，也就是双引号(”)和单引号(’)均可。要修正这个问题，你可以用到回返引用。<strong>表达式\1,\2,…,\9</strong> 是对前面已捕获到的各个子内容的编组序号，能作为对这些编组的“指针”而被引用。在此例中，第一个被匹配的引号就由<code>\1</code>代表。</p>
<h6>如何运用？</h6>
<p>将上面的例子中，后面的闭合引号替换为1：</p>
<pre>preg_match( '/(\&quot;|').*?\1/', $str, $matches );</pre>
<p>这会正确地返回字串：</p>
<pre>&quot;This is a 'string'&quot;</pre>
<p><strong>译注思考题：</strong></p>
<p>如果是中文引号，前引号和后引号不是同一个字符，怎么办？</p>
<p>还记得PHP函数 <code>preg_replace</code> 吗？其中也有回返引用。只不过我们没有用 \1 … \9，而是用了 $1 … $9 … $n （此处任意数目均可）作为回返指针。例如，如果你想把所有的段落标签<code>&lt;p&gt;</code>都替换成文本：</p>
<pre>$text = preg_replace( '/&lt;p&gt;(.*?)&lt;/p&gt;/',</pre>
<pre>&quot;&amp;lt;p&amp;gt;$1&amp;lt;/p&amp;gt;&quot;, $html );</pre>
<p>参数$1是一个回返引用，代表段落标签<code>&lt;p&gt;</code>内部的文字，并插入到替换后的文本里。这种简便易用的表达式写法为我们提供了一个获取已匹配文字的简单方法，甚至在替换文本时也能使用。</p>
<h5>3. 已命名捕获组(Named Groups)</h5>
<p>当在一个表达式内多次用到回调引用时，很容易就把事情搞混淆，要弄清那些数字（1 … 9）都代表哪一个子内容是件很麻烦的事。回调引用的一个替代方法是使用带名字的捕获组（下文简称“有名组”）。有名组使用<code>(?P&lt;name&gt;pattern)</code>来设定，name代表组名，pattern是配合该有名组的正则结构。请看下面的例子：</p>
<pre>/(?P&lt;quote&gt;&quot;|').*?(?P=quote)/</pre>
<p>上式中，quote就是组名，<code>&quot;|'</code>是改组匹配内容的正则。后面的(?P=quote)是在调用组名为quote的有名组。这个式子的效果和上面的回调引用实例一样，只不过是用了有名组来实现。是不是更加易读易懂了？</p>
<p>有名组也能用于处理已匹配内容之数组的内部数据。赋予特定正则的组名也能作为所匹配到的内容在数组内部的索引词。</p>
<pre>preg_match( '/(?P&lt;quote&gt;&quot;|\')/', &quot;'String'&quot;, $matches );</pre>
<pre>&#160;</pre>
<pre># 下面的语句输出“'”(不包括双引号)</pre>
<pre>echo $matches[1];</pre>
<pre>&#160;</pre>
<pre># 使用组名调用，也会输出“'”</pre>
<pre>echo $matches['quote'];</pre>
<p>所以，有名组并不只是让写代码更容易，它也能用于组织代码。</p>
<h5>4. 字词边界(Word Boundaries)</h5>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0034.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image003" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="304" alt="clip_image003" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image003-thumb4.jpg" width="420" border="0" /></a></p>
<p><strong>字词边界</strong>是字串里的字词字符（包括字母、数字和下划线，自然也包括汉字）和非字词字符之间的位置。其特殊之处就在于，它并不匹配某个实在的字符。它的长度是<strong>零</strong>。 <code>\b</code> 匹配所有字词边界。</p>
<p>不幸的是，字词边界一般都被忽视掉了，大部分人都没有在意他的现实意义。 例如，如果你想要匹配单词“import”：</p>
<pre>/import/</pre>
<p>注意了！正则表达式有时候很调皮的。下面的字串也能和上面的式子匹配成功：</p>
<pre>important</pre>
<p>你或许觉得，只要在import前后加上空格，不就可以匹配这个独立的单词了：</p>
<pre>/ import /</pre>
<p>那如果遇上这种情况呢：</p>
<pre>The trader voted for the import</pre>
<p>当 import 这个词在字串开头或者结尾时，修改后的表达式仍然不能用。因此，考虑各种情况是必须的：</p>
<pre>/(^import | import | import$)/i</pre>
<p>别慌，还没完呢。如果遇到标点符号了呢？就为了满足这一个单词的匹配，你的正则可能就需要这样写：</p>
<pre>/(^import(:|;|,)? | import(:|;|,)? | import(\.|\?|\!)?$)/i</pre>
<p>对于只匹配一个单词来说，这样做实在是有点大动干戈了。正因如此，字词边界才显得意义重大。要适应上述要求，以及<strong>很多其他情况变种</strong>，有了字符边界，我们所需写的代码只是：</p>
<pre>/\bimport\b/</pre>
<p>上面所有情况都得到了解决。 <code>\b</code> 的灵活性就在于，它是一个没有长度的匹配。它只匹配两个实际字符之间想象出的位置。它检查两个相邻字符是否是一个为单字，另一个为非单字。情况符合，就返回匹配。如果遇到了单词的开头或结尾， <code>\b</code> 会把它当成是非单词字符对待。由于import里面的 <code>i</code> 仍然被看成是单词字符，import 就被匹配出来了。</p>
<p>注意，与<code>\b</code>相对，我们还有<code>\B</code>，此操作符匹配两个单字或者两个非单字之间的位置。因此，如果你想匹配在某个单词内部的‘hi’，可以使用：</p>
<pre>\Bhi\B</pre>
<p>“this”、“hight”，都会返回匹配，而“hi there”则不会返回匹配。</p>
<h5>5. 最小组团(Atomic Groups)</h5>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0053.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image005" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="286" alt="clip_image005" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image005-thumb3.jpg" width="420" border="0" /></a></p>
<p><strong>最小组团</strong>是无捕捉的特殊正则表达式分组。通常用来提高正则表达式的效能，也能用于消除特定匹配。一个最小组团可以用(?&gt;pattern) 来定义，其中pattern是匹配式。</p>
<pre>/(?&gt;his|this)/</pre>
<p>当正则引擎针对最小组团进行匹配时，它会跳过组团内标记的回溯位置。以单词“smashing”为例，当用上面的正则表达式匹配时，正则引擎会先尝试在“smashing”里寻找“his”。显然，找不到任何匹配。此时，最小组团就发挥作用了：正则引擎会放弃所有回溯位置。也就是说，它不会尝试再从“smashing”里查找“this”。为什么要这样设置？因为“his”都没有返回匹配结果，包含有“his”的“this”当 然就更匹配不了了！</p>
<p>上面的例子并没有什么实用性，我们用<code>/t?his?/</code> 也能达到效果。再看看下面的例子：</p>
<pre>/\b(engineer|engrave|end)\b/</pre>
<p>如果把“engineering”拿去匹配，正则引擎会先匹配到“engineer”，但接下来就遇到了字词边界，b，所以匹配不成功。然后，正则引擎又会尝试在字串里寻找下一个匹配内容：engrave。匹配到eng的时候，后面的又对不上了，匹配失败。最后，尝试“end”，结果同样是失败。仔细观察，你会发现，一旦engineer匹配失败，并且都抵达了字词边界，“engrave”和“end”这两个词就已经不可能匹配成功了。这两个词都比 engineer短小，正则引擎不应该再多做无谓的尝试。</p>
<pre>/\b(?&gt;engineer|engrave|end)\b/</pre>
<p>上面的替代写法更能节省正则引擎的匹配时间，提高代码的工作效率。</p>
<h5>6. 递归(Recursion)</h5>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0062.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image006" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="320" alt="clip_image006" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image006-thumb2.jpg" width="420" border="0" /></a></p>
<p><strong>递归(Recursion)</strong>用于匹配嵌套结构，例如括弧嵌套， (this (that))，HTML标签嵌套<code>&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;</code>。我们使用<code>(?R)</code>来代表递归过程中的子模式。下面是一个匹配嵌套括弧的例子：</p>
<pre>/\(((?&gt;[^()]+)|(?R))*\)/</pre>
<p>最外层使用了反义符的括号“<code>\(</code>”匹配嵌套结构的开端。然后是一个多选项操作符<code>( * | * )</code>，可能匹配除括号外的所有字符 “<code>(?&gt;[^()]+)</code>”，也可能是通过子模式“<code>(?R)</code>”来再次匹配整个表达式。请注意，这个操作符会尽量多地匹配所有嵌套。</p>
<p>递归的另一个实例如下：</p>
<pre>/&lt;([\w]+).*?&gt;((?&gt;[^&lt;&gt;]+)|((?R)))*&lt;\/\1&gt;/</pre>
<p>以上表达式综合运用了字符分组，贪婪操作符、回溯，以及最小化组团来匹配嵌套标签。第一个括弧内分组<code>([w]+)</code>匹配出标签名，用于接下来的应用。若找到这尖括号样式的标签，则尝试寻找标签内容的剩余部分。下一个括弧括起来的子表达式和上一个实例非常相似：要么匹配不包括尖括号的所有字符 <code>?&gt;[^&lt;&gt;]+</code>，要么递归匹配整个表达式<code>(?R)</code>。表达式最后的<code>&lt;/1&gt;</code>代表闭合标签。</p>
<h5>7. 回调(Callbacks)</h5>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0072.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image007" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="310" alt="clip_image007" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image007-thumb2.jpg" width="420" border="0" /></a></p>
<p>匹配结果中的特定内容有时可能会需要某种特别的修改。要应用多重而复杂的修改，正则表达式<strong>的回调</strong>就有了用武之地。回调是用于函数<code>preg_replace_callback</code>中的动态修改字串的方式。你可以为<code>preg_replace_callback</code>指定某个函数为参数，此函数能接收匹配结果数组为参数，并将数组修改后返回，作为替换的结果。</p>
<p>例如，我们想将某字串中的字母全部转变成大写。十分不巧，PHP没有直接转化字母大小写的正则操作符。要完成这项任务，就可以用到正则回调。首先，表达式要匹配出所有需要被大写的字母：</p>
<pre>/\b\w/</pre>
<p>上式同时使用了字词边界和字符类。光有这个式子还不够，我们还需要一个回调函数：</p>
<pre>function upper_case( $matches ) {</pre>
<pre>return strtoupper( $matches[0] );</pre>
<pre>}</pre>
<p>函数<code>upper_case</code>接收匹配结果数组，并将整个匹配结果转化成大写。 在此例中，<code>$matches[0]</code>代表需要被大写化的字母。然后，我们再利用<code>preg_replace_callback</code>实现回调：</p>
<pre>preg_replace_callback( '/\b\w/', &quot;upper_case&quot;, $str );</pre>
<p>一个简单的回调即有这般强大的力量。</p>
<h5>8. 注释(Commenting)</h5>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image0082.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image008" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="320" alt="clip_image008" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image008-thumb2.jpg" width="420" border="0" /></a></p>
<p><strong>注释</strong>不用来匹配字串，但确实是正则表达式中最重要的部分。当正则越写越深入，越写越复杂，要推译出究竟什么东西被匹配就会变得越来越困难。在正则表达式中间加上注释，是最小化将来的迷糊和困惑的最佳方式。</p>
<p>要在正则表达式内部加上注释，使用<code>(?#comment)</code>格式。把“comment”替换成你的注释语句：</p>
<pre>/(?#数字)\d/</pre>
<p>如果你打算把代码公之于众，为正则表达式加上注释就显得尤为重要。这样别人才能更容易看懂和修改你的代码。和其他场合的注释一样，这样做也能为你重访自己以前写的程序时提供方便。</p>
<p>考虑使用“x”或“(?x)”修改器来格式化注释。这个修改器让正则引擎忽略表达式参数之间的空格。“有用的”空格仍然能够通过<code>[ ]</code>或<code>\ </code>（反义符加空格）来匹配。</p>
<pre>/</pre>
<pre>\d&#160;&#160;&#160; #digit</pre>
<pre>[ ]&#160;&#160; #space</pre>
<pre>\w+&#160;&#160; #word</pre>
<pre>/x</pre>
<p>上面的代码与下面的式子作用一样：</p>
<pre>/\d(?#digit)[ ](?#space)\w+(?#word)/</pre>
<p>请时刻注意代码的可读性。</p>
<p>&#160;</p>
<p>摘自：<a title="http://www.yeeyan.com/articles/view/benhuoer/44086" href="http://www.yeeyan.com/articles/view/benhuoer/44086">http://www.yeeyan.com/articles/view/benhuoer/44086</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.acmind.com/archives/755/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>设计项目开始前，9件需要了解客户的事情</title>
		<link>http://blog.acmind.com/archives/729</link>
		<comments>http://blog.acmind.com/archives/729#comments</comments>
		<pubDate>Tue, 02 Jun 2009 00:46:36 +0000</pubDate>
		<dc:creator>笑谈</dc:creator>
				<category><![CDATA[商务管理]]></category>
		<category><![CDATA[架构分析]]></category>
		<category><![CDATA[客户]]></category>
		<category><![CDATA[分析]]></category>
		<category><![CDATA[项目]]></category>
		<category><![CDATA[设计技巧]]></category>

		<guid isPermaLink="false">http://blog.acmind.com/?p=729</guid>
		<description><![CDATA[作为设计师，你的每个客户和项目都是独一无二的。有些事情，你需要了解或者熟知你的所有客户，才能为他们做出最好的设计。建设一个有效的解决具体业务需求的网站，需要设计人员准确理解很多业务的细节。
在这篇文章中，我们会看到9件设计师与客户在设计开始前需要讨论的事情，以增加成功的可能性。这些是围绕去了解客户业务与需求的话题，而不是像付款与最后期限这样的合同问题。
1. 商业目的
几乎所有的商业行为都有任务与远景声明。如果你想要设计出真实反映业务和对客户有效的网站，了解基本的商业存在原因与他的目标是绝对有必要的。
如果你不清楚客户的核心职责或者他们存在的原因，一定要在开始向目前把这些问题弄明白。虽然是很简单的资料，但是没有他们，项目很有可能误入歧途。
2. 具体产品与服务的业务
一旦清晰了业务存在原因，熟知具体事项与客户是如何从业务中得到收入也是非常重要的事情。无论是建立电子商务网站，还是普通的信息站，或者任何其他类型的网站，有必要知道客户准备为网站用户提供什么。
3. 客户的用户统计数据
讨论业务的产品和服务会让你获得有关为产品与服务付费的用户的更多信息，有效果的网站是以用户为中心，这个对身为设计师的你是至关重要的，你的客户需要准确的了解谁将使用这个网站，谁是有可能对提供的业务感兴趣。
尽可能多的获取这方面信息是非常好的做法。比如目标用户的年龄，性别，职业，收入等等，这些对确定网站的设计风格非常有帮助。此外，为搜集更多有关用户对产品与服务感兴趣的原因而建立网站，有利于提高潜能。
4. 企业文化
好的网站能反映企业，使之成为整体市场营销和企业形象有效的一部分。为了创建能准确表现企业的网站，你需要在一定程度上了解他们的企业文化。很多时候你可以通过业务人员了解他们的文化（如果可能的话）。与不同的员工进行交谈，与不同的客户或者用户交谈（如果可能的话），通过观察其现有的营销材料，比 如小册子，名片和广告。
5. 目前网站需要改善的地方
如果你的项目是需要对现有网站重新设计，这个时候你需要知道的一个重要事情是为什么他们选择了重新设计，特别是为改善现状重新设计他们制定了什么？是因为他们网站上了岁数仅需要换换面貌？还是因为发生了业务发生了重大改变需要新的设计与信息？还是提供的新产品和服务不属于旧的网站的一部分？还是现在 的网站不能为新的业务提供有效的帮助。虽然这是非常合乎逻辑需要考虑的事情，但是需要你向客户索取资料，并弄清楚他们着手重新设计的原因，这是许多人不会想到你需要完全明白的。
6. 他们对新网站的期望
假如目前网站存在失败或者过时的具体地方。一定要深入了解客户对新网站提高业务水平的期望是怎样的。期望是决定他们对你的工作的满意度的巨大因素。所以为了满足用户，知道项目最终的结果是什么非常重要。
7. 项目成败的决定性因素
网站的新设计会给企业带来令人满意的感觉改善。但是最终将有其他的影响因素，决定项目的成败。作为设计师，有效的工作会给客户带来提高业务的网站设计。清楚的认知项目成败的因素是非常重要的。也许是成功仅仅在于增加了销售量。也许是网站更准确的反应了企业的重大事情。无论是哪种，知道如何衡量能帮助 你把重点放在合适的方面。
8. 他们选择你做设计师的原因
有如此众多的自由设计师和设计公司可供选择，很明显客户选择了你是有原因的。也有一些是使客户觉得你是最合适的人选的相关事情。这也许因为你以往作品中的具体项目。也许因为在签约之前你表现出的有效沟通和对细节的关注。也许是因为你的定价。
无论是何种情况，有些关于你或者你的工作的事情，是鼓励你的客户和你一起去了解其他设计师。这一决定背后的原因往往会帮助你更好的了解他们想要的或者对你的期望。
9. 他们维护网站的计划
目前几乎每一个网站的设计开发都会使用某种类型的CMS.他们不断维护更新网站的需求影响着CMS的选择和如何建立网站。
他们计划增加新的页面与经常在存在的页面改动图片和文字么？他们需要各种各样的模板，为不同的目的建立特定页面吗？他们仅仅是偶尔或者很少更新页面么？理解客户不断前进中的需求能帮助你决定为特定的项目使用正确的CMS。在某些情况下，客户可能已经有了他们想使用的 CMS,但是这样的情况不经常遇到。
&#160;
摘自：http://www.yeeyan.com/articles/view/61966/44096
]]></description>
			<content:encoded><![CDATA[<p>作为设计师，你的每个客户和项目都是独一无二的。有些事情，你需要了解或者熟知你的所有客户，才能为他们做出最好的设计。建设一个有效的解决具体业务需求的网站，需要设计人员准确理解很多业务的细节。</p>
<p>在这篇文章中，我们会看到9件设计师与客户在设计开始前需要讨论的事情，以增加成功的可能性。这些是围绕去了解客户业务与需求的话题，而不是像付款与最后期限这样的合同问题。</p>
<p><font color="#ffffff"><b>1. </b><b>商业目的</b></font></p>
<p>几乎所有的商业行为都有任务与远景声明。如果你想要设计出真实反映业务和对客户有效的网站，了解基本的商业存在原因与他的目标是绝对有必要的。</p>
<p>如果你不清楚客户的核心职责或者他们存在的原因，一定要在开始向目前把这些问题弄明白。虽然是很简单的资料，但是没有他们，项目很有可能误入歧途。<a href="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image001.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image001" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="1" alt="clip_image001" src="http://blog.acmind.com/wp-content/uploads/2009/06/clip-image001-thumb.gif" width="1" border="0" /></a></p>
<p><font color="#ffffff"><b>2. </b><b>具体产品与服务的业务</b></font></p>
<p>一旦清晰了业务存在原因，熟知具体事项与客户是如何从业务中得到收入也是非常重要的事情。无论是建立电子商务网站，还是普通的信息站，或者任何其他类型的网站，有必要知道客户准备为网站用户提供什么。</p>
<p><font color="#ffffff"><b>3. </b><b>客户的用户统计数据</b></font></p>
<p>讨论业务的产品和服务会让你获得有关为产品与服务付费的用户的更多信息，有效果的网站是以用户为中心，这个对身为设计师的你是至关重要的，你的客户需要准确的了解谁将使用这个网站，谁是有可能对提供的业务感兴趣。</p>
<p>尽可能多的获取这方面信息是非常好的做法。比如目标用户的年龄，性别，职业，收入等等，这些对确定网站的设计风格非常有帮助。此外，为搜集更多有关用户对产品与服务感兴趣的原因而建立网站，有利于提高潜能。</p>
<p><font color="#ffffff"><b>4. </b><b>企业文化</b></font></p>
<p>好的网站能反映企业，使之成为整体市场营销和企业形象有效的一部分。为了创建能准确表现企业的网站，你需要在一定程度上了解他们的企业文化。很多时候你可以通过业务人员了解他们的文化（如果可能的话）。与不同的员工进行交谈，与不同的客户或者用户交谈（如果可能的话），通过观察其现有的营销材料，比 如小册子，名片和广告。</p>
<p><font color="#ffffff"><b>5. </b><b>目前网站需要改善的地方</b></font></p>
<p>如果你的项目是需要对现有网站重新设计，这个时候你需要知道的一个重要事情是为什么他们选择了重新设计，特别是为改善现状重新设计他们制定了什么？是因为他们网站上了岁数仅需要换换面貌？还是因为发生了业务发生了重大改变需要新的设计与信息？还是提供的新产品和服务不属于旧的网站的一部分？还是现在 的网站不能为新的业务提供有效的帮助。虽然这是非常合乎逻辑需要考虑的事情，但是需要你向客户索取资料，并弄清楚他们着手重新设计的原因，这是许多人不会想到你需要完全明白的。</p>
<p><font color="#ffffff"><b>6. </b><b>他们对新网站的期望</b></font></p>
<p>假如目前网站存在失败或者过时的具体地方。一定要深入了解客户对新网站提高业务水平的期望是怎样的。期望是决定他们对你的工作的满意度的巨大因素。所以为了满足用户，知道项目最终的结果是什么非常重要。</p>
<p><font color="#ffffff"><b>7. </b><b>项目成败的决定性因素</b></font></p>
<p>网站的新设计会给企业带来令人满意的感觉改善。但是最终将有其他的影响因素，决定项目的成败。作为设计师，有效的工作会给客户带来提高业务的网站设计。清楚的认知项目成败的因素是非常重要的。也许是成功仅仅在于增加了销售量。也许是网站更准确的反应了企业的重大事情。无论是哪种，知道如何衡量能帮助 你把重点放在合适的方面。</p>
<p><font color="#ffffff"><b>8. </b><b>他们选择你做设计师的原因</b></font></p>
<p>有如此众多的自由设计师和设计公司可供选择，很明显客户选择了你是有原因的。也有一些是使客户觉得你是最合适的人选的相关事情。这也许因为你以往作品中的具体项目。也许因为在签约之前你表现出的有效沟通和对细节的关注。也许是因为你的定价。</p>
<p>无论是何种情况，有些关于你或者你的工作的事情，是鼓励你的客户和你一起去了解其他设计师。这一决定背后的原因往往会帮助你更好的了解他们想要的或者对你的期望。</p>
<p><font color="#ffffff"><b>9. </b><b>他们维护网站的计划</b></font></p>
<p>目前几乎每一个网站的设计开发都会使用某种类型的CMS.他们不断维护更新网站的需求影响着CMS的选择和如何建立网站。</p>
<p>他们计划增加新的页面与经常在存在的页面改动图片和文字么？他们需要各种各样的模板，为不同的目的建立特定页面吗？他们仅仅是偶尔或者很少更新页面么？理解客户不断前进中的需求能帮助你决定为特定的项目使用正确的CMS。在某些情况下，客户可能已经有了他们想使用的 CMS,但是这样的情况不经常遇到。</p>
<p>&#160;</p>
<p>摘自：<a title="http://www.yeeyan.com/articles/view/61966/44096" href="http://www.yeeyan.com/articles/view/61966/44096">http://www.yeeyan.com/articles/view/61966/44096</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.acmind.com/archives/729/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS网页布局ID和Class类的命名介绍</title>
		<link>http://blog.acmind.com/archives/400</link>
		<comments>http://blog.acmind.com/archives/400#comments</comments>
		<pubDate>Wed, 27 May 2009 08:30:28 +0000</pubDate>
		<dc:creator>笑谈</dc:creator>
				<category><![CDATA[设计技巧]]></category>
		<category><![CDATA[布局]]></category>
		<category><![CDATA[命名]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[id]]></category>

		<guid isPermaLink="false">http://blog.acmind.com/?p=400</guid>
		<description><![CDATA[ 关于CSS网页布局id与class命名或许成为大家比较头疼的问题，在webjx.com中早已有相关的介绍，但还是不能满足大家对知识的渴求。     
 一、用class_name方式写类名。     
 以前喜欢用class-name写，不过好像两样也没什么差别。但我比较反对用className写类名，因为始终对浏览器大小写敏感的问题抱有怀疑态度。但是id我会写成驼峰式，理由见下一条。     
 二、样式都用class而不用id。     
 有三个理由。      1，id不可以重复，所以用class的话，可以肆无忌惮的用无数次。      2，id的优先级太高，若是写了一个#page_content a {color:#f60} ，那你完蛋了，里面要改链接颜色，都必须加上#page_content才能越过这个优先级。      3，id专门留给JS用，这样才符合表现与行为分离的原则。所以id我用驼峰式，也是为了体现这一点。     
 三、margin和padding，尽量省略最后一个值。   [...]]]></description>
			<content:encoded><![CDATA[<p> 关于<a href="http://webdesign.chinaitlab.com/List_1367.html">CSS</a>网页布局id与class命名或许成为大家比较头疼的问题，在webjx.com中早已有相关的介绍，但还是不能满足大家对知识的渴求。     </p>
<p> 一、用class_name方式写类名。     </p>
<p> 以前喜欢用class-name写，不过好像两样也没什么差别。但我比较反对用className写类名，因为始终对浏览器大小写敏感的问题抱有怀疑态度。但是id我会写成驼峰式，理由见下一条。     </p>
<p> 二、样式都用class而不用id。     </p>
<p> 有三个理由。     <br /> 1，id不可以重复，所以用class的话，可以肆无忌惮的用无数次。     <br /> 2，id的优先级太高，若是写了一个#page_content a {color:#f60} ，那你完蛋了，里面要改链接颜色，都必须加上#page_content才能越过这个优先级。     <br /> 3，id专门留给JS用，这样才符合表现与行为分离的原则。所以id我用驼峰式，也是为了体现这一点。     </p>
<p> 三、margin和padding，尽量省略最后一个值。     </p>
<p> 比如margin: 20px 10px 5px 10px; ，左右值是一样的，就应该省略掉最后一个值，写成margin: 20px 10px 5px; 这样到时候要改左右间距，改一个就好，免得改漏了。其实这个问题虽然很细小，但是可以看得出对margin四个值省略规则的熟练程度。     </p>
<p> 四、按标准写css，再针对特定浏览器作hack。     </p>
<p> 比如，通常我们会遇到如下的写法：     <br /> .side_col_webjx {     <br /> float:left;     <br /> display: inline;     <br /> margin-left: 20px;     <br /> }     <br /> 而我的写法会是：     <br /> .side_col_webjx {     <br /> float: left;     <br /> margin-left: 20px;     <br /> }     <br /> * .side_col_webjx {     <br /> _display:inline; /*hacked for IE 6*/     <br /> }     <br /> 看明白了么？不应该把hack混在一起，也不应该用一种侥幸的心态，觉得float:left与display:inline写在一起没事。嗯，它们俩确实没事儿，但是其他的hack就不一定了。而且这里写display:inline纯粹就是为了解决IE6的bug，所以前面加上下划线，以明确的表达你的目的。     <br /> 另外不要以为凡是hack都是为IE准备的。其实有些hack是针对其他浏览器的，比如FF。这就要求你对css标准的熟练掌握，能够自信的判断哪些渲染是遵守标准，哪些违反标准的。     <br /> 此外，我喜欢在hack前面加上星号，其实这纯粹是个人习惯了。可能过段时间我就不这么用了，呵呵。     </p>
<p> 五、记得加空格。     </p>
<p> .class_name { property: value; } 。我个人觉得合理的空格是优秀代码的一个指标。按英文的习惯，标点后面都应该带空格（如果你写This is a pen.That’s a pencil.句点后面不加空格， word里面会有错误提示）。所以既然css是外国人发明的，应该按他们的格式来写。类似的，在JS里var a = b + c;里面的空格也应该都要加。     </p>
<p> 六、适当的层叠（Cascading)或缩进以定义css的“作用域”。     </p>
<p> 啥叫“css的作用域”？其实并不是所有的样式都在所有的地方使用。有的样式只用在某一块里面，比如“导航栏”里的“搜索框”，可能应该写成：     <br /> .nav .search {}     <br /> 而有时候用层叠会增加代码优先级，所以也可以用缩进来“象征性的”体现作用域。像这样：     <br /> .login_box {}     <br /> .forgot_pwd{}     <br /> 缩进，是为了表示它们对应的标签具有父子关系。但这样只能起一个提醒的作用。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.acmind.com/archives/400/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>动软代码生成器</title>
		<link>http://blog.acmind.com/archives/380</link>
		<comments>http://blog.acmind.com/archives/380#comments</comments>
		<pubDate>Wed, 27 May 2009 08:11:15 +0000</pubDate>
		<dc:creator>笑谈</dc:creator>
				<category><![CDATA[辅助工具]]></category>
		<category><![CDATA[动软]]></category>
		<category><![CDATA[CodeMatic]]></category>

		<guid isPermaLink="false">http://blog.acmind.com/?p=380</guid>
		<description><![CDATA[自己试用了一下，觉得动软真的做得不错，静待其发展，在此特设一链接，方便关注与试用。
动软.Net代码生成器 （.Net 2.0版）




软件版本：


2.2




最后更新：


2009-5-1




软件大小：


2.8 MB




软件性质：


简体中文/免费软件




运行环境：


.Net 2.0




下载次数：


349273 




软件描述：


1.优化了启动窗闪屏的处理。              2.增加对IBatisNet的代码生成插件。               3.完善了Web代码命名空间的问题。               4.UI操作的优化。
[IT168下载(推荐或高速)] [博客园下载] [华军下载] [天空下载]   [...]]]></description>
			<content:encoded><![CDATA[<p>自己试用了一下，觉得动软真的做得不错，静待其发展，在此特设一链接，方便关注与试用。</p>
<p><b><a href="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image0023.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image002" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="32" alt="clip_image002" src="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image002-thumb2.jpg" width="32" border="0" /></a></b><b>动软.Net代码生成器 （.Net 2.0版）</b><br />
<table cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td width="94">
<p>软件版本：</p>
</td>
<td>
<p>2.2</p>
</td>
</tr>
<tr>
<td width="94">
<p>最后更新：</p>
</td>
<td>
<p>2009-5-1</p>
</td>
</tr>
<tr>
<td width="94">
<p>软件大小：</p>
</td>
<td>
<p>2.8 MB</p>
</td>
</tr>
<tr>
<td width="94">
<p>软件性质：</p>
</td>
<td>
<p>简体中文/免费软件</p>
</td>
</tr>
<tr>
<td width="94">
<p>运行环境：</p>
</td>
<td>
<p>.Net 2.0</p>
</td>
</tr>
<tr>
<td width="94">
<p>下载次数：</p>
</td>
<td>
<p>349273 </p>
</td>
</tr>
<tr>
<td width="94">
<p>软件描述：</p>
</td>
<td>
<p>1.优化了启动窗闪屏的处理。              <br />2.增加对<a href="http://www.cnblogs.com/ltp/archive/2009/03/05/1404258.html">IBatisNet的代码</a>生成插件。               <br />3.完善了Web代码命名空间的问题。               <br />4.UI操作的优化。</p>
<p><a href="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image003.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image003" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="18" alt="clip_image003" src="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image003-thumb.gif" width="18" border="0" /></a><a href="http://download.it168.com/248/262/40763/index.shtml">[IT168下载(推荐或高速)]</a> <a href="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image0031.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image003[1]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="18" alt="clip_image003[1]" src="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image0031-thumb.gif" width="18" border="0" /></a><a href="http://www.cnblogs.com/Files/ltp/Codematic2.rar">[博客园下载]</a> <a href="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image0032.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image003[2]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="18" alt="clip_image003[2]" src="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image0032-thumb.gif" width="18" border="0" /></a><a href="http://www.onlinedown.net/soft/63546.htm">[华军下载]</a> <a href="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image0033.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image003[3]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="18" alt="clip_image003[3]" src="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image0033-thumb.gif" width="18" border="0" /></a><a href="http://www.skycn.com/soft/49036.html">[天空下载]</a>               <br /><a href="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image0034.gif" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image003[4]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="18" alt="clip_image003[4]" src="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image0034-thumb.gif" width="18" border="0" /></a><a href="http://down1.tech.sina.com.cn/download/down_contents/1205596800/38485.shtml">[新浪下载]</a></p>
</td>
</tr>
</tbody>
</table>
<p><a href="http://www.maticsoft.com/Downloads.aspx?id=5"><img title="clip_image004" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="16" alt="clip_image004" src="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image0046.gif" width="21" border="0" />立即免费下载</a></p>
<p><b><a href="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image00212.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image002[1]" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="32" alt="clip_image002[1]" src="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image0021-thumb1.jpg" width="32" border="0" /></a></b><b>动软.Net代码生成插件源码</b><br />
<table cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td width="98">
<p>软件版本：</p>
</td>
<td>
<p>2.19</p>
</td>
</tr>
<tr>
<td width="98">
<p>最后更新：</p>
</td>
<td>
<p>2008-12-5</p>
</td>
</tr>
<tr>
<td width="98">
<p>软件大小：</p>
</td>
<td>
<p>69K</p>
</td>
</tr>
<tr>
<td width="98">
<p>软件性质：</p>
</td>
<td>
<p>简体中文/免费软件</p>
</td>
</tr>
<tr>
<td width="98">
<p>运行环境：</p>
</td>
<td>
<p>Codematic 2.19</p>
</td>
</tr>
<tr>
<td width="98">
<p>下载次数：</p>
</td>
<td>
<p>20271 </p>
</td>
</tr>
<tr>
<td width="98">
<p>软件描述：</p>
</td>
<td>
<p>动软.Net代码生成器2.1以上版本支持代码插件机制，支持可扩展的代码生成插件，用户可以定制自己的代码生成的插件，根据接口开发自己的代码生成方式，按用户需求进行代码生成。详见插件接口开发帮助和源码。              <br />这里提供了几种典型的代码生成方式的组件源码供参考。               <br />包括组件：               <br />1.BuilderBLLComm&#160; BLL层代码模板组件源码。               <br />2.BuilderDALELParam&#160; DAL层代码构造器(基于企业库方式)               <br />3.BuilderDALParam&#160; DAL数据访问层代码构造器（Parameter方式）               <br />4.BuilderDALSQL&#160; DAL数据访问层代码构造器（基于SQL方式）               <br />5.BuilderModel&#160; Model代码生成组件源码。               <br />6.BuilderWeb&#160; Web层代码生成组件源码。               <br />7.Lib&#160; 需要引用的库。</p>
<p>同时希望大家把自己开发的代码生成插件在网上共享，别的网友也可使用已经开发好的插件覆盖安装目录下的插件库文件<b>或</b>通过插件管理增加新插件。尽量避免重复开发。借此也可以让大家有个交流的机会。               <br /><a href="http://files.cnblogs.com/ltp/Builder.rar">全部源码下载</a><a href="http://www.cnblogs.com/Files/ltp/BuilderBLLComm.rar">                <br /></a></p>
</td>
</tr>
</tbody>
</table>
<p><a href="http://www.maticsoft.com/Downloads.aspx?id=10"><img title="clip_image004[1]" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="16" alt="clip_image004[1]" src="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image00411.gif" width="21" border="0" />立即免费下载</a></p>
<p><b><a href="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image00221.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image002[2]" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="32" alt="clip_image002[2]" src="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image0022-thumb1.jpg" width="32" border="0" /></a></b><b>动软.Net代码生成器 （.Net 1.1版）</b><br />
<table cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td width="95">
<p>软件版本：</p>
</td>
<td>
<p>1.9.7.3</p>
</td>
</tr>
<tr>
<td width="95">
<p>最后更新：</p>
</td>
<td>
<p>2006-5-8</p>
</td>
</tr>
<tr>
<td width="95">
<p>软件大小：</p>
</td>
<td>
<p>2.65 MB</p>
</td>
</tr>
<tr>
<td width="95">
<p>软件性质：</p>
</td>
<td>
<p>简体中文/免费软件</p>
</td>
</tr>
<tr>
<td width="95">
<p>运行环境：</p>
</td>
<td>
<p>.Net 1.1</p>
</td>
</tr>
<tr>
<td width="95">
<p>下载次数：</p>
</td>
<td>
<p>37848 </p>
</td>
</tr>
<tr>
<td width="95">
<p>软件描述：</p>
</td>
<td>
<p>该版本基于Net 1.1版本开发的早期版本。实现了代码生成的基本功能。</p>
</td>
</tr>
</tbody>
</table>
<p><a href="http://www.maticsoft.com/Downloads.aspx?id=4"><img title="clip_image004[2]" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="16" alt="clip_image004[2]" src="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image00421.gif" width="21" border="0" />立即免费下载</a></p>
<p><b><a href="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image0062.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image006" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="32" alt="clip_image006" src="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image006-thumb1.jpg" width="32" border="0" /></a></b><b>普通三层结构示例项目源码 CodematicDemoS3</b><br />
<table cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td width="93">
<p>软件版本：</p>
</td>
<td>
<p>2.0</p>
</td>
</tr>
<tr>
<td width="93">
<p>最后更新：</p>
</td>
<td>
<p>2008-12-3</p>
</td>
</tr>
<tr>
<td width="93">
<p>软件大小：</p>
</td>
<td>
<p>2.5M</p>
</td>
</tr>
<tr>
<td width="93">
<p>软件性质：</p>
</td>
<td>
<p>简体中文/免费软件</p>
</td>
</tr>
<tr>
<td width="93">
<p>运行环境：</p>
</td>
<td>
<p>VS2005+SP1</p>
</td>
</tr>
<tr>
<td width="93">
<p>下载次数：</p>
</td>
<td>
<p>31011 </p>
</td>
</tr>
<tr>
<td width="93">
<p>软件描述：</p>
</td>
<td>
<p>CodematicDemoS3 是一个标准三层架构的完整示例项目源码，基于Asp.net2.0开发，结构更简洁，提供更多有效的示例源码参考。方便用户更好的理解和使用该架构进行开发，配合Codematic代码生成器，可以使开发效率事半功倍，倍感轻松。</p>
</td>
</tr>
</tbody>
</table>
<p><a href="http://www.maticsoft.com/Downloads.aspx?id=9"><img title="clip_image004[3]" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="16" alt="clip_image004[3]" src="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image00431.gif" width="21" border="0" />立即免费下载</a></p>
<p><b><a href="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image00611.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image006[1]" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="32" alt="clip_image006[1]" src="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image0061-thumb1.jpg" width="32" border="0" /></a></b><b>工厂模式三层结构示例项目源码 CodematicDemoF3</b><br />
<table cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td width="87">
<p>软件版本：</p>
</td>
<td>
<p>2.0</p>
</td>
</tr>
<tr>
<td width="87">
<p>最后更新：</p>
</td>
<td>
<p>2008-12-5</p>
</td>
</tr>
<tr>
<td width="87">
<p>软件大小：</p>
</td>
<td>
<p>2.1 MB</p>
</td>
</tr>
<tr>
<td width="87">
<p>软件性质：</p>
</td>
<td>
<p>简体中文/免费软件</p>
</td>
</tr>
<tr>
<td width="87">
<p>运行环境：</p>
</td>
<td>
<p>VS2005+SP1</p>
</td>
</tr>
<tr>
<td width="87">
<p>下载次数：</p>
</td>
<td>
<p>41254 </p>
</td>
</tr>
<tr>
<td width="87">
<p>软件描述：</p>
</td>
<td>
<p>CodematicDemoF3 是一个基于工厂模式的三层架构示例项目源码，基于VS2005 SP1开发，结构更简洁，提供更多有效的示例源码参考。方便用户更好的理解和使用该架构进行开发，配合动软Codematic代码生成器，可以使开发效率事半功倍，倍感轻松。</p>
</td>
</tr>
</tbody>
</table>
<p><a href="http://www.maticsoft.com/Downloads.aspx?id=7"><img title="clip_image004[4]" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="16" alt="clip_image004[4]" src="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image00441.gif" width="21" border="0" />立即免费下载</a></p>
<p><b><a href="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image0081.jpg" class="highslide-image" onclick="return hs.expand(this);"><img title="clip_image008" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="32" alt="clip_image008" src="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image008-thumb1.jpg" width="32" border="0" /></a></b><b>Asp.Net</b><b>知识库</b><br />
<table cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td width="84">
<p>软件版本：</p>
</td>
<td>
<p>4</p>
</td>
</tr>
<tr>
<td width="84">
<p>最后更新：</p>
</td>
<td>
<p>2007-1-15</p>
</td>
</tr>
<tr>
<td width="84">
<p>软件大小：</p>
</td>
<td>
<p>50 MB</p>
</td>
</tr>
<tr>
<td width="84">
<p>软件性质：</p>
</td>
<td>
<p>简体中文/免费软件</p>
</td>
</tr>
<tr>
<td width="84">
<p>运行环境：</p>
</td>
<td>
<p>WinXP/2000/2003</p>
</td>
</tr>
<tr>
<td width="84">
<p>下载次数：</p>
</td>
<td>
<p>96848 </p>
</td>
</tr>
<tr>
<td width="84">
<p>软件描述：</p>
</td>
<td>
<p>LTP.NET 知识库系列，包括C#(WinForm)知识库（1，2）和ASP.NET知识库（1—6版）两个系列，共8个文件260M，该知识库包括了.NET开发 过程中的很多知识点和源码示例以及很多开发感悟，经验技巧、个人总结等大量文章资源。是本人从事开发多年来积累的精华。是开发人员和学习者不可多得的一本 技术手册。该版本是ASP.NET知识库第4版。</p>
</td>
</tr>
</tbody>
</table>
<p><a href="http://www.maticsoft.com/Downloads.aspx?id=8"><img title="clip_image004[5]" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="16" alt="clip_image004[5]" src="http://blog.acmind.com/wp-content/uploads/2009/05/clip-image00451.gif" width="21" border="0" />立即免费下载</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.acmind.com/archives/380/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>升级到Visual Studio 2008的十大技巧</title>
		<link>http://blog.acmind.com/archives/350</link>
		<comments>http://blog.acmind.com/archives/350#comments</comments>
		<pubDate>Wed, 27 May 2009 07:54:14 +0000</pubDate>
		<dc:creator>笑谈</dc:creator>
				<category><![CDATA[辅助工具]]></category>
		<category><![CDATA[升级]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[技巧]]></category>

		<guid isPermaLink="false">http://blog.acmind.com/?p=350</guid>
		<description><![CDATA[升级到Visual Studio 2008，来个飞跃。但是，若在升级过程中做出了错误的选择的话，就会为之付出一些代价。下面用十步教你轻松实现。 
1、首先，小心的卸载所有先前发布的相应软件和模块
这是最重要的步骤之一。如果您有任何先前版本的.NET Framework 3.5或Visual Studio 2008，那么这些软件都必须在安装Visual Studio 2008 RTM之前被卸载。在安装之前关闭一些相关的软件也是个不错的主意：
◆关闭所有的MS Office应用程序(如Outlook，Word等)
◆关闭Internet Explorer
◆关闭所有的windows资源管理器
◆关闭所有其它不需要打开的程序
以下是Scott Guthrie 提供的对先前发布版本的合适的卸载顺序，这些提到的软件可能有些您安装了而有些没有，只要确保如下的顺序即可：
◆移除“MSDN Library for Visual Studio 2008 Beta”
◆移除“Microsoft SQL Server Compact Edition 3.5”
◆移除“Microsoft SQL Server Compact Edition 3.5 Design Tools”
◆移除“Microsoft SQL Server Compact Edition 3.5 for Devices”
◆移除“Microsoft Visual Studio Performance Collection Tools”
◆移除“Windows Mobile 5.0 SDK R2 for Pocket PC”
◆移除“Windows Mobile 5.0 SDK [...]]]></description>
			<content:encoded><![CDATA[<p>升级到<strong>Visual Studio 2008</strong>，来个飞跃。但是，若在升级过程中做出了错误的选择的话，就会为之付出一些代价。下面用十步教你轻松实现。 </p>
<p>1、首先，小心的卸载所有先前发布的相应软件和模块</p>
<p>这是最重要的步骤之一。如果您有任何先前版本的.NET Framework 3.5或Visual Studio 2008，那么这些软件都必须在安装Visual Studio 2008 RTM之前被卸载。在安装之前关闭一些相关的软件也是个不错的主意：</p>
<p>◆关闭所有的MS Office应用程序(如Outlook，Word等)</p>
<p>◆关闭Internet Explorer</p>
<p>◆关闭所有的windows资源管理器</p>
<p>◆关闭所有其它不需要打开的程序</p>
<p>以下是Scott Guthrie 提供的对先前发布版本的合适的卸载顺序，这些提到的软件可能有些您安装了而有些没有，只要确保如下的顺序即可：</p>
<p>◆移除“MSDN Library for Visual Studio 2008 Beta”</p>
<p>◆移除“Microsoft SQL Server Compact Edition 3.5”</p>
<p>◆移除“Microsoft SQL Server Compact Edition 3.5 Design Tools”</p>
<p>◆移除“Microsoft SQL Server Compact Edition 3.5 for Devices”</p>
<p>◆移除“Microsoft Visual Studio Performance Collection Tools”</p>
<p>◆移除“Windows Mobile 5.0 SDK <a href="http://game.yesky.com/gk/216/7649216.shtml">R2</a> for Pocket PC”</p>
<p>◆移除“Windows Mobile 5.0 SDK R2 for Smartphone”</p>
<p>◆移除“Crystal Reports 2007”</p>
<p>◆移除“Visual Studio Asset System”</p>
<p>◆移除“Microsoft Visual Studio Web Authoring Component / Microsoft Web Designer Tools”</p>
<p>◆移除“Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System Runtime”</p>
<p>◆移除“Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System Runtime Language Pack” (只针对非英语版)</p>
<p>◆移除“Microsoft Visual Studio Tools for Office Runtime 3.0”</p>
<p>◆移除“Microsoft Document Explorer”</p>
<p>◆移除“Microsoft Document Explorer 2005 Language Pack” (只针对非英语版)</p>
<p>◆移除“Microsoft .NET Compact Framework 3.5”</p>
<p>◆移除“Microsoft .NET Compact Framework 2.0 SP1”</p>
<p>◆移除“.NET Framework 2.0 SDK”</p>
<p>◆移除“Microsoft Visual Studio Codename Orcas Remote Debugger”</p>
<p>◆移除“Microsoft Visual Studio 64bit Prerequisites Beta” (只针对64位平台)</p>
<p>◆移除“Microsoft .NET Framework 3.5&quot;</p>
<p>2、只安装您真正会用到的部分</p>
<p>不要仅仅因为DVD上什么都有，就要把所有的东西都装上。您安装的软件越少，以后打的补丁就越少，其占用的磁盘空间也越少。</p>
<p>3、不要被前面的重启提示弄傻了</p>
<p>.NET Framework 3.5的安装程序会提示用户在安装的过程中间重启，不要理会它。所有的重启都要等到安装完Visual Studio 2008之后再执行。</p>
<p>4、如果您要用Team System，就安装Team System 2008 Team Explorer</p>
<p>如果您准备连接到Team Foundation服务器，那么您需要安装Team System 2008 Team Explorer，否则无法连接到Team Foundation服务器。</p>
<p>这篇文档告诉您如何从Team Foundation服务器安装介质(光盘，下载包等)得到Team Explorer，但是这是一个3GB的下载版本。最简单的方法是得到单独的Team Explorer安装版，这个安装版只有387MB。</p>
<p>5、安装之后，将您的IDE设置恢复到默认设置。</p>
<p>如果IDE的设置在任何先前发布的版本中做了更改，它们都应该被恢复到默认设置。可以在命令行运行 devenv.com /ResetSettings 或者在Visual Studio 2008中点击菜单 Tools &gt; Import and Export Settings&#8230; &gt; Reset all settings</p>
<p>6、抓住这个时机改变您的Visual Studio主题</p>
<p>这是个很好的时机来修改主题。Visual Studio的主题系统允许开发者尝试一个新的主题，如果他们不喜欢，还可以改。我们推荐您选择一个使视觉更舒适的主题，特别是如果您每个星期要在IDE环境下工作很多个小时的话。</p>
<p>7、ASP.NET ListView中的Breaking changes (Breaking changes 意味着新的版本在这些地方将不再保证向前兼容，从而导致同样的代码在不同的版本中有不同的行为，或者旧的代码在新版本环境中不再支持)</p>
<p>Jon Galloway指出了这个非常重要的一点：</p>
<p>如果您使用先前发布的ASP.NET ListView写过任何代码，您需要升级您的标签。事实上这里只有一个真正的区别，这个区别会带来一些不同的影响：容器元素被 asplaceHolder控件代替了。先前的版本允许您使用任何 runat=&quot;server&quot; 标记做为一个容器元素。我更喜欢RTM的行为-旧的方式有时候有点太神奇，它根据ID用子元素填满父元素。新的用法更加直接，而且这种用法使得 ListView中被标记的内容和被替代的内容一目了然。</p>
<p>具体而言，以前使用元素ItemContainer的地方，现在要用一个叫做ItemPlaceholder的占位符来代替。如果这样出错了，您会得到如下的出错信息：</p>
<p>An item placeholder must be specified on ListView ‘SampleListView′. Specify an item placeholder by setting a control’s ID property to “itemPlaceholder”. The item placeholder control must also specify runat=”server”.</p>
<p>8、LINQ-to-SQL 中的Breaking changes</p>
<p>任何先前版本的LINQ-to-SQL代码都需要被依照以下的说明更新。</p>
<p>(1)把 Add 和 AddAll 方法改成 InsertOnSubmit 和 InsertAllOnSubmit. 把 Remove 和 RemoveAll 改成 DeleteOnSubmit 和 DeleteAllOnSubmit.</p>
<p>(2)通过如下更改把 .dbml 文件的编码格式改为 utf-8    </p>
<pre class="mycode">&lt;?xml version=<span style="color: #a31515">&quot;1.0&quot; </span>encoding=<span style="color: #a31515">&quot;utf-16&quot;</span>?&gt;</pre>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; 修改为： </p>
<p></p>
<pre class="mycode">&lt;?xml version=<span style="color: #a31515">&quot;1.0&quot; </span>encoding=<span style="color: #a31515">&quot;utf-8&quot;</span>?&gt;</pre>
<p><a href="http://11011.net/software/vspaste"></a>(3)修改web.config中如下一行(注意版本号的区别)： </p>
<p></p>
<pre class="mycode">&lt;add assembly=<span style="color: #a31515">&quot;System.Data.DataSetExtensions, Version=2.0.0.0, Culture=neutral,  PublicKeyToken=B77A5C561934E089&quot;</span>/&gt;</pre>
<p><a href="http://11011.net/software/vspaste"></a>修改为： </p>
<p></p>
<pre class="mycode">&lt;add assembly=<span style="color: #a31515">&quot;System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089&quot;</span>/&gt;</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>9、下载更新过的Microsoft Silverlight 1.1 Tools Alpha for Visual Studio 2008</p>
<p>装载Visual Studio 2008时这些工具不会自动准备好。所以如果要做与Silverlight 1.1相关的开发，就得自己把它们弄过来。</p>
<p>10、把您的解决方案都升级为Visual Studio 2008的格式</p>
<p>这是一个节省您很多时间的相当大的一个问题。由于Visual Studio 2008的解决方案文件和工程文件使用了一种新的格式，用Visual Studio 2008打开这些解决方案和工程会把它们升级。如果需要升级的工程很多，在命令行运行 devenv.com /Upgrade 命令可以加快升级速度。</p>
<p>这些技巧可以帮助开发者在初试Visual Studio 2008的时候一切顺利。更多有关Visual Studio 2008的信息可以在微软公司的 MSDN 网站和Scott Guthrie的blog上找到。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.acmind.com/archives/350/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle数据库系统使用的几条经验</title>
		<link>http://blog.acmind.com/archives/349</link>
		<comments>http://blog.acmind.com/archives/349#comments</comments>
		<pubDate>Wed, 27 May 2009 07:44:01 +0000</pubDate>
		<dc:creator>笑谈</dc:creator>
				<category><![CDATA[数据相关]]></category>
		<category><![CDATA[经验]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://blog.acmind.com/?p=349</guid>
		<description><![CDATA[1.having子句的使用方法
 having子句对group by 子句所确定的行组进行控制，having 子句条件中只允许涉及常量，聚组函数或group by子句中的列。
2.外部联接 &#34;+ &#34;的使用方法
 外部联接 &#34;+ &#34;按其在 &#34;= &#34;的左边或右边分左联接和右联接。若不带 &#34;+ &#34;运算符的表中的一个行不直接匹配于带 &#34;+ &#34;预算符的表中的任何行，则前者的行与后者中的一个空行相匹配并被返回。若二者均不带′+′，则二者中无法匹配的均被返回。利用外部联接 &#34;+ &#34;，可以替代效率十分低下的not in运算，大大提高运行速度。例如，下面这条命令执行起来将会很慢。
 select a.empno&#160;&#160; from&#160;&#160; emp&#160;&#160; a&#160;&#160; where&#160;&#160; a.empno&#160;&#160; not&#160;&#160; in
 （select&#160;&#160; empno&#160;&#160; from&#160;&#160; emp1&#160;&#160; where&#160;&#160; job=&#38;acute；SALE&#38;acute；）；
 假如利用外部联接，改写命令如下：
 select&#160;&#160; a.empno&#160;&#160; from&#160;&#160; emp&#160;&#160; a&#160;&#160; ，emp1&#160;&#160; b
 where&#160;&#160; a.empno=b.empno（+）
 and&#160;&#160; b.empno&#160;&#160; is&#160;&#160; null
 and&#160;&#160; b.job=&#38;acute；SALE&#38;acute；；
 大家可以发现，运行速度明显提高。
3.删除表内重复记录的方法
 大家可以利用这样的命令来删除表内重复记录：
 delete&#160;&#160; from&#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>1.having子句的使用方法</p>
<p> having子句对group by 子句所确定的行组进行控制，having 子句条件中只允许涉及常量，聚组函数或group by子句中的列。</p>
<p>2.外部联接 &quot;+ &quot;的使用方法</p>
<p> 外部联接 &quot;+ &quot;按其在 &quot;= &quot;的左边或右边分左联接和右联接。若不带 &quot;+ &quot;运算符的表中的一个行不直接匹配于带 &quot;+ &quot;预算符的表中的任何行，则前者的行与后者中的一个空行相匹配并被返回。若二者均不带′+′，则二者中无法匹配的均被返回。利用外部联接 &quot;+ &quot;，可以替代效率十分低下的not in运算，大大提高运行速度。例如，下面这条命令执行起来将会很慢。</p>
<p> select a.empno&#160;&#160; from&#160;&#160; emp&#160;&#160; a&#160;&#160; where&#160;&#160; a.empno&#160;&#160; not&#160;&#160; in</p>
<p> （select&#160;&#160; empno&#160;&#160; from&#160;&#160; emp1&#160;&#160; where&#160;&#160; job=&amp;acute；SALE&amp;acute；）；</p>
<p> 假如利用外部联接，改写命令如下：</p>
<p> select&#160;&#160; a.empno&#160;&#160; from&#160;&#160; emp&#160;&#160; a&#160;&#160; ，emp1&#160;&#160; b</p>
<p> where&#160;&#160; a.empno=b.empno（+）</p>
<p> and&#160;&#160; b.empno&#160;&#160; is&#160;&#160; null</p>
<p> and&#160;&#160; b.job=&amp;acute；SALE&amp;acute；；</p>
<p> 大家可以发现，运行速度明显提高。</p>
<p>3.删除表内重复记录的方法</p>
<p> 大家可以利用这样的命令来删除表内重复记录：</p>
<p> delete&#160;&#160; from&#160;&#160; table_name&#160;&#160; a</p>
<p> where&#160;&#160; rowid &lt;&#160;&#160; （select&#160;&#160; max（rowid）&#160;&#160; from&#160;&#160; table_name</p>
<p> where&#160;&#160; column1=a.column1&#160;&#160; and&#160;&#160; column2=a.column2</p>
<p> and&#160;&#160; colum3=a.colum3&#160;&#160; and&#160;&#160; ……）；</p>
<p> 需要注意的是，当表比较大（例如50万条以上）时，需要另想办法。</p>
<p>4.set transaction命令的用法</p>
<p> 在执行大事务时，Oracle有时会报如下错误：</p>
<p> ORA-01555：snapshot&#160;&#160; too&#160;&#160; old&#160;&#160; （rollback&#160;&#160; segment&#160;&#160; too&#160;&#160; small）</p>
<p> 这说明Oracle给此事务随机分配的回滚段太小了，这时可以为它指定一个足够大的回滚段，以确保这个事务的成功执行。例如：</p>
<p> set&#160;&#160; transaction&#160;&#160; use&#160;&#160; rollback&#160;&#160; segment&#160;&#160; roll_abc；</p>
<p> delete&#160;&#160; from&#160;&#160; table_name&#160;&#160; where&#160;&#160; ……</p>
<p> commit；</p>
<p> 回滚段roll_abc被指定给这个delete事务，commit命令则在事务结束之后取消了回滚段的指定。</p>
<p>5.使用索引的注意事项</p>
<p> select，update，delete 语句中的子查询应当有规律地查找少于20%的表行。如果一个语句查找的行数超过总行数的20%，它将不能通过使用索引获得性能上的提高。</p>
<p> 索引可能产生碎片，因为记录从表中删除时，相应也从表的索引中删除。表释放的空间可以再用，而索引释放的空间却不能再用。频繁进行删除操作的被索引的表，应当阶段性地重建索引，以避免在索引中造成空间碎片，影响性能。在许可的条件下，也可以阶段性地truncate表，truncate命令删除表中所有记录，也删除索引碎片。</p>
<p>6.数据库重建应注意的问题</p>
<p> 在利用import进行数据库重建过程中，有些视图可能会带来问题，因为结构输入的顺序可能造成视图的输入先于它低层次表的输入，这样建立视图就会失败。要解决这一问题，可以采取分两步走的方法：首先输入结构，然后输入数据。命令举例如下（uesrname：jfcl，password：hfjf，host sting：ora1，数据文件：expdata.dmp）：</p>
<p> imp&#160;&#160; jfcl/hfjf@ora1&#160;&#160; file=empdata.dmp&#160;&#160; rows=N</p>
<p> imp&#160;&#160; jfcl/hfjf@ora1&#160;&#160; file=empdata.dmp&#160;&#160; full=Y&#160;&#160; buffer=64000</p>
<p> commit=Y&#160;&#160; ignore=Y</p>
<p> 注释：第1条命令输入所有数据库结构，但没有记录。第2次输入结构和数据，64000字节提交一次。ignore=Y选项则会保证第二次输入既使对象存在的情况下也能成功</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.acmind.com/archives/349/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

