CSS 布局:40个教程、技巧、例子和最佳实践

前言: 布局是WEB开发一个重要的课题,进入XHTML/CSS后,使用TABLE布局的方式逐渐淡出,CSS布局以众多优点成为主流,本文将介绍40个基于CSS的web布局的资源和教程。文章的出处在http://www.noupe.com/css/css-layouts-40-tutorials-tips-demos-and-best-practices.html。文中的不少的例子在一本经典的CSS书籍《CCS: The Missing Manual, 2nd Edition》中都可以找到,据我所知,第二版在中国没有翻译出版。你可以从这里下载英文版(不过需要注册个用户名)

正文
基于CSS的布局能提供更灵活布局方式和更强的用户视觉体验。一些重要技巧和关键点可以帮助初学者理解CSS布局的基础和本质。这也是本文成文的原因 ——找到那些完美的布局,完全灵活的,等高栏和工作完美的布局。
因此下面这个列表就是我们整理了网络上关于基于CSS布局的一些技巧,教程和最佳实践的列表。
当然你也可能对下面这些和CSS相关的主题有兴趣:

The 7 CSS Hacks that we should use
Using CSS to Do Anything: 50+ Creative Examples and Tutorials
Using CSS to Fix Anything: 20+ Common Bugs and Fixes

 

CSS 布局教程

1-使用CSS完成三栏固定布局结构– 这篇文章解释了如何实现一个基于的HTML/CSS来设计一个简单的带有基本要素(顶部的logo条,导航条,文本区,定义分类的中部栏,右边侧栏插入google的120X600的广告区)的固定三栏页面布局。

2-使用CSS设计页面布局– 如何使用CSS文件来为你的站点设计页面布局。

3-如何创建一个水平布局的站点– 创建不同于常规的水平布局的站点技术(译者注:水平布局,客户体验也就仁者见仁了)


例子查看这里 |下载

4-超级简单的两栏布局– 创建不同于常规的水平布局的站点技术(译者注:这里是原作者笔误吧和上面的内容一样).

例子查看这里 下载

5-简单两栏CSS布局– 这是一个创建简单两栏布局的教程。这种布局包含了一个标题区,一个水平导航条,主内容区,边侧栏,和页脚区。并且这个布局是水平居中的。

例子查看这里

6-圣杯布局(The holy grail layout) – 3栏布局会有一些问题 ,这篇文章讨论了一种三栏布局——两栏固定宽度边侧栏加上一栏变宽中栏布局,保证了页面的良好结构和清晰。

例子查看这里

7-CSS居中101– 如何使用CSS完成居中一个固定宽度的布局

使用CSS,通过下面两条规则完成对id为container的DIV所包含的内容居中

1234<body>  <div id="container"> ...entire layout goes here... </div> </body>12345678body {     text-align: center; } #container {     margin: 0 auto;     width: xxxpx;     text-align: left; }

8-从头创建CSS布局– 这个指南通过创建一个全功能的 CSS布局来一步步教你入门CSS布局。

9-非主流!多栏布局– 多栏布局,等高栏(每一列的高度都相等),固定或变宽中央区,简洁标记,CSS 。(译者注:原文作者的图配的和上图一样)

例子查看这里

10- 创建天下无双的CSS布局– 高灵活性布局,等高栏,跨栏垂直摆放元素。本文告诉你通过何等手段完成这些目标,并使用它们创建天下无双的CSS布局(译者注:原文是One True Layout ,不知道怎么翻译,就天下无双吧。)

查看这里

11-从PSD到HTML,手把手完成WEB设计-从Photoshop到完整HTML,全过程手把手教会你。

例子查看这里 | 下载

12- 5个XHTML/CSS技巧 – 5个CSS技巧帮助你完成从基于表格的布局到基于CSS的布局。

13-设计一个基于CSS的模板 – 这是一个教你创建基于CSS的模板页的基础教程。这个教程由下面几个部分构成:第一部分覆盖了在Photoshop CS*中的创建导航条按钮,第二部分:创建背景接下来的清单是标题和页面布局,最后的部分在XHTML和CSS中实现。

下载

