Whistler and Vancouver

上周去加拿大Whistler参加Mozilla Summit,总结一个词——Awesome!回来的时候顺便去了趟温哥华溜达了溜达。

Whistler是2010年冬季奥运会的举办场地,是一个距离温哥华大概2小时路程的小镇,坐落在雪山的环抱之中,小镇非常的宁静漂亮,让人流连忘返,而且,小镇上美食很多,各国的美食都能够找到。不过因为几天都在密集的开会中,加上时差,基本上都是在会场度过的,遗憾!

Ok, set to fly mode Fairmont Chateau of Whistler Bear!! Lost Lake
Hey ... ... habour taking off
  1. 头图是会议最后一天大家庆祝大会圆满结束到Whistler的一处山顶,太阳要落山了的时候拍的,温哥华地区白天特别长,这张照片拍的时候应该是晚上9点多。
  2. 从北京机场出发了
  3. 到达Whistler,坐落在山脚下的Fairmont Chateau是我们的酒店,Huge!
  4. 因为时差的关系,早早的就醒了,出去宾馆后面的山上溜达,目睹野生黑熊一只,Whistler也以黑熊出名,他当时离我10米左右,不过完全忽视我的存在!
  5. 小镇上分布着三四个湖,这是其中一个Lost Lake,为了找他,也差点迷路
  6. 这应该是薰衣草吧
  7. 最后一天在雪山顶,那里有个酒吧,呵呵
  8. 我去摸远处的山顶
  9. 依旧是山顶的落日
  10. 去了温哥华,这是温哥华Stanley Park附近的Coal Habour,据说水下有煤
  11. Stanley Park东南角的湖,湖里有大量的水鸟,还有天鹅和大雁,同样忽视行人

最后送上一张温哥华的天际线,从Waterfront坐Seabus到北温,然后在码头回头拍的,拍完就又坐Seabus回Waterfront了,哈哈

Vancouver Skyline

火狐支持社区

火狐社区致力于为火狐用户服务,同时火狐社区也是由所有火狐浏览器用户共同运营的社区。这里,我们提供包括了新闻博客、用户问答社区、开发者问答社区、知识库/大学堂、社区动态分享、扩展精选等多种多样的服务。

  • 问答社区。在这里,您可以针对自己在使用火狐过程中遇到的问题提出疑问,会有来自社区的朋友帮您解答;同时,在被被人帮助的同时,您可以行举手之劳,帮助其他需要帮助的用户。
  • 学堂/知识库。这里,您可以通过社区和我们对常见问题的总结了解如何更好的使用Firefox火狐浏览器,这里会有常用技巧、扩展使用知识等介绍。
  • 开发者。火狐以及Mozilla一直以来最骄傲的就是非常庞大的开发者社区,在这里,我们也为开发者特别开辟了问答社区和学堂的模块,您可以在这里提问或者帮助别人解决问题;也可以找到很多技术参考文献,我们会持续的整理这些文档资料。如果您关注Mozilla技术,关注前端HTML、JavaScript、CSS等技术的话,欢迎常来这里做客。
  • 火狐社区分享。旨在汇集优秀的社区文章和讨论,分享的内容包含火狐浏览器以及Mozilla的最新动态和讨论,前端以及浏览器技术的优秀文章,用户分享使用火狐浏览器故事,使用火狐附加组件体验等。
  • 扩展精选。火狐浏览器最大的魅力就在于您可以发挥无穷的想象力去定制您的浏览器。但是火狐社区中的扩展多达6000多,用户需要花费很大的精力去挖掘,这里我们努力帮用户挑选出最使用、最流行、中文支持最好、最契合国内网站服务的扩展。

做了两个月,终于可以跟大家见面了,不过里面东西还很少,需要社区不断的积累,欢迎大家前来开荒,:), 也欢迎大家踊跃批评,:)

问答部分其实是借鉴了目前很流行的StackOverflow,不过我也不知道这种模式在国内是否有效,是否能够充当好产品的支持渠道,走走看~

车行两年

上个星期带着我家致胜去续了保险,去车检所做了年检,恍惚间小致已经陪伴我们度过了两年了。车行两年,里程跑到了3万2,北京依然有很多地方没有去过,长途还是只跑过京沈。两年了,跟小致的感情却是越来越深,有时候周末自己带着他去洗车,有时候带着他去保养,都觉得这里有一种信赖存在。跟机器打交道比较多,这种信赖可能更容易存在,比如同你的电脑之间,同你的车之间,同你的各种工具之间,可能并不是你在驾驭他,而是同他一起达到某种默契和信赖,才会随心,跑题跑题。

