竹磬网-邵珠庆の日记 生命只有一次,你可以用它来做些更多伟大的事情–Make the world a little better and easier


195月/150

LESS 助您事半功倍

发布在 邵珠庆

去年就初次接触了LESS,并用他制作了一个Less.org的首页页面,但由于CSS的固有模式,没有让自己喜欢上他。由于前段时间学习bootstrap from twitter再次让我接触了这个Less(我在《CSS——Bootstrap From Twitter》有简单的提到过Less),又发现了他的强大与方便,于是横下心来又重新开始学习Less。这次的学习中让我发现了他的更强大,从而也让自己更喜欢上了Less。当然任何东西都有好与坏,我还是那句,他并不影响我对知识的渴望,你要是也喜欢,我们就一起往下看吧。

Less是一种动态的样式语言。Less扩展了CSS的动态行为,比如说,设置变量(Variables)、混合书写模式(mixins)、操作(operations)和功能(functions)等等,最棒的是,Less使用了现有的CSS语法,也就是说,你可以直接把你现成的样式文件“style.css”直接改成“style.less”,他也能正常工作。如:

				<link rel="stylesheet/less" href="less/style.less" />
			

Less现在可以在客户端(如:IE+,Webkit,Firefox)和服务器(如node.js)上运行。前面也说过Less是CSS的一种扩展,他不但向后兼容,而且在现有的CSS语法基础上增加许多额外的功能。如果你具有一定的CSS语法基础,学习Less将是一件轻而易举的事情,那么我们现在就开始吧,首先一起看一段用Less语法的CSS代码:

				.box-shadow (@x: 0, @y: 0, @blur: 1px, @alpha) {
				  @val: @x @y @blur rgba(0, 0, 0, @alpha);
				  box-shadow:         @val;
				  -webkit-box-shadow: @val;
				  -moz-box-shadow:    @val;
				}
				.box { @base: #f938ab;
				  color:        saturate(@base, 5%);
				  border-color: lighten(@base, 30%);
				  div { .box-shadow(0, 0, 5px, 0.4) }
				}
			

看到这里或许你现在并不知道这些代码表示的是什么意思?不过不要紧张,我们会一步一步一介绍这些语法表示的是什么意思。别的先不说,我们一起动起来吧。

如何使用Less

要成功的使用Less,需要一个脚本的支持,这个脚本我们把他叫做less.js。大家可以在点击这里下载这个less脚本,并放到你的项目中。下载好以后我们需要把less.js引用到文件中,引用方式很简单:

				<link rel="stylesheet/less" type="text/css" href="less/styles.less">
				<script src="js/less.js" type="text/javascript"></script>				
			

Less包含些什么?

Less具体有哪些东东呢?其实这个问题我在前面早就有说过,Less要CSS语法的基础上进行了扩展,主要包含:Variables,Mixins、Nested Rules、Functions & Operations、Client-side usage、Server-side usage等等,下面我们就针对这几个部分,更好帮助我们了解和深入的学习Less。

1、变量——Variables

Less中的变量充许你在样式中的某个地方对常用的值进行定义,然后应用到样式中,这样只要改变你定义的变量参数值就可以达到改变全局的效果,我们先来看一段代码:

Less Code

				/*======== 定义变量===========*/
				@color: #4d926f;
				/*======== 应用到元素中 ========*/
				#header {
					color: @color;
				}
				h2 {
					color: @color;
				}
			

Compiled Css code:

				/*======= Less 编译成 css ======*/
				#header {
					color: #4d926f;
				}
				h2 {
					color: #4d926f;
				}
			

Less中的变量还具有计算功能,如:

Less Code:

				@nice-blue: #5b83ad;
				@light-blue: @nice-blue + #111;
				#header {
					color: @light-blue;
				}
			

Compiled Css Code:

				#header {color: #6c94be;}
			

我们还可以定义一个变量名为变量,如

Less Code:

				@color: #253636;
				@highlight: "color";
				#header {color: @@highlight;}
			

Compiled Css Code:

				#header {color: #253636;}
			

注:在Less中的变量实际上就是一个“常量”,因为它们只能被定义一次。

Less Code:

				@color: #253636;
				@highlight: "color";
				@color: #ff3636;
				#header {color: @@highlight;}
			

Compiled Css Code:

				#header {color: #ff3636;}
			

上面代码很明显说明了后的@color覆盖了前面的@color。

2、混入——Mixins

混入其实就是一种嵌套,它充许你将一个类嵌入到另一个类中,而被嵌入的这个类也称为是一个变量。换句话说,你可以用一个类定义CSS,然后把整个为当作一个变量来使用,嵌入到另一人类中当作他的属性;另外混入也像一个带有参数的functions,如下在的例子:

Less Code:

				/*========= 定义一个类 ===========*/
				.roundedCorners(@radius:5px) {
					-moz-border-radius: @radius;
					-webkit-border-radius: @radius;
					border-radius: @radius;
				}
				/*========== 定义的类应用到另个一个类中 ===========*/
				#header {
					.roundedCorners;
				}
				#footer {
					.roundedCorners(10px);
				}
			

Compiled Css Code:

				#header {
					-moz-border-radius:5px;
					-webkit-border-radius:5px;
					border-radius:5px;
				}
				#footer {
					-moz-border-radius:10px;
					-webkit-border-radius:10px;
					border-radius:10px;
				}
			

注:这样任何CSS的类或ID下的样式都可以当作变量,使用混入模式用来当作另一个元素的属性值。

混入(Mixin)有一个名词叫“混入参数(Parametric Mixins)”,上面也说过。Less具有一个特殊类型的规则集,那就是一个类可以当作另一个元素的属生值,并且还可以接受其自己的参数,我们来看一个典型的实例:

Less Code:

				/*========== 定义一个规则,并且不设置默认参数值 ============*/
				.borderRadius(@radius){
					-moz-border-radius: @radius;
					-webkit-border-radius: @radius;
					border-radius: @radius;
				}
				/*============ 应用到元素中 ============*/
				#header {
					.borderRadius(10px); /*把10px传给变量@radius*/
				}
				.btn {
					.borderRadius(3px);/*把3px传给变量@radius*/
				}
			

Compiled Css Code:

				#header {
					-moz-border-radius: 10px;
					-webkit-border-radius: 10px;
					border-radius: 10px;
				}
				
				.btn {
					-moz-border-radius: 3px;
					-webkit-border-radius: 3px;
					border-radius: 3px;
				}
			

我们还可以给Mixins的参数定义一人默认值,如

Less Code:

				.borderRadius(@radius:5px){
					-moz-border-radius: @radius;
					-webkit-border-radius: @radius;
					border-radius: @radius;
				}
				
				.btn {
					.borderRadius;
				}
			

Compiled Css Code:

				.btn {
					-moz-border-radius: 5px;
					-webkit-border-radius: 5px;
					border-radius: 5px;
				}
			

还有一种方法就是给Mixins不定我任何参数,特别是在你想隐藏输出的CSS规则,但又想在别的规则中包含他的属性,使用这种不带参数的Mixins将非常有用的,我们来看一段代码:

Less Code:

				.wrap(){
					text-wrap: wrap;
					white-space: pre-wrap;
					white-space: -moz-pre-wrap;
					word-wrap: break-word;
				}
				pre {
					.wrap;
				}
			

Compiled Css Code:

				pre {
					text-wrap: wrap;
					white-space: pre-wrap;
					white-space: -moz-pre-wrap;
					word-wrap: break-word;
				}
			

Mixins还有一个重要的变量:@arguments。@arguments在Mixins中具是一个很特别的参数,当Mixins引用这个参数时,他将表示所有的变量,当你不想处理个别的参数时,这个将很有用,我们来看一个阴影的实例:

Less Code:

				.boxShadow(@x:0,@y:0,@blur:1px,@color:#000){
					-moz-box-shadow: @arguments;
					-webkit-box-shadow: @arguments;
					box-shadow: @arguments;
				}
				
				#header {
					.boxShadow(2px,2px,3px,#f36);
				}
			

Compiled Css Code:

				#header {
					-moz-box-shadow: 2px 2px 3px #FF36;
					-webkit-box-shadow: 2px 2px 3px #FF36;
					box-shadow: 2px 2px 3px #FF36;
				}
			

3、嵌套规则——Nested Rules

嵌套规则主要是针对一多层元素的样式规则写法,以前我们在多层元素中写样式,要么从头选下来,要么另外给这个元素加上类名或id名,但在Less中我们不需要这样操作了,我们只要使用他的嵌套规则就可以完成,我们来看一个简单的实例:

Html Markup:

				<div id="header">
					<h1><a href="">W3cplus</a></h1>
					<p>记述前端那些事——引领Web前沿</p>
				</div>
			

Less Code:

				#header {
					display: inline;
					float: left;
					h1 {
						font-size: 26px;
						font-weight: bold;
						a {
							text-decoration: none;
							color: #f36;
							&:hover {
								text-decoration: underline;
								color: #63f;
							}
						}
					}
					p {
						font-size: 12px;
					}
				}
			

Compiled Css Code:

				#header {
				    display: inline;
				    float: left;
				}
				#header h1 {
				    font-size: 26px;
				    font-weight: bold;
				}
				#header h1 a {
				    color: #FF3366;
				    text-decoration: none;
				}
				#header h1 a:hover {
				    color: #6633FF;
				    text-decoration: underline;
				}
				#header p {
				    font-size: 12px;
				}				
			

