网站由于复杂原因关闭了。
CSS Sprites 技巧
一个德国佬的文章 CSS-Sprites Quellensammlung
一,关于CSS Sprite
CSS Sprites是一种网页图片应用处理方式。它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,载入的图片就不会像以前那样一幅一幅地慢慢显示出来了。对于当前网络流行的速度而言,不高于200KB的单张图片的所需载入时间基本是差不多的,所以无需 顾忌这个问题。
按照yahoo的rules for high performance web sites的原则,应当较少Client与Server端间 的HTTP Request次数。通过CSS Sprites方法将多张图片组装成单独的一张图片,可以有效减少HTTP请求 的次数。
当整幅图片载入完成后,你就可以使用CSS方法通过设置背景位置的方式完成所需图片的准确调用。
加速的关键,不是降低重量,而是减少个数。传统切图讲究精细,图片规格越小越好,重量越小越好,其实规格大小无所谓,计算机统一都按byte计算。客户端每显示一张图片都会向服务器发送请求,所以,图片越多请求次数越多,造成延迟的可能性也就越大。
二,CSS Sprite的使用
有几篇关于CSS Sprites的文章,基本上把其原理和机制说明得很清楚。
Creating Rollover Effects with CSS Sprites
Building a Dynamic Banner with CSS Sprites
High Performance Web Sites中关于CSS Sprites的内容3.2. CSS Sprites
三,CSS Sprite的例子
[原文:http://blog.rexsong.com/?p=746#comments]
1. 图片限制(Image Slicing)
典型如文本编辑器,小图标特别多,打开时一张张跑出来,给用户的感觉很不好。如果能用一张图解决,则不会有这个问题,比如百度空间、163博客、Gmail都是这么做的。
![]()
Image Slicing’s Kiss of Death
http://www.alistapart.com/articles/sprites
2. 单图转滚(Single-image Rollovers)
触发切换图片的需求,传统方案得重新请求新图片,因为网络问题经常造成停留或等待。如果能把多种状态合并成一张图,就能完美解决,然后再使用背景图技术模拟动态效果。
![]()
ColorScheme Ratings
http://demo.rexsong.com/200608/colorscheme_ratings/
3. 延长背景(Extend Background Image)
如果图片的某边可以背景平铺无限延长,则不需要每个角、每条边单独搞出来,图片能少一个就少一个。其实,这个理论还可以扩展到四角容器里,好处是能大大简化HTML Structure。
![]()
Extend Background Image
http://demo.rexsong.com/200705/extend_background_image/
综合案例
Google Korea(1和2技巧)
http://demo.rexsong.com/200705/google_korea/


CSS Menus(2和3技巧)
http://demo.rexsong.com/200705/css_background_menus/

四,CSS Sprites的问题
由于IE6存在的background的flicker问题IE6/Win, background image on , cache=‘check every visit’: flicker!,有人针对此问题提出了解决方案Fast Rollovers Without Preload
关于IE6的flicker问题,fivesevensix.com上有一篇很不错的研究文章Minimize Flickering CSS Background Images in IE6
另外:brunildo.org的CSS tests and experiments是关于css各种功能不错的参考手册和测试工具。
五,相关资源
What Are CSS Sprites?
http://www.peachpit.com/articles/printerfriendly.aspx?p=447210&rl=1
CSS Sprites: Image Slicing’s Kiss of Death
http://www.alistapart.com/articles/sprites/
CSS Sprites Generator
http://spritegen.website-performance.org/
Fast Rollovers Without Preload
http://wellstyled.com/css-nopreload-rollovers.html
JavaScript Sprite Animation Using jQuery
http://www.sitepoint.com/blogs/2007/07/20/javascript-sprite-animation-using-jquery/
http://www.sitepoint.com/blogs/2007/07/05/css-using-percentages-in-background-image/
How to create CSS sprites
http://fatagnus.com/how-to-create-css-sprites/
Creating Rollover Effects with CSS Sprites
http://www.devarticles.com/c/a/Web-Style-Sheets/Creating-Rollover-Effects-with-CSS-Sprites/
Building a Dynamic Banner with CSS Sprites
http://www.devarticles.com/c/a/Web-Style-Sheets/Building-a-Dynamic-Banner-with-CSS-Sprites/
CSS Sprites and IE/Win Flicker Issue
http://www.brajeshwar.com/2006/css-sprites-and-iewin-flicker-issue/
css用法测试工具:CSS tests and experiments
Posted in 前端开发.
向网站设计师们介绍Git
用过Git 但是不怎么熟悉,发现篇好文章分享下
除非你单枪匹马,在网站工作室里没有团队共同合作。否则你肯定对文件分享感到崩溃。无论怎么努力,当很多人对同一个项目进行设计时,没有一个合适的版本控制系统,事情会变得一团糟。
当你与其他设计师们在创建一个网站并对其进行完善时,前端模板和后端功能的融合将会是一个令人提心吊胆的盲区。
像重写、文件丢失、和常见的“消除以往版本”问题经常会意外地产生。一旦后端功能被嵌入你的模板中,你很怕再触及它们,生怕一个不小心就毁了哪个设计师花费大量时间做出的成果。
此外,即使你们有个共同的存储库,每个人都可以从中签出文件。可能还是会有人忘记签出最新的文件并准备在旧文件上进行最新添加,从而将事情搞的乱七八糟。
在这篇文章中,我将向你们大概介绍一下Git概况,一个相当不错的版本控制系统。
版本控制-三言两语很难解释清楚
版本控制(又叫修订控制或源控制管理)是解决文件共享问题的极佳方法。
基本的概念是:对所有的项目文件都有一个主存储库。团队成员签出文件、进行变更、然后再将它们签入(或提交)。版本控制系统(VCS)自动标识出谁做的变更、何时变更的,以及是否是最新的文件。
它要求你就变更写一个简短的记录以便项目每个人一看就知道你做了什么及为什么这么做。每个文件都有修订历史。因此如果出现可怕的错误你可以轻易地回到任何一个文件的以前版本。
一个好的VCS能够将变更合并到同一个文件。如果你和另外一个人同时在本地计算机上对同一个文件进行变更,当你们将变更后的文件签入主存储库时,系统会将这些变更合并形成一个全新的文件。如果合并时出现冲突,它会提醒你们。
你现在可能正在使用一个粗糙的VCS系统来确保你的文件准确有条理。如果你是设计师,就会像这样:
设计师版本控制-失败对于PSDs或者其他大型的二进制文件来说这样很好,不需要用VCS系统。但当你在为一个网站管理源代码,那么有一个更好的方法来解决它。
使用版本控制系统的好处有:
•文件不会被覆盖
•共同的存储库包含了所有最新文件
•人们能够同时对同一个文件进行变更而不发生冲突
•如果需要可以恢复到文件或项目的一个以前版本
•令你的设计师们感到高兴
即使你不与团队合作,版本控制也能够为你节约时间。备份文件是最简单的一件事儿,它让你免遭工作失败或不得不重新开始的厄运,从而为你节省时间。
VCS系统的概念一开始可能让人望而生畏,特别是大多数软件说明都是由网站设计师编写或给他们看的。但只要你将它融入你的工作流中,你就会发现它并非想像得那么难。
认识Git
OK,现在你已经了解了为什么一个版本控制系统对你的网站设计团队是必不可少的了。如果你在Google上稍微搜索一下就会发现有不少这样的系统包括SVN、Mercurial、CVS、Bazaar和Git。任一种都能满足你的需求,而我建议你在选择版本控制系统之前先做些调查。本文我将着重介绍Git,这个我每天都在使用的系统。它是“新起之秀”,广受欢迎。多亏了优秀的Linux网站设计师们,GitHub和Rails社群。
Git是一个不受限制的开放源码版本控制系统,最初由Linus Torvalds为了Linux核心开发而创建。Linux很聪明;当他开始解决一个问题时,他会把事情处理得井井有条。Git一个最大的区别是不像SVN和CVS,它是个分布式的版本控制系统。这就意味着每个用户都有一个完整的存储库数据拷贝保存在他们本地的计算机中。那很棒,不是吗?还有一些特点:
•每个文件都在本地计算机,因此你可以在脱机状态下工作
•没有单点故障。它不依赖中央服务器不会死机或烧毁,用它创建你项目的惟一存储库吧
•因为不需要时时与中央服务器进行沟通,处理起来更加快速
Git比SVN要难学一点儿,但这是值得的。想想看当你告诉你的网站设计朋友们你在使用最流行的Git系统时,他们艳羡的表情吧!认真来说,我不认为这种学习曲线有什么不合理。一开始SVN同样让我感到困惑,随着不断地使用我也遇到了更多的问题。
安装Git一点儿都不好玩。幸运的是有个知识渊博的设计师愿意帮我,网上有很多资源可以帮你搞定它。它适用于PC、Mac或Linux系统,在Linux和OSX上安装要比在Windows上安装容易些。
你可以在这里下载Git的最新版本。下载好后,尝试这种快速向导来帮助你安装。对Windows用户来说,这种一步一步的可视化向导应该很有用。Mac用户可以尝试在GitHub上的向导。
开始创建
安装完毕后,你可以创建你的存储库了。将现有的一个文件夹变成Git存储库,在终端机或命令提示窗口中使用以下命令:
cd path/to/project git init git add . git commit
你要Git做的是以下这些:
•创建目录
•将所有东西添加到这个目录中-所有的文件和子目录
•提交或保存,所有的变更都在这个目录中
如果你讨厌用命令行,你也可以用Git GUI.它不是最常见的一种,但需要时也可以用。

一个Git工作流的实例
目前我和很多网站设计师们在Mac上用Git设计一个网站应用程序。我们有一个源码“母”版可以签入我们的文件,我们每个人在本地计算机上还有一个完整的拷贝。任何时候,我的工作流都会像下面这样:
1.打开终端机。开始建立本地mysql数据库(以便我们建立的应用程序能够在本地计算机运行)
2.用“git签出”命令在终端机上获取最新的变更。这使得我能够获得所有其他成员做出的变更,这些变更都被签入到我们的主存储库中。
3.在TextMate上打开项目进行我的变更。
4.提交变更并添加我的记录。这仅是在本地的提交。我频繁地进行提交,每天至少十次或十次以上。这能够帮助我跟踪项目进展。
5.用“git签入”命令将我的变更签入主存储库。现在团队其他成员都能看到并获取我的变更。你应该至少每天这样做或在有重大内容添加后这样做。
所有这些工作都能通过终端窗口轻松地完成。但我是个可视化女生。因此,我使用GitX,一个基于OSX的Git gui ,来完成我的提交。仍可以用终端机签入签出文件,但GitX将组织提交变得很容易并让我集中精力于正在做的事儿。

顶端高亮显示对文件所做的变更。在下面左边是Unstaged Changes的列表。为了提交它们,你要拖曳一个或多个文件到右边的“Staged Changes”区域,输入提交信息,然后点击提交按钮。
浏览一下树视图,可以看到有哪些变更签入到存储库中。如果我的文件当前与主存储库不匹配,顶端的绿色标识和蓝色标识不会同时出现。GitNub提供了一个基于Mac风格的类似界面。

还有超棒的TextMate捆绑包。有了它,你可以在TextMate中进行签入、签出、提交及更多其他操作。效率非常高。

学习更多
Git备忘单
以上: Zack Rusin’s Git Cheat Sheet
使用Git我还是个新手,只向你们简单介绍了用它可以做些什么。但我已经看到了它成为版本控制系统的光明前景,而且很高兴我能够走在时尚的前面。
学习更多Git知识,请查阅以下丰富资源:
Git介绍
Getting To Know Git
Wikipedia entry on Git
Why Git Is Better Than X
Linus Torvald’s TED talk on Git
A Tour of Git: The Basics
Git Ready
备忘单/小贴士
37 Signals Git Resources
Git For The Lazy
The Git User Manual
A Gaggle of Git Tips
GitHub’s Git Cheat Sheet
Git Magic
版本控制介绍
Version Control For Designers
A Visual Guide to Version Control
Wikipedia entry on Revision Control
Choosing a Distributed Version Control System
I Wonder What This Button Does (A List Apart)
本文由明迪·瓦格纳独家撰写。她是Viget实验室的网站设计师,在出版和网站设计方面有8年多的经验。她获得了电子媒介艺术学位并与伦斯勒理工学院有着良好的沟通。
Posted in 胡言乱语.
深究:发掘Google Reader的功能
很好的一篇文章 收藏下 !

Google Reader 是一款功能庞大的RSS 阅读器,不过如果你没有仔细研究它的文档,那么你很可能并未充分利用它提供的功能。
今天我将通过介绍Google Reader丰富的快捷键来展示Google的这款功能强大的RSS阅读器。为了让您更快的了解这款世界上最好的新闻阅读器,在文章的末尾我将介绍几个我个人喜欢的供Google Reader使用的插件及其下载链接。
Google Reader及其功能强大的快捷键
由于我是一个快捷键爱好者,所以我将首先介绍Google Reader提供的你想象不到的快捷键。耳听为虚,眼见为实,为此我专门制作了一段视频短片:
使用过我在Gmail Master post 中提到过的Gmail GreaseMonkey宏脚本的朋友一定会觉得Google Reader的Quicksilver风格快捷方式界面非常熟悉。这很正常,因为Gmail宏的作者正是Google Reader的前台技术总监 Mihai Parparita。
首先我们先来看看我在上面视频中用到的几个快捷方式
内嵌的快捷方式:Google Reader集成了指向固定位置(比如Home,All Items,和 Starred Items)的快捷方式。因此你可以敲g+a(Go + All Items)看到你所有未读的文章。同样,敲g + h(go + Home)可以回到首页和g + s(goes to Starred items)可以跳转到你标注过得文章。
浏览您订阅的源:其他阅读器也有类似功能,但是Google Reader的快捷键强在你可以根据你自己的定义快速定位。比如说,你可以通过键入g + u+ 源的标题来定位到任何源。例如,你通过键入g + u + Lifehacker可以定位到Lifehacker源(假定已经订阅了此源)
当你键入g + u时你会看到一个弹出界面,其中列出了你当前订阅的所有源。当你继续输入文字时它会根据输入的文字过滤当前列表并且自动选择最上面的一项。
通过Labels/Tags定位:如果你通过label和tag来组织你的源(Google Reader并不肯定怎么称呼它们,有时候叫label,有时候叫tag),那么在Google Reader中你也可以根据这些label和tag迅速定位。要通过label/tag定位你可以键入g + t +tag 名称(定位到指定名称的tag)或者g + l + label名称(定位到指定名称的label)。我并不想把你们搞糊涂,其实在Google Reader中label和tag是一回事,因此两种方法都有效。由于我在Gmail中一直用label这个名称,因此在下文中我将用label来表示这个东东。
给源和文章加label:当你订阅了一个新源时你可以在选项中把它放到一个“文件夹”中。从本质上说把一个源放到一个文件夹中和你给这个源中所有文章加一个同名label效果是一样的。因为Google Reader本身并不过滤,而是通过文件夹来过滤。因此如果你设置了一个叫做productivity的文件夹/label,然后你将Lifehacker放入productivity文件夹,那么Lifehacker中的每一篇文章都被加上了’ productivity’ label。
当然,你也可以给单独给源加label。当你看到一篇文章想给它加一个独立的标记时你可以键入l + label名称或者t + tag 名称(随你自己决定) 。你可以用逗号来分隔多个label,你可以新建一个label也可以从自动建议下拉框中选择已有的label。

定位到具体的文章:在Google Reader中你可以通过多种方式在文章间穿梭。如果你在Gmail中使用快捷键那么Google Reader中的这些快捷键对你来说将会是非常熟悉的。你可以:
- 通过按j(向下)和k(向上)来从一篇文章跳到另一篇文章
- 通过按n(下一个)和p(前一个)来在文章间穿梭(不打开文章)。如果你是在展开状态下阅读那么j/k和n/p的效果是一样的。
- 如果你在列表中浏览,那么你可以按回车键或者O来打开/关闭当前项。(顺便提一下,你可以通过1和2两个数字来在展开和列表两个视图间移动)
- 按s来给当前项加星
- 按v来在新窗口中看当前项在原网站中的内容
- 按m来将一篇文章标记为已读
- 按u来全屏阅读,这样可以缩进侧栏,尽可能的扩大你的阅读空间[参考自Quick Online Tips]。
更多的快捷方式:上面提到的是最常用的一些快捷方式,事实上Google Reader提供了更多的内建快捷方式,如果你想了解它们可以到这里来找。
最好的Google Reader加载项
除了漂亮的外观设计外Google Reader还有很多加载项,这些加载项有的是Google提供的,有些是用户编制的。我个人喜欢这些:
- Google Reader Notifiers:Google还没有发布官方notifier,幸运的是Reader爱好者自己制作了Notifier,你可以下载Windows,Mac 和Firefox用的Google Reader Notifier。
- 使用Google 合作伙伴产品和Greasemonkey脚本,通过它你可以对Google Reader的自定义搜索。

- 说到Greasemonkey,Smart Google Reader subscribe button(作者也是Mihai Parparita)可以让你更加容易的订阅一个网站的源,同时它还会告诉你是否已经订阅了该网站。如果你订阅了非常多的源(就像我们订阅Lifehacker一样)这样的宝贝还是很有用的。
- 还是使用Greasemonkey script(作者还是Mihai Parparita)来集成Google Reader和Gmail。
让我们在评论中听听你最喜欢的Google Reader特性和加载项吧。
Adam Pash 是LifeHacker的高级编辑。他对应用程序提供的快捷键特别感兴趣。每周二他都会在他的专栏Hack Attack发表文章。订阅Hack Attack RSS feed 来关注他的新作。
Posted in 胡言乱语.
LOGO设计
作为设计师,我们总是需要很多的灵感(inspiration) 。 无论是网页或平面设计,创造力是至关重要的。
下面是50个美丽,聪明, 创造性的标志设计,希望能给您启发。如果您仔细看看下面的作品,您会发现许多设计趋势。其中包括使用简单的形状创建 一些复杂的,折纸形状,颜色和透明度趋势。
为什么会有如此出色的标志?所有这些标识通过颜色,形状 使用非常创造性的方法来代表品牌, 和形状排版。每个标识可以告诉你一些有关该公司的信息。
最后, 注意字体,尤其是字体的选择和着色。
Posted in 视觉设计.
必须知道的10个不常用HTML标签
网页开发人员常常希望能够了解并掌握多种语言,结果是,学习一门语言的所有内容是棘手的,但是却很容易发现你并没有完全利用那些比较特殊却很有用的标签。
不幸的是我们到现在还没有涉足的那些比较不知名的HTML标记所有潜力。但它永远不会太晚重新进入领域,并开始编写代码来发掘这些未开发的标签的能量。
这里是10个未被充分利用或被误解的HTML标签。或许它们不太广为人知,但是在特定情况下他们却非常有用。
1. <cite>
貌似每个人都比较熟悉<blockquote> 标签,但是你可知道<blockquote>的小弟弟<cite>?<cite> 允许你定义元素内的文字作为一种参考。一般,浏览器会用斜体来显示<cite> 标签内的文字,但是这可以用一点CSS来改变。
<cite> 标签对于引用目录或其它网站的参考非常有用。这里是一个在段落中使用cite标签的例子:
2. <optgroup>
<optgroup>标签是定义select标签中的选项分组的一种很好的方法。比如,你需要按时间来分组电影列表,那么就可以这样做:
<select id=”showtimes” name=”showtimes”> <optgroup label=”下午一点”><option value=”titanic”>泰坦尼克号</option> <option value=”nd”>贫民窟的百万富翁</option> <option value=”wab”>怪物史瑞克</option> </optgroup> <optgroup label=”下午两点”> <option value=”bkrw”>狮子王</option> <option value=”stf”>全民超人</option></optgroup></select>
3. <acronym>
<acronym> 是一种定义或更多解释一组文字的方法。当你用鼠标放到使用<acronym>标签的文字时,一个显示title标签的内容的框框将会出现在下边。比如:
4. <address>
<address> 标签是一个非常不起眼的小标签,但是这并不意味着它没有用。顾名思义<address> 允许你在HTML中语义化标签。这个小巧的标签将默认斜体显示标签内的内容,当然,使用样式可以很容易的改变默认的样式。
1234 Web Dev Lane
Anywhere, USA
</address>
5. <ins> 和<del>
如果你想使用标签来显示编辑版本,<ins> 和<del> 正好适合。顾名思义,<ins> 用下划线高亮显示添加进来的内容,而<del> 用删除线显示被移除的信息。
6. <label>
貌似表单元素最容易忘掉何时标记文本。对于表单元素,最常忘记的就是<label> 标签。不仅仅是一个便捷的标记文本的方式,<label> 标签还能传递一个”for” 属性来指定哪个元素将会被关联。<label> 不仅易于用样式来控制,还允许你让标题可点击。
<input id=”username” type=”text” />
7. <fieldset>
Fieldset是一个小巧的标签,你可以用来为你的表单元素添加逻辑分组。<fieldset>标签就会在其内部的元素周围画一个框。另外一点就是可以在fieldset里面添加<legend> 标签来定义分组的标题。
<legend>你比5年纪学生聪明吗?</legend>
当然<input name=”yes” type=”radio” value=”yes” />
不知道<input name=”no” type=”radio” value=”no” />
</fieldset>
</form>
8. <abbr>
<abbr> 标签颇类似于<acronym> 标签,不同的是<abbr> 标签只用于定义缩写单词。就像<acronym>一样,你可以为这个标签定义一个title属性。当用户将鼠标放到缩写文字上面时,全部内容就会在下面显示。<abbr> 标签很少用,但是对于屏幕阅读者、拼写检查者以及搜索引擎是非常有用的。
9. rel
Rel 可以是一个极度有用的 属性,任何HTML元素都可以应用一个rel属性。它有助于传递没有另外指定的额外参数。这对于在HTML中使用JavaScript的时候是非常有用的。如果你有一个想要在行内编辑的链接,你可以添加:
Javascript 会寻找带有rel属性”clickable”的a链接,并应用一些Ajax并允许它在行内被编辑。这只是你可以使用rel属性的众多技术中的一种用法,因为它的潜力是无止境的。感兴趣的朋友可以深入研究一下W3C关于Rel的介绍。
10. <wbr>
<wbr>标签是一个难以相信的不出名的标签。坦率的讲,我也很怀疑你们会接触到这个标签, 因为它几乎从来没有用到。(的确,在我写这篇文章之前我几乎没有见到过这个标签)。事实上,这个标签算是一个软断行,允许你在某一行内指定一个断行点,表明在该点处可以断行,但是不是一定会断行,仅仅是在有需要断行的时候才会断行。如果你想避免出现水平滚动条,那么使用这个标签是很棒的。
如果你想要实现相同的效果而不使用<wbr> 标签,你可以试一下​或­。据说这三个标签都未被所有浏览器完全支持。你可以通过 这篇文章 来查看各个浏览器对着三个标签的支持情况。
PS:
颇困难的翻译了这篇文章,神飞深深的感受到了语义化的魅力以及HTML标签的强大,相信我们没有认识到的标签还有很多,结果,常见的标签大家都很熟悉,不常见的标签大家有都不会用。正如之前我在一篇文章中阐述的那样,“语义化”很大的一部分是,在恰当的地方使用合适的标签,而不是一味的div下去。如果,我们能够了解更多的HTML标签,我们就能写出更具语义的HTML代码,也能大大的降低我们写CSS的难度和工作量,并使我们的页面结构更趋合理。
Posted in 前端开发.


























