14-使用CSS布局跳出常规布局– 如果你理解了基于表格布局的工作方式,你能通过合并或拆分表格创建你随心所欲的布局。就这个目标(同时支持灵活性和可维护性),CSS能够提供比基于表格更多地东西。Jina Bolton的教程解释如何达到这个目标。

15-高级CSS教程:手把手– 这个教程的终极目标创建一个CSS布局,这个CSS布局精确地重组了原有使用table的WebReference.com的布局。

16-了解CSS布局的6个关键要素-本文讲述了6件基于CSS布局需要了解的事情:盒模型(Box Model),浮动栏(Floated Columns) (译者注:float是WEB布局最重要的一个属性了)。使用Em来设置尺寸(Sizing Using Ems),图片替换(Image Replacement),浮动导航和Sprintes。

17-你会犯这些常见的博客布局错误吗?-讨论4个博客布局中常见而且易修复的错误。

18-页面布局-CSS页面布局中的浮动元素和定位元素实践指导。

你可以查看这些例子:Absolute Position within a relative box two floated boxes using a border to provide the background for a column

19-Site in an Hour– 使用复杂CCS布局完成简单的工作。

关于布局的最佳资源

下面的大多数这些资源不需要许可就能直接使用,然而,其中的一些需要先发邮件确认一下是否可以使用这些资源。因此,在使用之前最好先检查资源的版权信息。

20-简单CSS页面布局– 这里有一套2栏和3栏的CSS布局。

你可以通过这里查看这些样例 Liquid three column layout, Left aligned, set width and Liquid insanity.

21-完美的三栏变宽布局(百分比定宽度)The Perfect 3 Column Liquid Layout (Percentage widths)– 没有CSS hack(译者注:不知道怎么翻译,点击这里查看解释). 良好地收索引擎优化.无图. 无Javascript. 跨浏览器 和IPHONE设备兼容

你可以通过这里查看样例 Liquid three column layout, Left aligned, set widthLiquid insanity. (译者注:这里的链接和上面重复了,哎,原文的错误吧)

22-CSS模板和样例

你可以通过这里查看这些样例 3 columns fixed centered, fixed Box totallycentered and 3 columns, alldynamic

23-IM 布局– IM 布局是一种简单地的CSS布局系统,IM布局提供了全A级的浏览器的支持。

你可以通过这里查看这些样例: The Holy Grail 3 Column Layout, The Classic Blog Layout The Multi Column Layout.

24-CSSplay – CSS布局列表

你可以通过这里查看这些样例:Cross browser FIXED, Three columns and CSS Frame – The Holy Grill.

25-Layoutgala – 基于同样的的标记l得到最大数量的不同的布局方式。没有CCS hack,没有CSS workaround ,良好的浏览器兼容性。40种不同布局。

你可以通过这里查看这些样例:Three fixed Columns, Three percentage columns and Liquid, three columns, hybrid widths (吐槽:没有等高,不好看).

26-Glish– 许多有用的跨浏览器布局技术

你可以通过这里查看这些样例: 3 columns, the holy grail, 2 columns, ALA style and 3 columns, all fluid

27-Thenoodleincident– CSS 从简单的单盒到3盒并增加一个顶部条,所有都是变宽。

28-The Layout Reservoir– 很多有用的CSS布局技术

你可以通过这里查看这些样例: 2 columns – left menu, 3 columns – flanking menus Auto-width Margins .

29-The only CSS layout you need– 在这篇文章中将会为你展现10个基于同一的HTML的不同的的布局。

你可以通过这里查看这些样例: Three column CSS layout – left and right menu, Two column CSS layout – top and left menuThree column CSS fluid layout: 100% width

30-另一个多栏布局-是一个创建当代流行的变宽的浮动布局的XHTML/CSS框架。这是一个多功能实用的布局。

点击这里下载.

31-Liquid Designs– 使用XHTML和CSS的变宽设计库。

最佳实践

如果你需要寻找一些布局灵感,你可以从下面的网站链接中找到。这些站点演示了CSS布局如何应用于不同类型的网站。查看这些网站是如何分成2栏或3栏,或混合宽栏和窄栏布局。