使用Less的嵌套规则让你的CSS代码更简洁,因为他的写法就是模仿HTML的DOM结构来写的。

从上在的实例代码中,我都很清楚的了解到,嵌套规则可以让我们写样式时能像DOM树形那样有结构的去写代码,从而减了选择器的层级关系,更主要的是这样使用我们的代码更简洁,更具有阅读生,这种嵌套规则对我们操作伪元素更为方便和重要,如:hover,:link,:focus等,他的写法是:

Less Code:

				a {
					color: red;
					text-decoration: none;
					&:hover {
						color: blue;
						text-decoration: underline;
					}
				}
			

Compiled Css Code:

				a {
					color: red;
					text-decoration: none;
				}
				a:hover {
					color: blue;
					text-decoration: underline;
				}
			

大家注意了,这里的&很重要,在Less中嵌套书写中有没有&区别是完全不一样的效果,有&时解析的是同一个元素或此元素的伪类,没有&解析是后代元素,我们一起来看一段代码:

Less Code:

				#header {
					&.fl{
						float: left;
					}
					.mln {
						margin-left: 0;
					}
				}
			

Compiled Css Code:

				#header.fl{float: left;}
				#header .mln {margin-left: 0;}
			

4、Functions & Operations

这两个功能很有意思的。在我们平时的样式中,有很多元素的属性都具有一定的比例或倍数。那么这两个刚好可以帮我们实现这方面的功能,首先来看Operations(直译“动作”)他可以让你对元素的属性值,颜色进行四则运算:加、减、乘、除。而Function就像javascript中的function一样可以让你进行你想要的值的操作。下面我们先来看一个简单的实例:

Less Code:

				@the-border: 1px;
				@base-color: #111;
				@red: #842210;
				#header {
					color: @base-color *3;
					border: 1px solid desaturate(@red,100%);
					border-width: @the-border @the-border*2 @the-border*3 @the-border;				
					border-color:desaturate(@red,100%) @red lighten(@red, 10%)	darken(@red, 30%);	
				}
			

Compiled Css Code:

				#header {
					color: #333;
					border: 1px solid #4a4a4a;
					border-width: 1px 2px 3px 1px;
					border-color: #4A4A4A #842210 #B12E16 #000000;
				}
			

这里提出一点,Less中的Operations主要是针对任何数字、颜色、变量的操作,可以对其是行加、减、、乘、除或者更复杂的综合运算;而Functions主要是针对Color funtions,Less提供了多种变换颜色的功能,下面多们来俱体看一下这两个功能的使用。

先来看Operation的使用

Less Code:

				@base: 5%;
				@filler: @base*2;
				@other: @base + @filler;
				#header {
					color: #888 / 4;
					height: 100% / 2 + @filler; 
				}
			

Compiled Css Code:

				#header {
				    color: #222222;
				    height: 60%;
				}
			

上面是一些简单的四则运算,他们都是在同一单位下进行操作,现在我们一起来看一个不同单位的操作

Less Code:

				@var: 1px + 5;
				#header {
					border: @var solid red;
				}
			

Compiled Css Code:

				#header {
				    border: 6px solid red;
				}
			

上面的代码直接反应出了,“@var: 1px + 5”,Less最终解析的值是“6px”。在Less中我们同样可以像做小学算术一样,使用括号“()”来改变其运算的先后顺序,如:

Less Code:

				@var: 20px;
				#header {
					width: @var + 5 * 2;
					height: (@var + 5 ) * 2;
				}
			

Compiled Css Code:

				#header {
				    height: 50px;
				    width: 30px;
				}
			

从结果中我们很明显的得出他们的区别

					@var: 20px;
					#header {
						width: @var + 5 * 2;/* 先计算了5 * 2 = 10 然后在计算了 @var + 10 = 30px,其实就是"@var+(5*2)"*/
						height: (@var + 5 ) * 2;/*先计算了(@var + 5) = 25px,然后在计算了25*2=50px,因为括号更具有优先权,小学数学题*/
					}
				

Less中还提供了一个Color Functions,他具有多种变换颜色的功能,先把颜色转换成HSL色,然后在此基础上进行操作,具体包括以下几种:

					lighten(@color, 10%);     // return a color which is 10% *lighter* than @color
					darken(@color, 10%);      // return a color which is 10% *darker* than @color

					saturate(@color, 10%);    // return a color 10% *more* saturated than @color
					desaturate(@color, 10%);  // return a color 10% *less* saturated than @color

					fadein(@color, 10%);      // return a color 10% *less* transparent than @color
					fadeout(@color, 10%);     // return a color 10% *more* transparent than @color

					spin(@color, 10);         // return a color with a 10 degree larger in hue than @color
					spin(@color, -10);        // return a color with a 10 degree smaller hue than @color					
				