两年了,准备给小致的家长买个蛋糕吃。虽然没有给小致准备什么,不过从上次保养开始加金美孚了~声音确实比以前小了很多。两年中,小致还是很能吃油的,尤其是我们公司搬到了二环边上,每天上班下班基本都是最拥挤的时候,所以,基本上油耗都在12个以上,但凡有一天能够在五环上跑个把小时,就能收敛到11个,如果有幸能跑趟机场高速的话,那就能到10个了,要想10个以下,只能去跑高速了,跑京沈基本都是8个。发现小致的最佳状态是120-130(转速刚好在3000, 140的时候在3500),高于这个就会多耗油(哥们告诉我应该是80、120、140是几个状态档),有一次回家就是感觉油不够了,而那次所有休息区的加油站都排长队,最后按照130的速度跑,刚刚好跑到市里的油站,当时油灯都亮半天了。

生活中对小致的依赖也是越来越多,连过马路买个菜我都想要开车去。以后会继续好好保养,毕竟会陪我们十好几年,以后争取给他换套米胎,有钱的话,再给换套好的悬挂,基本就齐活了,:)

多说一句,根据我两年的行车经验和所闻所见,大家需要记住的是,路上不靠谱的人很多,不管以任何方式行进在路上,一定要小心。开车之后,我当行人绝对看信号灯过马路,绝对不在机动车道上走路,绝对不拿自己的肉身跟这些钢铁家伙较劲,犯不上,万一碰上个不靠谱的真是得不偿失;开车的时候,最小心的也就是行人、自行车和电动车,尤其是电动车,碰到n次有电动车突然冲出来,跑60、70的电动车也不少见,所以,每次路过人多的地方或者拐弯的地方我都绝对小心,毕竟车碰了都还是小事,车可以修,不小心碰了人,这辈子我心里可能都过不去,小心为妙阿,汽车绝对是凶器,一定小心伺候着。说完。

希望大家路上平安。平平安安上班去,高高兴兴回家来!

你 +压力 -身段 ×坚强 ÷任性
换算之后 你是否还记得真实的自己

你 +包容 -习惯 ×责任 ÷自由
换算之后 你是否还记得真实的自己

去吧!
在全新Mondeo的动力中
启动沉寂的热情 陪自己走一段路
你会发现 真实的你 会跟你在一起

为真实的你前进!

书写跨浏览器的CSS代码

非原创,在Smashing上看到一篇“The Principles Of Cross-Browser CSS Coding”,顿时觉得“哎哟,不错哦~”,呵呵,挑选一些东西翻译一下。

不管是写JavaScript还是写CSS,对于网页开发者来说,最头疼的事情就是要支持多浏览器,而不管是JS还是CSS,虽然都有国际标准站在那里指点江山,可惜各个浏览器厂商还是自说自话,对于JS和CSS的实现方式和支持程度都各不相同。对于网页开发人员来说,一直希望找到最轻便的方式来得到跨浏览器的支持,这也是为啥有那么多JavaScript和CSS的库和Framework可用的原因。

上面提到的这篇文章的作者就是这样一个意思。所有的开发人员都希望能够在每个浏览器中得到完全一致的网站渲染结果,得到完全相同一致的设计实现,不过很难!所以,作者希望给出几条最基本的CSS编码指导思想,最后能够达到的目标就是在所有浏览器里面看着基本差不多,然后尽量少写多余的CSS代码~哎哟,听上去不错哦~呵呵

理解CSS盒子模型

对于任何希望写出跨浏览器CSS代码的同学来说,最需要深刻理解的第一件事情就是CSS盒子模型(Box Model)。CSS的盒子模型理解起来不难,而且大部分的浏览器实现方法基本上也相同,出了一些特定版本的IE。

( 这里可以插一句就是浏览器是如何渲染网页布局的,比如div如何渲染,p如何渲染。对于浏览器来说最基本的工作之一是把网页内容从服务器上下载下来,然后把这些网页内容画到屏幕上,真的是“画”哦,所以,浏览器中非常相当重要的一个核心组件叫做布局渲染引擎——Layout Engine,各大浏览器使用的布局渲染引擎都不一样——所以才有上述跨浏览器问题的存在,比如Firefox或者说Mozilla家族的布局引擎叫做Gecko,Safari、Chrome等都是属于Webkit家族的,而IE使用的Trident的。布局引擎如何把网页内容画到屏幕上呢?在对网页内容进行解析之后,布局引擎会把这些div阿p阿h1阿影射成一个一个的长方形,计算好每个元素所占长方形的大小/偏移/位置关系等等,然后把这些长方形对应到屏幕的实际坐标上,再把具体的内容绘画在这些长方形中。简单说吧,就是这样的,呵呵。在这个过程中有很多步骤,同时也有很多对关键步骤描述的术语,比如Frame Construction、Reflow等等。CSS的盒子模型是计算这些长方形和进行Reflow等操作的核心模型。)

