测试驱动之于网页设计开发

这是一篇译文,其中涉及了不少比较专业的概念,我将用一系列文章来介绍这些概念,这些文章对于网页设计进行了更加深入的探讨,也许在我们看来有些学究气了,但是通过这种探讨,我们从中应该看到一些好的方法论和更多的用户体验关怀。 
Progressive Enhancement(逐步增强)开发模式正逐步成为基于标准设计的最佳实践。从简洁,语义化的HTML标记开始,通过Javascript和CSS层层渐进式增强,我们试图为任何受众创建可用的体验,对于那些功能不那么强大的设备和浏览器能获得一个相对简单但是功能完整的用户体验,而其他那些功能齐备的则将获得剩下的附加特性和体验。
这是就是PE(Progressive Enhancement 以下缩写为PE)的基本理论。但是在实践过程中,这些增强仍然被推送给了绝大多数设备,其中包括大量不支持这些特性的对象,比如较低版本的浏览器或者是功能受限的移动客户端。这些设备一开始的确获得简单但功能完整的页面,但随后被“增强”到了乱糟糟的页面。这显然是和PE理论背道而驰的。
那我们应该怎么做增强以确保所有的设备和浏览器获得正确的效果呢?测试,这时候我们需要的是通过逐级测试来确保这点。
兼容性测试
不久之前,我们发现可以使用很简单的Javascript代码来测试目标设备对于CSS的支持情况。让我们从一个很简单的盒模型测试开始,我们插入一个对象到当前Document中,然后设置一些样式属性,然后通过Javascript来校验是否被正确支持了。

function boxmodel(){
var newDiv = document.createElement(’div’);
document.body.appendChild(newDiv);
newDiv.style.width = ‘20px’;
newDiv.style.padding = ‘10px’;
  var divWidth = newDiv.offsetWidth;
  document.body.removeChild(newDiv);
  return divWidth == 40;
}
通过上面的TestCase,我们能很快的检查目标设备是否正确支持盒模型,然后我们也能采取对应的增强方式。
有了上面的这个主意,我们能类似的写出如下测试用例:

float
clear
position
overflow
line-height

当然仅通过CSS测试并不能覆盖到所有情况,幸运的是,我们还能通过Javascript测试来做其他兼容性测试。(译注,这可能是大家比较熟悉的浏览器检测了)。

document.createElement()
document.getElementById()
xmlHttpRequest()
window.onresize()
window.print()

通过上述测试,我们可以知道是否可以正确显示客户的应用。
我和我在Filament Group的同事开发了testUserDevice.js,来完整上述所有的测试。

利用这些测试结果
整合testUserDevice.js到一个页面上是相当简单的,讲JS文件包含进来,然后调用testUserDevice.init()方法就可以了。
为了更好的阐述这些概念,我们来看一个具体的例子,这是一个有一定复杂度的表单页面,让我们从最基本的HTML开始。
DEMO1
=== CSS增强
当目标设备通过了我们的测试代码,会对页面进行一系列的增强,默认情况下,会进行下列DOM更新:

样式Class enhanced 被加到[BODY]元素上。
 (title=”enhanced”) 可选的样式表文件被启用。
 (title=”not_enhanced”) 与之相反的,所有这些非增强样式表文件被禁用。

这样的变化给你提供好几个契机去做层进式的增强,比如BODY标记上的样式增强。来看下例子:

body div.example { 
margin: 1em 0;
}
如果用户的浏览器通过了测试,我们可以使用float布局来实现水平排列。