使用这种functions方法很简单:

Less Code:

					@base: #f04615;
					#header {
						color: @base;
						background-color: fadein(@base, 10%);
						h1 {
							color: lighten(@base,20%);
							background-color: lighten(fadeout(@base,20%),5%);
							a {
								color: darken(@base,50%);
								background-color: spin(@base,10);
								&:hover {
									color: saturate(@base,30%);
									background-color: fadein(spin(@base,-5),20%);
								}
							}
						}
						p {
							color: desaturate(@base,60%);
						}
					}					
				

Compiled Css Code:

					#header {
					    background-color: #F04615;
					    color: #F04615;
					}
					#header h1 {
					    background-color: rgba(242, 89, 45, 0.8);
					    color: #F69275;
					}
					#header h1 a {
					    background-color: #F06B15;
					    color: #060200;
					}
					#header h1 a:hover {
					    background-color: #F03415;
					    color: #FF3E06;
					}
					#header p {
					    color: #A56F60;
					}
				

大家还可以通过这样的方式提取颜色值

					hue(@color);        // returns the `hue` channel of @color
					saturation(@color); // returns the `saturation` channel of @color
					lightness(@color);  // returns the 'lightness' channel of @color
				

下面我们来看一下如何取得他的颜色

Less Code:

					@color: #f36;
					#header {
						background-color: hsl(hue(@color),45%,90%);
					}
				

Compiled Css Code:

					#header {
					    background-color: #F1DAE0;
					}
				

5、命名空间——Namespaces

有时候你想把一些变量或mixins组织起来,并将他封装,想用的时候就把要关的一部分取出来,那么我们将在前面的mixins基础上将其功能扩展,比如说我们有一个这样的库:

					#bundle {
					  .button () {
					    display: block;
					    border: 1px solid black;
					    background-color: grey;
					    &:hover { background-color: white }
					  }
					  .tab { ... }
					  .citation { ... }
					}
				

现在在实际操作中,我们header中的a样式和.button一样,那么我们就可以这样操作:

					#header a {
					  color: orange;
					  #bundle > .button;
					}
				

换过一种思维来说,如果页面上有几个部分的样是完全一样的,或者只是部分不同,我们就可以这样来写,就如上面的代码,#bundle可是以web页面中已存在的元素,然后#header中的a元素和#bundle中的.button样式是一样的,那么我们就可以把#bundle中 .button的所有样式引用到#header中的a元素上。

6、变量范围——Scope

Less中的变量和别的程序语言一样,他的变量也有一个范围概念,这个概念就有点像局部变量和全局变量一样,只是在Less中采取的是就近原则,换句话说,元素先找本身有没有这个变量存在,如果本身存在,就取本身中的变量,如果本身不存在,就寻找父元素,依此类推,直到寻找到相对应的变量,我们来看个简单的实例:

					@var: red;

					#page {
					  @var: white;
					  #header {
					    color: @var; // white
					  }
					}

					#footer {
					  color: @var; // red  
					}
				

7、Less的注解——Comments

Less中的注解有两种方式,单行注解很像js中的,如:

					// Hi, I'm a silent comment, I won't show up in your CSS
					.class { color: white }
				

Less中的多行注解和使用css中的一样:

					/* Hello, I'm a 
					 CSS-style comment
				 */
					.class { color: black }
				

当然单行注解也可以使用css的方式注解,本人更强调使用css中的注解方式:

					/* Hello, I'm a CSS-style comment */
					.class { color: black }
				

8、客户端的使用——Client-side usage

客户端的使用其实好简单,我们最开始引用的就是客户端的使用方法,使用这种方法前提条件是需要一个less.js的脚本支持,大家可以先到点击下载less.js然后把他引用到页面的head中,如下所示:

					<script src="less.js" type="text/javascript"></script>					
				

其中src所指定的路径是你项目中的相对路径,当然你也可以把这个js放到你认为安全可用的服务器上,换成绝对路径也是可以的。接着我们就需要把less文件引进到项目中,这个引入的方式和css方式是一样的,只是有一点点不同,css中的是“rel="stylesheet"”而less的却是“rel="stylesheet/less"”,请看下面的代码:

					<link rel="stylesheet/less" type="text/css" href="styles.less">
				

特别强调一点,客户端使用Less,一定要注意,“Less样式文件一定要放在less脚本文件之前”

正确的引入方式:

					<link rel="stylesheet/less" type="text/css" href="styles.less">
					<script src="less.js" type="text/javascript"></script>	
				