CSS盒子模型主要用来计算:

  • Block型元素占据多大地方
  • 盒子的边界/边距等会不会彼此重叠,比如上下两个盒子都有边距,那可能这个边距会重叠在一起(可能具体浏览器实现也不太相同)
  • 盒子的大小
  • 盒子同网页中其他元素的关系

CSS盒子有如下基本规则:

  • Block型元素本质上都是长方形(其实所有元素都是,像前面说的那样)
  • Block元素大小的计算参数包括长、宽、内边距padding、边界border和外边距margin
  • 如果没有指定元素高度的话,元素的高度取决于内部元素的高度+内边距padding
  • 如果没有指定元素宽度的话,非浮动元素会自动撑开去适合父元素的宽度-父元素的内边距padding

( 个人认为在写CSS的关于布局部分的代码时,脑袋中可能时刻都要想象一下这个盒子模型,会大大帮助你对布局进行控制,而事先的计算以及一些简单的方式也会方便今后的维护,反正这里的计算大不了就是多几个变量,但是基本都是一次方程。而借助于类似于Firebug这样的调试工具更是能够清楚的了解元素的实际大小和布局信息。)

这里有几条比较重要的事情要记住:

  • 如果您设定了一个盒子的宽度为100%的话,那么这个盒子不能有任何内外边距或者边界,要不然肯定会撑破父元素
  • 竖直方向上彼此相邻的元素的外边距可能会重叠在一起,不同的浏览器实现不一样,(比如上方元素外边距为5px,下方元素外边距为5px,这两元素在竖直方向上这个5px的边距可能就被重合在一起,他俩之间的距离只有5px,而不是10px;)由于这点实现的不同,可能会造成一些布局混乱的情况发生。
  • 对于指定position的元素,不管是relative还是absolute也是跨浏览器支持比较头疼的事情,原文作者说不讨论了,那我也不讨论了,呵呵

( 其实,这里有两个大小:一个大小是元素的可视大小,比如一个div他实际包含内容占据的大小,我们通常在CSS中制定的是这个大小,比如上面图中的400×400;另一个大小是浏览器布局引擎计算出来的该元素的实际占地大小,这个大小包括了元素的可视大小,还包括了你指定的padding阿、border阿、margin阿,加起来才是你的实际占地大小,浏览器按照这个大小来给你划出属于这个元素的区域。举个例子就是,我要盖房子,需要使用面积为120平米的,但是开放商就需要给你添加围墙多厚、公摊面积、跟其他人家之间的间距阿什么的,所以最后你实际购买的面积肯定不止120平米,道理是一样的,呵呵。)

Block和Inline型元素

( 我也不知道block level和inline level是不是应该把level翻译成“型”阿,呵呵 )

HTML的元素生下来不是平等的,他们被分为两类,block型和inline型。block型的元素生下来就优越,人家生下来就能占据属于自己的一块地皮,他的父亲占的地方有多大,除去围墙内边距啥的,他就能占多大地方,这类元素包括div阿p阿等等;还有一类元素是inline型的,他们生下来没有属于自己的地方,他自己多大,他就占多大地方,然后跟着所有的文字阿或者其他inline元素挤在一起,这类元素包括span阿a阿啥的。

下面几条描述了基本的不平等地方:

  • Block元素如果没有指定任何长宽规则的话,缺省的是在水平方向上填充满父级容器水平方向的空间,所以不需要制定说width为100%;
  • 如果没有指定浮动或者position的话,Block元素默认起始于父级容器的最左边界,然后安排在前面还有的block元素下面
  • inline元素会自动忽略width和height,写了也没用
  • inline元素同文字一起被布局和渲染,他的大小会随着一些字体方面的属性而发生变化,例如white-space、font-size、lettering-spacing等
  • inline元素可以使用vertical-align来进行竖直方向的对齐,但是block元素不行
  • 如果指定inline元素为浮动的话,他就变成block型的了

补充一点就是,这些特性是针对html元素的天生而言的,但是不妨碍后天给他指定,可以通过display: block;来指定a或者span成为block型元素,同时还有好多效果可以利用display: inline-block;这样的方式做到,等等。

理解浮动和Clear