body.enhanced div.example { 
float: left; 
[…]

20个帮助你更好的掌握CSS的网站

原文地址:http://sixrevisions.com/css/20_websites_learn_master_css 
相信不少人,哪怕是职业的网页设计师有的时候也不免会觉得CSS有那么点玄妙,有很多小trick并不是那么容易一下子掌握的。
三人行必有我师焉,那就从一些前辈那里学点东西吧,20个CSS和网页设计相关领域的站点,希望能给大家带来一些帮助。
1. A List Apart CSS Topics
老牌CSS站点,从1999年开始一直致力于整理收集面向标准网页开发的优秀文章。 

2. CSS Help Pile
收集整理了大量的CSS相关资源,而且归档非常清晰,查询非常方便。

3. CSS Basics
通过一系列教程讲述了CSS的基本概念和基本原理。非常不错的一篇入门教程,我当年也获益良多。

4. Holy CSS Zeldman!
CSS相关资源站点,不是《网站重构》的那个Zeldman,不要搞错咯。

5. Eric Meyer: CSS
一位有名的CSS作者的blog,值得一看。

6. 456 Berea Street – CSS category
很流行的CSS站点展示,这类的网站有非常多,多看多收获。激发一下创作灵感。

7. /* Position Is Everything */
网页很多时候困惑和苦恼都来自于Position问题,那让我们专门来看看这类问题吧。

8. HTML Dog CSS Tutorials
是不是想起了上个世界有个老派的html编辑器,这里有着适应不同程度读者的教程。

9. Learn CSS Positioning in Ten Steps
继续深入学习Position,将学习进行到底。

10. Andy Budd CSS/Web Standards Links
Andy大大的网站,如果不知道这位大大,可以看一下《CSS Mastery》这本书,相当不错的一本好书。

11. W3CSchools CSS Tutorial
权威学校来了,科班教育。不过有点乏味,我是不怎么喜欢看。

12. css Zen Garden
我最爱的禅意花园来了,有非常多很梦幻的设计在这里。细细读一下吧,这本书国内去年也出了中文版了。

13. CSS at MaxDesign

14. CSSeasy.com
提倡从经验中学习CSS,用更加现代的方式去学习理解CSS。

15. CSS-Discuss
讨论社区,如果E文不错的话,可以去学习交流一番。

16. […]

一个CSS小技巧解决了游戏预览问题

最近和爱玩游戏的师弟搞了个小游戏博客 [ 游戏247 ],因为工作也比较忙,还是简单的用了wordpress作为建站方案。虽然也写了一段时间Blog了,但是说实话,因为工作比较繁忙,对于wordpress一直也没好好的去研究过。发布游戏的时候遇到了一个问题,因为flash小游戏说大不大,但也不小,如果首页上全是一堆Flash让访问者去等待下载也是挺不好的一件事情。而且不少小游戏是有背景音乐的,要是百家争鸣的,不免有些聒噪。
 我想Wordpress应该肯定有比较好的插件来解决这个问题,抑或有什么小技巧来解决该问题,如果有谁知道的话,倒也不吝告我一声。我来说说我怎么解决该问题的。
首先我希望首页每篇blog都不显示flash,只显示一个游戏截图,就像图上这般:

然后点击进入文章全文的时候,隐去这个截图,而是直接显示flash小游戏,这样正所谓伊人双面。
我想了个最简单的方法,增加了一个css样式
 #single_post_div .preview_pic {display:none;}
 #index_post_div .game_flash  {display:none;}
利用css选择器,正好在不同的场景下显示不同的内容。这样的技巧通常会用在HTML网页打印CSS样式中,例如:
我希望在打印网页时,只打印正文,而将头部啊,侧边导航栏等等都隐去,我通常会这样
/*hide various parts from the site
#header, #footer, #navigation, #rightSideBar, #leftSideBar
{display:none;}
*/
虽然是个很粗陋的技巧,但是也挺有效的。

CSS Framework,让你事半功倍

近两年来,程序员有一句话很流行,“不要重复制造轮子”,所以出现了许许多多让我们非常受用的各种框架。Framework在开发的各个领域给我们减少了很多工作量。而对于网页设计师来说,一直以来,缺少这样的Framework来帮助设计师们减轻工作量。
 今天给大家推荐一些不错的CSS Framework:
首先是本文的主角:

这是一个非常轻量级而且很少侵入性的框架(这话怎么看都不是网页设计师能熟悉的,:-) ),换句话来说,这是一个很底层的CSS Framework,并没有替你实现任何布局,也没有提供很多好看的模板。它只是帮你把一些最基本的事情做掉了,剩下的交给自己来了。非常适合那些具有一定开发经验的网页设计师使用。我做了一些中文化修改,大家如果发现问题,可以联系我。
reset.css
html, body, div, span,applet,
object, iframe,h1, h2, h3, h4, h5, h6,
p, blockquote, pre,a, abbr, acronym,
address, big, cite, code,del, dfn, em,
font, img, ins, kbd, q, s, samp,small, strike,
strong, sub, sup, tt, var,dd, dl, dt,
li, ol, ul,fieldset, form, label, legend,
table, caption, tbody, tfoot, thead,
tr, th, td {
  margin: 0;padding: 0;border: 0;
  font-weight: inherit;font-style: inherit;
  font-size: […]

[搜网志]IE的CSS标准兼容性官方MSDN说明

IE的CSS标准兼容性官方MSDN说明
http://msdn2.microsoft.com/en-us/library/cc351024(VS.85).aspx

CSS代码优化压缩工具

本文概要:CSS 代码压缩优化工具,加快页面加载速度,节省网络带宽
前天给推荐了“CSS代码生成器”,今天继续第二波攻势,最近跳槽换新工作了,这两天处于无业状态,多更新几篇。下周起就不做张江民工了,改做八佰伴民工了。:-)
推荐两款CSS压缩优化工具:

CSS Formatter and Optimiser (based on csstidy 1.1)
http://www.cleancss.com/index.php

Cascading Style Sheets Optimization
http://www.cssoptimiser.com/