错误的引入方式:

					<script src="less.js" type="text/javascript"></script>
					<link rel="stylesheet/less" type="text/css" href="styles.less">
				

上在我分了八个部分介绍了Less,其实Less不只包含这些东西,他还包括了“服务器端的使用”,“导入文件和变量”,“字符串插值”等,由于这几个部分相对而言较少使用,加上我自己没有完全理解,特意截下这几个部分不做陈述,如果大家相完全了解或者更清楚的学习他,大家可以可击到他的官网。(不过要翻墙才能正常阅读。)

最后要感谢Alexis Sellier(又名:cloudhead)给我们带来这么好的LESS。

1012月/120

如何成为一名优秀的web前端工程师

发布在 邵珠庆

 

程序设计之道无远弗届,御晨风而返。———— 杰佛瑞 · 詹姆士

我所遇到的前端程序员分两种:

第一种一直在问:如何学习前端?

第二种总说:前端很简单,就那么一点东西。

我从没有听到有人问:如何做一名优秀、甚至卓越的WEB前端工程师

如何成为一名优秀的web前端工程师

 

何为:前端工程师

前端工程师,也叫Web前端开发工程师。他是随着web发展,细分出来的行业。

Web前端开发技术主要包括三个要素:HTML、CSS和JavaScript!

它要求前端开发工程师不仅要掌握基本的Web前端开发技术,网站性能优化、SEO和服务器端的基础知识,而且要学会运用各种工具进行辅助开发以及理论层面的知识,包括代码的可维护性、组件的易用性、分层语义模板和浏览器分级支持等。

随着近两三年来RIA(Rich Internet Applications的缩写,中文含义为:丰富的因特网应用程序)的流行和普及带来的诸如:Flash/Flex,Silverlight、XML和服务器端语言(PHP、ASP.NET,JSP、Python)等语言,前端开发工程师也需要掌握。

前端开发的入门门槛其实很低,与服务器端语言先慢后快的学习曲线相比,前端开发的学习曲线是先快后慢。

HTML 甚至不是一门语言,他仅仅是简单的标记语言!

CSS 只是无类型的样式修饰语言。当然可以勉强算作弱类型语言。

Javascript 的基础部分相对来说不难,入手还算快。

 

也正因为如此,前端开发领域有很多自学成“才”的同行,但大多数人都停留在会用的阶段,因为后面的学习曲线越来越陡峭,每前进一步都很难。

Web前端技术有一些江湖气,知识点过于琐碎,技术价值观的博弈也难分伯仲,即全局的系统的知识结构并未成体系,这些因素也客观上影响了“正统“前端技术的沉淀!而且各种“奇技淫巧”被滥用,前端技术知识的传承也过于泛泛,新人难看清时局把握主次。因此,前端技术领域,为自己觅得一个靠谱的师兄,重要性要盖过项目、团队、公司、甚至薪水。

 

另一方面,正如前面所说,前端开发是个非常新的职业,对一些规范和最佳实践的研究都处于探索阶段。

总有新的灵感和技术不时闪现出来,例如CSS sprite、负边距布局、栅格布局等;

各种JavaScript框架层出不穷,为整个前端开发领域注入了巨大的活力;

浏览器大战也越来越白热化,跨浏览器兼容方案依然是五花八门。

为了满足“高可维护性”的需要,需要更深入、更系统地去掌握前端知识,这样才可能创建一个好的前端架构,保证代码的质量。

 

随着手持设备的迅猛发展,带动了 HTML5行业标准的快速发展。web领域的技术,大概有10年都没有大的更新了!

现在市场很需要优秀的、高级的前端工程师。

一方面是因为这是一个比较新的细分行业,而且前端程序员大都自学一部分,知识结构不系统;另一方面,大学里面没有这种课程,最最重要的是:北大青鸟这类培训机构也没有专门的前端工程师的培训课程!!

 

吴亮在《JavaScript 王者归来》第一张的序里面说:大多数程序员认为 Javascript 过于简陋,只适合一些网页上面花哨的表现,所以不愿花费精力去学习,或者以为不学习就能掌握。

实际上,一门语言是否脚本语言,往往是她的设计目标决定,简单与复杂并不是区分脚本语言和非脚本语言的标准。

事实上,在脚本语言里面,Javascript 属于相当复杂的一门语言,他的复杂度即使放在非脚本语言中来衡量,也是一门相当复杂的语言!

Javascript 的复杂度不逊色于 Perl 和 Python!

 

 

如何学习前端知识? 

我们生活在一个充满规则的宇宙里面。社会秩序按照规则运行,计算机语言几乎全部是规则的集合。计算机前辈们定义规则,规则约束我们,我们用规则控制数据。大部分时候,对数据的合理控制,来自于你对规则的掌握。

 