32-Helldesign

33-Silverbackapp

34-OS communications informatiques

35-Rockatee

36-Darrenhoyt

37-Makebetterwebsites

38-Elitetheme

39-Studio7designs

40-Brightcreative

(全文完)

为何 IntelliJ IDEA 比 Eclipse 更好

圣战

有一些没有唯一正确答案的“永恒”的问题,例如哪个更好:是Windows还是Linux,Java还是C#;谁更强壮:Chuck Norris还是Van Damme。

其中的一个圣战便是Java IDE的选择:

有许多争论的话题是讨论它们哪个有更多的插件、快捷键等等。它们之间有太多的不同而很难决定什么才是最重要的。

因此,人们都表示两个IDE在功能性上都差不多,选择某一个则是个人喜好问题了。

我认为这不仅仅是个人喜好的问题,有客观的原因能表明:Intellij IDEA 肯定比Eclipse更好.

我不会去大量比较两者细微不同,例如插件与快捷键之类的。因为有一系列的blog是关于这些的,例如:[part 1] [part 2] [part 3]。我将会展示IDEA与Eclipse的一个最大的不同之处。通常IDEA和Eclipse的fans都不曾了解。前者已经习惯性的使用着它而不曾想象IDE缺少它会怎样,后者则没有使用它的习惯且难以想象有了它IDE能做得这么好。Eclipse的用户在把玩IDEA的时候通常都不会意识到这个不同点,因为他们习惯了以Eclipse模式工作。

为何我如此确信?

在开始说明之前,让我解释一下我是谁和为什么我的观点值得一听。

我使用Eclipse已经5年之久,我很了解它,我为它编写插件并真心地喜爱它。然后,我换了一个公司工作,并被强行转移到IDEA上开发,在这次“分手”后,我才最终意识到为什么IDEA更加敏锐。而如今我我已经使用IDEA一些年了,所以我能比较它们两者,因为我了解它们。

IDEA与Eclipse主要的不同

IDEA之所以更加敏锐的原因是:IDEA懂得上下文。这也是JetBrains员工命名IDEA为intelligent的原因。它真正的含义又是什么呢?IDEA检索你的整个项目,分析项目所有的内容,甚至构建语法树。幸亏有它,在任何时候无论你将鼠标放置在哪里,IDEA都知道你在哪里并知道在那能干什么。

仍旧不了然?别担心,在列举了以下几个例子后,一切就清楚了。

这种对上下文的理解表现在很多很多方式上,以下只是其中的一部分。

1、调试

通常在调试过程中,我们想要求一些表达式的值,在Eclipse中你需要选定这个表达式,选定整个表达式非常重要,否则你就没法求出它的值。然后,你可以使用Ctrl+Shift+I看到这个表达式的值。

使用IDEA你不需要选择任何东西,你只需要把光标移到你的表达式中然后按下Alt+F8。IDEA会很好的理解这个你可能需要的表达式,然后显示一个对话窗口,其中有一些它给出的建议参数变量。你也可以编辑并在对话框中立即将得到这个表达式的值。相当的方便!试过这个特性后,你就不会再想在Eclipse中调试了。

基本上在两个IDE上都能让你做同样的事,但是使用IDEA会更加简单和快速。对此我认真的表示,这个差异太大了:就像天堂跟人间一样。在一个小小的IDEA对话窗口中就提供了自动完成,语法高亮以及你需要的一切。

2、自动完成

自动完成使得IDE比notepad更加优秀,在这个领域能感知上下文的IDEA有了质的飞跃。例如,我们开始如下一行代码:

assertElement(By.id("errorMessage"), vi

现在我们想要查找以vi开头的选项有哪些。

IDEA怎么做的呢?无需等待任何的按键,它马上就能理解assertElement需要一个Conditaion类的示例作为第二个参数,而在Condition类中有一个静态变量名叫visible。IDEA会直接建议这个唯一的有效选项。

然而,Eclipse会怎么做呢?唉,它不能理解上下文,它不知道光标所在处就是assertElement方法的第二个参数。因此当你按下“神圣”的Ctrl+Space时,Eclipse只会简单的显示全局中以vi字母开头的一切。

在一个美丽的弹出框中我看到了很多漂亮的高亮的格式规范的无用的信息.:(

3、重构

专业的程序员能够高效的使用IDE提供的重构功能。所有的现代IDE都提供许多印象深刻的重构功能。但是还是那句,IDEA的重构功能也很聪明智能。它们能读懂你需要什么,然后针对不同的情况提供给你最适合的解决方案。

例如,假设我们有一个assertErrorMessageIsHidden方法:

public void assertErrorMessageIsHidden() {  assertElement(By.id("errorMessage"), Condition.visible);}

我们以字符串“errorMessage”作为该方法的一个参数。

让我们先从IDEA开始,将光标放在任何字符串“errorMessage”上,按Ctrl+Alt+P(代表“parameter”),IDEA将会建议我们可能可以在哪些表达中用次字符串为参数。

当“errorMessage”表达式被选定以后,IDEA将会建议一些可能的能用做该参数的变量名称。

每月惊奇

你会经常地惊讶于IDEA的聪敏表现,比如它为你提示一些选项的名称。它考虑到方法名称,变量类型甚至是变量值,以及其他的此类变量的名称,与之前你给定的此变量的名称,除了忽略了你的生肖。相信我,你会想说“Wow,IDEA也能这样?”,我想说至少每个月一次吧。

现在然我们看看Eclipse是怎么样给出建议的。

别忘了,选择整个"errorMessage"表达式哦。选择一个“推荐参数”的重构功能(通过菜单,没有什么快捷键可供使用),获得差不多相同的结果,然而,Eclipse不会给出变量名提示选项,但幸亏不会。

结论

如果我们选择Java IDE,那么Intellij IDEA肯定要比Eclipse好的。这不仅仅是个人喜好问题。从客观上看,IDEA更好。它是的你能够快捷地编写和修改代码。它给出恰当的名称提示,查找适合的方法。它不需要你特别地选择表达式便会猜测到你想要做的以及你想如何对它命名。IDEA预示着并给你提示。

P.S. Remarks

我认为IDEA在作为Java IDE时确实比Eclipse更好。如果你考虑他们其他方面的能力例如用于其他例如C++、Python、Scala的IDE上,或者是作为构建桌面的应用的平台,Eclipse很有可能拔得头筹。

事实上这是依赖于对他们的定义的,Eclipse已将自己定位为一个抽象平台,用来使用插件构建任何工具,而IDEA则定位为一个“智能的Java IDE”,而且它正如此。

作为纪念我就尝试着列绝一些Eclipse可能比IDEA更好的地方:

  • Eclipse看上去更棒,所有大题小做的SWT以及本地控件都用的很值。Eclipse看上去很稳定的深思熟虑过的程序,它有着漂亮的字体以及图标。然而当第一眼看到IDEA是,它像是作噱头的玩具一样,有着不完全的图标以及笨拙的Swing界面。
  • Eclipse拥有更强的项目结构支持。在IDEA中,你的项目是有模块组成。在Eclipse中你拥有一个由工程组成的工作区,每个工程都能被单独打开或关闭,分组或隐藏。但是你真的需要么?
  • 为Eclipse编写插件似乎很简单
  • IDEA比Eclipse使用更多的系统资源。这其实也说得通–因为IDEA了解得更多
  • 最后,Eclipse是免费的,然而IDEA Community版本已经够我用了

最后的建议

如果你需要漂亮的图标,用来创建桌面程序的平台,C++IDE或者你用一个低配的笔记本工作,那么Eclipse可能对你来说是更好的选择。但是如果你是一个正儿八经的Java开发者,你需要更快更方便的工具帮你集中注意于解决问题而不是让你分心,IDEA则正是你所需要的。

 

via:dzone.com ,OSChina原创编译

你的代码可以是优雅的,但是还有更重要的

在开发过程中,我的口头禅是: Your code may be elegant, by mine works。我为此而常常受到质疑,也有人反驳我“你不会使用最优方法!”“你在逃避测试!” 为了避免一次又一次地重复解释,我决定阐述下我的观点,仁者见仁,智者见智。

首先,我认为“项目可能会延期,但是代码会更好或更容易维护或更简洁”这句话是有问题的。项目延期,就是未完成,不应该用代码质量会更高作为借口。如果客户要在圣诞节进行推广活动,但你在12月29号才完成项目,即使提供了史上最好的产品,也是毫无价值的。

其次,我们来谈谈“最优方法”这个问题,“最优”是否意味着要写出更易于维护的代码需要更长的时间呢?其实除了大家都知道的《101个最优方 法》以外,“最优”的标准是各种各样的。无论你对其进行怎样的定义,“最优方法”对所有程序员来说,应该是一种自然的编程标准。举个最简单的例子,经验丰 富的程序员会自然地将变量命名为:$a、$b、 $c等,也能正确地缩进代码行。说得再深入一点,有经验的开发者知道在什么时候、如何提高效率以使得项目能如期完成。虽然 “最优方法”的标准有很多,但这些标准不会令你因此而延长项目时间。这引出我将谈到的下一点——Over-engineering(过度设计,指设计出来 的系统比恰到好处要复杂臃肿的多,过度的封装、一堆继承、接口和无用的方法,以及超复杂的 xml 配置文件)。

像任何经验丰富的程序员一样,我了解那种想为每个项目搭建最好、最灵活、最耐用的系统的心态。但我也了解每个项目都有的商业限制:时间和资金。 大多数项目都有明确的截止日期和项目预算,开发者要有意识地去控制项目规模以按时达到目标。你没有任何理由花一周时间,来为一个 20 行的 table 表上的数据库查询设置“恰当的”缓存层。多了解实用案例,如果只是为了实现一个页面访客计数器的功能而构建支持多种同时响应请求的 XHR 框架,是不现实的。要有眼界,这是我最强调的一点,最好的程序员不是精通如何构建最棒的系统的人,而是了解系统不需要的是哪些功能的人。

另外,在软件开发领域,上市时间是商业驱动力,在 web 应用开发领域,由于其动态性,这点更为明显。当时间成为关键,“最优方法”就是最简单的解决方案。

最后,我们来讨论一下技术债务(指为了匆忙实现一个功能,破坏了现有的程序库,在实现的过程中污染了代码库的设计)。如果在开发过程中,你在某 个地方偷工减料了,那么就会产生无法解决的长期存在的技术债务,而且在之后的开发中,任何一个决定,都会受该债务的影响。事实上,在接手商业项目时,明白 何时、如何对代码进行简化的能力是很关键的,这也是区分老手和菜鸟的标准。解决技术债务的办法有很多,但应尽量做到不产生技术债务。同样地,过度设计也不 可避免地会产生技术债务。

通常人们在谈到技术债务的危险时,并没有包含商业影响。但其实技术债务与实际投资回报率是相对的,因为在许多情况下,早日上市更具成本效益。也 有种情况是技术债务与收益同时存在,那么你可以慢慢偿还债务,但这会延长你的项目时间,很可能当你解决完技术债务时,你也失去了市场机会。

作为软件开发者,我们常常认为自己的工作就是开发软件,但其实这只是一种手段,我们的目的是令开发商达到他们的商业目标,你的代码也许很优雅很简洁,但如果不能达到目的,就丝毫没有意义。

英文原文:Your Code May Be Elegant

分享10个 jQuery 的动态插件

在这篇文章中,我们将介绍一些我们收集的不错的动态插件,帮助你添加高级的特效和动态网页效果,希望大家喜欢!

1. jmpress.js

一个jQuery的impress.js实现,基于CSS3变化和过度效果。只支持现代浏览器,所以只支持Chrome,Safari和Firefox10支持,当然以后肯定支持所有的浏览器。

分享10个jQuery的动态插件

2. Stellar.js

一个jQuery的插件提供给滚动元素来生成视差滚动的特效

分享10个jQuery的动态插件

3. jQuery Multiple File Upload Plugin

一个jQuery的插件帮助用户很容易的选择很多文件上传。并且提供很多基本功能不递交表单执行帮助错误监控。

分享10个jQuery的动态插件

4. jQuery Snow Falling Plugin

创建一个下雪的效果,通过拷贝最初的雪花,通过不同间隔和添加随机属性来实现。小于1kb大小。

分享10个jQuery的动态插件

5. jQuery Star Rating Plugin

一个用来创建星级评定的jQuery插件

分享10个jQuery的动态插件

6. Poshy Tip jQuery Plugin

一个工具提示插件帮助你快速创建样式化的工具提示。

分享10个jQuery的动态插件

7. FeedEk : Display RSS/ATOM Feeds

一个jQuery的解析和显示RSS和ATom种子的插件。可以使用很少代码简单快速的得到内容。

分享10个jQuery的动态插件

8. Minimit Gallery Plugin

一个高度自定义的类库插件,帮助你实现画廊,幻灯,轮播等效果,非常小,小于1kb。

分享10个jQuery的动态插件

9. jQuery Collapse : Expanding and Collapsing Content

这个插件提供cookie保存,ARIA兼容并且设计灵活,模块化可以使用在不同环境下。

分享10个jQuery的动态插件

10. Convert Simple JavaScript to jQuery Plugin

帮助你了解如何将一个js转化成jquery插件

分享10个jQuery的动态插件

来源:分享10个jQuery的动态插件

黑客宣称3月31日将使全球互联网瘫痪

著名黑客组织匿名者(Anonymous)近日对外宣称,将于3月31日攻击13个DNS根服务器,已达到让全球互联网瘫痪的目的,此次攻击作为其发起的“Operation Global Blackout”行动的一部分,是为了抗议“SOPA(美国《网络反盗版法案》)和为了一己私利而置世界于饥饿之中的华尔街银行家与资本家们”。

SOPA/PIPA法案希望进一步强化保护知识产权的力度,当版权方发现侵犯版权内容时,可以要求网站(包括搜索引擎、支付平台、广告平台等)屏蔽所 有内容,甚至可以要求互联网接入服务商(ISP)停止向网站提供服务,随后再进行司法程序。并且它规定如果没有“事先采取防盗版的措施”,也就是事先自我 审查,就不能免责。

同样,该法案的施行也会拥有全球性的影响,打个比方,华纳兄弟电影公司发现了在意大利某网站上有《黑暗骑士》的种子下载,他们就可以要求谷歌迅速在其 搜索引擎中移除这个网站的所有内容,PayPal也会立即停止接受对该网站的一切支付行为,也就意味着此网站离关站不远了。

Anonymous已经列出了13个DNS根服务器的IP地址,并表示通过切断互联网,人们就无法进行域名查询,从而使得HTTP互联网服务瘫痪,因 为“HTTP毕竟是整个网络功能中使用最为广泛的形式”,如此一来,任何人输入“http://www.google.com”或任何其他的URL,都将 会得到一个错误页面。Anonymous表示他们并非真的要切断互联网,只是暂时采用一种最极端的方式来表示他们的抗议。

虽然很多人表示不相信Anonymous能够做到让根服务器下线,指出他们根本就不清楚DNS根服务器的工作原理,但该组织表示已经编制出了一个强大 的DDoS攻击工具,让人们了解虽然说互联网不能轻易被攻破,但他们完全有信心摧毁某些站点来引起大家对互联网安全的足够重视。

据悉,“Anonymous”是一个组织松散的全球黑客组织,该组织最初由于对科学教网站的攻击而受到关注。在维基解密的泄密事件中,该组织由于支持 维基解密,攻击维基解密的“敌人”而成为关注焦点。2012年2月1日,因欧盟支持反仿冒贸易协定(ACTA),国际黑客组织Anonymous开始入侵 欧盟多家网站,其中包括欧洲议会 (European Parliament)的网站。近日继戏弄FBI(美国联邦调查局)后,该组织又已经攻破CIA(美国中央情报局)网站,Anonymous发布信息称, 已窃取阿拉巴马州警方和政府服务器数据,攻击墨西哥参议院和内务部网站,并已暴露墨西哥矿业商会的邮件地址,目的是抗议阿拉巴马州去年制定的House Bill 56移民法。