现在多栏的布局越来越常见,实现多栏布局中比较简单并且容易维护的方式就是通过浮动。浮动元素可以指定浮动的方向,是向左还是向右,这些元素会自动按照这个方向顺序摆放,直到“碰到”容器元素的边界或者其他的浮动元素,这时可能就会折行重新开始浮动等。所有非浮动的、inline的内容会围绕着这个浮动元素来进行布局。

  • 浮动的元素不会参与到其他非浮动的block元素的布局计算中,也就是说,如果你把一个盒子浮动在左边,跟着他有一个非浮动的block段落,这个block会装作好像没有前面那个浮动元素一样计算布局,该多大还多大,上下左右坐标该怎么计算还怎么计算,但是这个block里面的文字——inline内容会围绕着这个浮动盒子来进行布局;(可能说起来比较拗口,有兴趣的可以自己写段HTML代码就明白了。)
  • 要让内容能够围绕一个浮动元素布局的话,那这段内容要么是inline型的,要么就得跟这个浮动元素在同一个方向上浮动,比如都是向左或者都是向右
  • 浮动元素如果没有指定宽度的话,他的宽度会默认的缩小到内部内容的大小,所以最好为你的浮动元素指定一个宽度
  • 当block元素包含float元素的时候,一定小心布局的变化,外层元素会collapse
  • 具有“clear”属性的元素可以不在围绕前面的浮动元素——视为取消浮动的原则

理解IE的常见问题

IE6目前还在网络中占有很大一部分市场,虽然开始有大的网站开始不支持IE6的行动,但是有时候还是需要花费很大精力来照顾一下IE一族的感受。这里有一些需要处理的最为常见的问题:

  • 如果过渡使用浮动的话,IE6会是一个很大的问题,会造成内容消失重复文字等等
  • IE6会把浮动元素浮动方向那边的外边距乘以2,把浮动设定为display: inline通常会解决这个问题
  • IE6不支持max-和min-系列的CSS规则,例如max-height等
  • IE6不支持指定位置的背景图片
  • IE6和IE7不支持display很多属性值,例如inline-table等
  • IE6中,出了对于<a>使用:hover以外,其他元素都不能用
  • 不同版本的IE对于CSS Selector的支持是不同的
  • IE6-8对于CSS3的特性支持不多

有些问题怎么调也不可能一样

有些事情开发人员怎么调整可能都是不行的,这时候也别太较真了,比如:

  • Forms表单可能怎么都会看着不一样的
  • 字体

使用CSS Reset

原文作者说自从他开始使用CSS Reset之后,就爱上了CSS Reset。通过CSS Reset,书写跨浏览器CSS代码的能力大大加强。CSS Reset看上去可能是一堆很没用的代码,不过真的很有用,原文作者推荐Eric Meyer的CSS Reset代码。

( 啥是CSS Reset?我们知道对于HTML元素进行CSS的限定规则有很多很多,开发人员不可能对于一个div写特别长的CSS 规则代码,把所有的规则全部配置一遍,那要累死了,所以对于没有设定的属性,所有的浏览器都有默认的样式属性。比如你的页面中没有指定font,那浏览器怎么办,会用他默认的样式中的字体来对网页进行渲染,在比如,我们上来就可以写<p>这样的元素,之后可以看到<p>直接就有了一些关于内外边距的一些样式,这些样式都是浏览器添加的默认样式。这当然非常非常的方便,但是同样会带来一个问题就是每个浏览器内置的默认样式都不一样阿,尤其是涉及到内外边距这些实际影响布局的属性,所以,在这样的背景下,CSS Reset就出现了。下面这个图就是一个典型的Reset代码段。)

( CSS Reset不是什么特别的概念,核心思想就是为了消除不同浏览器缺省样式属性带来的不兼容性。可以看到的是貌似Reset就是把内外边距什么的重新清零一遍,这是因为这些默认内外边距的不同是带来布局不同最大的问题之一。)

基本就翻译到这里吧,通过翻译自己也学习到了很多,整理出来希望能够帮助更多的朋友理解这些。我的实战经验不多,不过上述的问题基本也都遇到过,可能也能说明这些问题比较具有代表性。如果有任何错误和意见,欢迎批评指正。

Readability

一直用Arc90的Bookmarklet来打开网页的Readability,什么浏览器都能用,也非常好用,而且完全自己控制,主要不知道Safari 5的Reader功能什么时候出什么时候不出,比较头疼。

Readability最大的作用跟他的名字一样,提升网页文章的可阅读性,确实!尤其是网页比较乱七八糟的,呵呵

读书快评

  1. “Rework”──继续保持Getting Real的文风,大爱,心动不如行动,最后作者的总结其实说明了一切,趁着自己心气还高的时候赶紧去做,回头就再而衰三而竭了…
  2. “软件随想录”──老实说,没看完,准备就此尘封了
  3. “The Smashing Book”──很不错,尤其是对于没有很多设计经验但是还想比划比划的人来说
  4. “写给大家看的设计书”──帮助很大,确实是写给像我这样没什么设计背景的设计书,复杂的设计原理在书中凝炼为亲密性、对齐、重复和对比4个基本原则,记住了这四点,设计内容板式可能就会有很大的提高
  5. “失落的秘符”──推荐,不过没有之前的好看,比Robert London之前的两本都要差,同样期待电影和Tom Hanks