学习 HTML,CSS 应该先跟着书仔细、扎实的学一遍。然后就需要做大量的练习,做各种常规的、奇怪的、大量的布局练习来捆固、理解自己的知识。

而学习 Javascript 首先要知道这门语言可以做什么,不能做什么,擅长做什么,不擅长做什么!

如果你只想当一个普通的前端程序员,你只需要记住大部分 Javascript 函数,做一些练习就可以了。

如果你想当深入了解Javascript,你需要了解 Javascript 的原理,机制。需要知道他们的本源,需要深刻了解 Javascript 基于对象的本质。

还需要 深刻了解 浏览器宿主 下 的 Javascript 的行为、特性。

 

因为历史原因,Javascript一直不被重视,有点像被收养的一般! 所以他有很多缺点,各个宿主环境下的行为不统一、内存溢出问题、执行效率低下等问题。

作为一个优秀的前端工程师还需要深入了解、以及学会处理 Javascript 的这些缺陷。

 

那么一名优秀的、甚至卓越的 前端开发工程师的具备什么条件

首先,优秀的Web前端开发工程师要在知识体系上既要有广度和深度!做到这两点,其实很难。所以很多大公司即使出高薪也很难招聘到理想的前端开发工程师。技术非黑即白,只有对和错,而技巧则见仁见智。

在以前,会一点Photoshop和Dreamweaver的操作,就可以制作网页。

现在,只掌握这些已经远远不够了。无论是开发难度上,还是开发方式上,现在的网页制作都更接近传统的网站后台开发,所以现在不再叫网页制作,而是叫Web前端开发。

Web前端开发在产品开发环节中的作用变得越来越重要,而且需要专业的前端工程师才能做好。

Web前端开发是一项很特殊的工作,涵盖的知识面非常广,既有具体的技术,又有抽象的理念。简单地说,它的主要职能就是把网站的界面更好地呈现给用户。

 

其次,优秀的Web前端开发工程师应该具备快速学习能力。Web发展的很快,甚至可以说这些技术几乎每天都在变化!如果没有快速学习能力,就跟不上Web发展的步伐。前端工程师必须不断提升自己,不断学习新技术、新模式;仅仅依靠今天的知识无法适应未来。Web的明天与今天必将有天壤之别,而前端工程师的工作就是要搞清楚如何通过自己的Web应用程序来体现这种翻天覆地的变化。

说到这里,我想起了一个大师说过的一句话:对于新手来说,新技术就是新技术。

对于一个高手来说,新技术不过是就技术的延伸。

再者,优秀的前端工程师需要具备良好的沟通能力,因为前端工程师至少都要满足四类客户的需求。

1、产品经理。这些是负责策划应用程序的一群人。他们会想出很多新鲜的、奇怪的、甚至是不可是实现的应用。一般来说,产品经理都追求丰富的功能。

2、UI设计师。这些人负责应用程序的视觉设计和交互模拟。他们关心的是用户对什么敏感、交互的一贯性以及整体的好用性。一般来说,UI设计师于流畅靓丽、但并不容易实现的用户界面,而且他们经常不满前端工程师造成 1px 的误差。

3、项目经理。这些人负责实际地运行和维护应用程序。项目管理的主要关注点,无外乎正常运行时间、应用程序始终正常可用的时间、性能和截止日期。项目经理追求的目标往往是尽量保持事情的简单化,以及不在升级更新时引入新问题。

4、最终用户。指的是应用程序的主要消费者。尽管前端工程师不会经常与最终用户打交道,但他们的反馈意见至关重要。最终用户要求最多的就是对个人有用的功能,以及竞争性产品所具备的功能。

Yahoo 公司 ,YUI 的开发工程师 Nicholas C. Zakas 认为:

前端工程师是计算机科学职业领域中最复杂的一个工种。绝大多数传统的编程思想已经不适用了,为了在多种平台中使用,多种技术都借鉴了大量软科学的知识和理念。成为优秀前端工程师所要具备的专业技术,涉及到广阔而复杂的领域,这些领域又会因为你最终必须服务的各方的介入而变得更加复杂。专业技术可能会引领你进入成为前端工程师的大门,但只有运用该技术创造的应用程序以及你跟他人并肩协同的能力,才会真正让你变得优秀。

————————————

关于书籍:

HTML、CSS 类别书籍,都是大同小异,在当当网、卓越网搜索一下很多推荐。如果感觉学的差不多了,可以关注一下《CSS禅意花园》,这个很有影响力。Javascript 的书籍 推荐看老外写的,国内很多 Javascript 书籍的作者对 Javascript 语言了解的都不是很透彻。

这里推荐几本 Javascript 书籍:

初级读物:

JavaScript高级程序设计:一本非常完整的经典入门书籍,被誉为JavaScript圣经之一,详解的非常详细,最新版第三版已经发布了,建议购买。

《JavaScript王者归来》百度的一个Web开发项目经理写的,作为初学者准备的入门级教程也不错。

中级读物:

JavaScript权威指南:另外一本JavaScript圣经,讲解的也非常详细,属于中级读物,建议购买。

JavaScript语言精粹》:Yahoo大牛,JavaScript精神领袖Douglas Crockford的大作,虽然才100多页,但是字字珠玑啊!强烈建议阅读。

高性能JavaScript:《JavaScript高级程序设计》作者Nicholas C. Zakas的又一大作。

《Eloquent JavaScript》:这本书才200多页,非常短小,通过几个非常经典的例子(艾米丽姨妈的猫、悲惨的隐士、模拟生态圈、推箱子游戏等等)来介绍JavaScript方方面面的知识和应用方法。

高级读物:

JavaScript Patterns 》:书中介绍到了各种经典的模式,如构造函数、单例、工厂等等,值得学习。

《Pro.JavaScript.Design.Patterns》:Apress出版社讲解JavaScript设计模式的书,非常不错。

《Developing JavaScript Web Applications》:构建富应用的好书,针对MVC模式有较为深入的讲解,同时也对一些流程的库进行了讲解。

《Developing Large Web Applications | 开发大规模Web应用:不仅有JavaScript方面的介绍,还有CSS、HTML方面的介绍,但是介绍的内容却都非常不错,真正考虑到了一个大型的Web程序下,如何进行JavaScript架构设计,值得一读。

要做优秀的前端工程师,还需要继续努力:高性能网站建设指南》、《Yahoo工程师的网站性能优化的建议》、“YSLOW”性能优化建议、《网站重构》、《Web开发敏捷之道》、“ jQuery 库”、“前端框架”、“HTML5”、“CSS3”…… 这些都要深入研究!

 

万事开头难!如果你能到这个境界,剩下的路自己就可以走下去了。

人们常说:不想当裁缝的司机,不是个好厨师。

如果单纯只是学习前端编程语言、而不懂后端编程语言(PHP、ASP.NET,JSP、Python),也不能算作是优秀的前端工程师。

在成为一个优秀的前端工程师的道路上,充满了汗水和辛劳

2410月/121

8 个很有的免费 CSS 的 UI 工具箱

发布在 邵珠庆

1) UI CSS

ui.css 是一个用来创建简洁的 Web 用户界面的工具,下载的文件只包含一个 css 文件。

2) UI Kit 

3) CSS UI Kit

4) Lion UI Kit CSS

该工具箱基于 Xcode 组件(OS X Lion),提供了 OS X 应用的原型,主要用于 WebKit,但其他浏览器表现也不错。

5) Pure CSS

6) CSS UI Kit

7) Merto CSS UI

Metro UI CSS 可让你创建 Windows 8 风格的网站。

8) Designer CSS UI Kit

这个工具箱主要使用 HTML5 + CSS3 技术来实现,包含很多常用的 UI 组件,看起来很漂亮而且时髦。

via zoomzum

69月/1133

超过 30 个有用的 CSS、jQuery插件和代码技巧

发布在 邵珠庆

Grid Navigation Effects with jQuery

The 30 CSS Selectors you Must Memorize

Beautiful Slide Out Navigation: A CSS and jQuery Tutorial

Fixed Fade Out Menu: A CSS and jQuery Tutorial

Beautiful Slide Out Navigation Revised

Beautiful Background Image Navigation with jQuery

Twitter API and jQuery Showcase: Display your Followers or Friends

CSS and jQuery Tutorial: Fancy Apple-Style Icon Slide Out Navigation

A Fresh Bottom Slide Out Menu with jQuery

Vertical Sliding Accordion with jQuery

Animated Text and Icon Menu with jQuery

Circular Content Carousel with jQuery

Portfolio Image Navigation with jQuery

Expanding Fullscreen Grid Portfolio

Simple jQuery Fluid Thumbnail menu Bar

Slides, A Slideshow Plugin for jQuery

leanModal – a JQuery modal plugin that works with your CSS

Colorful Sliders With jQuery & CSS3

Contextual Slideout Tips With jQuery & CSS3

Awesome Cufonized Fly-out Menu with jQuery and CSS3

Thumbnails Navigation Gallery with jQuery

Creating a Fancy menu using CSS3 and jQuery

Feature Table Design

CSS & jQuery clickable map of Europe

Easy Display Switch with CSS and jQuery

FancyForm

Perfect Full Page Background Image

Greyscale Hover Effect w/ CSS & jQuery

Greyscale Hover Effect w/ CSS & jQuery

Codename Rainbows

Pure CSS3 bokeh effect with some jQuery help

Accessible, Custom Designed Checkbox and Radio Button Inputs Styled with CSS (and a dash of jQuery)

jQuery UI Selectmenu: An ARIA-Accessible Plugin for Styling a Custom HTML Select Element

jQuery & CSS Sprite Animation Explained In Under 5 Minutes

147月/114

20个不错的CSS页面布局相关资源推荐

发布在 邵珠庆

本篇文章搜集整理的是CSS页面布局的一个很长的列表。如果你时间很少,那么可以下载已经准备好的CSS页面布局,如果你想进行个性化的尝试,下面列出了一些站点你可以不需过多努力而达到效果。

漂亮、免费的CSS模板

这个站点包括免费的CSS模板,只需复制粘贴,你就会有个吸引人的网站。

Nice and Free CSS Templates

More Information on Nice and Free CSS Templates

CSS布局

包含224个网格和CSS布局。

CSS Layouts

More Information on CSS Layouts

CSS布局技巧: For Fun and Profit

该站点的所有的例子都精简到只有核心代码,你可以在每个页面找到源码,快速容易地理解CSS的内部工作。

CSS Layout Techniques: for Fun and Profit

More Information on CSS Layout Techniques: for Fun and Profit

使用CSS和jQuery创建类似YouTube查看效果

使用CSS和jQuery创建类似YouTube查看效果。

Create YouTube-like adaptable view using CSS and jQuery

More Information on Create YouTube-like adaptable view using CSS and jQuery

CSS页面布局模板

一些示例模板,作者使用CSS和IDV创建。

CSS Page Layout Templates

More Information on CSS Page Layout Templates

固定宽度的CSS布局

你可以找到42个不同的CSS布局。

Fixed Width CSS Layouts

More Information on Fixed Width CSS Layouts

网页布局

使用CSS布局很容易。如果你习惯于使用表格进行布局,可能会遇到困难。当然你可以视网页每个部分为单独的块儿。你可以独立的布置这些块儿或相对于另一个块儿。

Page Layout

More Information on Page Layout

固定宽带的CSS布局

这里有超过53个固定宽度的CSS布局,供下载。

fixed width css layouts

More Information on fixed width css layouts

布局盛宴layoutgala

40个布局。

Layout Gala

More Information on Layout Gala

创建等高列表的4个方法

该篇文章讨论了创建等高列表的4个方式,这些方式都显示如果创建三列布局。

Four Methods to Create Equal Height Columns

More Information on Four Methods to Create Equal Height Columns

使用CSS和jQuery进行显示切换

现在的网站用户希望网页更加的具有交互性,因此对于网页/内容的显示切换将很有必要。

Easy Display Switch with CSS and jQuery

More Information on Easy Display Switch with CSS and jQuery

CSS等列高度脚本

CSS等列高度脚本,动态设置列高度到最高的列的高度,创建统一的列高度布局。

CSS Equal Columns Height script

More Information on CSS Equal Columns Height script

CSS布局

这里是一组免费的CSS网页布局,包括1、2、3列布局,免费。

CSS layouts

More Information on CSS layouts

布局

在这里你可以找到非常不错的CSS布局。

Layouts

More Information on Layouts

使网页拓展到浏览器窗口的底部

这种情况似乎表示内容的高度小于浏览器窗口的文档区域的高度,因此无法到达浏览器窗口的底部,那么可以尝试如下代码。

Making web pages extend to the bottom of the browser window

More Information on Making web pages extend to the bottom of the browser window

Facebook风格的页脚管理区

创建类似Facebook风格的页脚管理面板,可在这里找到教程。

Facebook Style Footer Admin Panel Part 1

More Information on Facebook Style Footer Admin Panel Part 1

CSS模板

所有的模板都是XHTML 1.0和CSS2。

CSS TEMPLATES

More Information on CSS TEMPLATES

CSS布局生成器

该生成器帮助你使用验证的HTML和CSS创建网站模板结构。

CSS Layout Generator

More Information on CSS Layout Generator

创建基于固定页面布局的CSS

作者主要关注于如何使用不同的捆绑在Netbeans Visual Web的一些HTML元素的布局面板。

Creating a CSS Based Fixed Page Layout

More Information on Creating a CSS Based Fixed Page Layout

适应性浏览,如何办到?Adaptable View – How Do They Do It?

适应性浏览是用户界面设计样式-你可以为了满足用户需求,让用户改变内容的可视呈现。这通常要切换风格(网站或应用)来做到。

Adaptable view - how do they do it?

More Information on Adaptable view – how do they do it?

标签: , 4 评论