CSS威武!

有一个同学介绍我看了一个网站,看过之后对这个网站的风格表示很喜欢,亮点是其中的图片导航栏。我呆呆的看了5分钟,放出话说这个我也能做。很明显,原站点动用了js来做这样一个动画效果,而我在想应该可以用css来达到同样的效果。于是昨天晚上,我将自己的想法付诸实践。

整个过程似乎比我预想的要顺利,虽然作品出自自己的双手,但还是不得不赞叹新的css所带来的强大功能。在这个小案例当中用到了下面2个关键的属性:

  • :not()。这是一个新的选择器伪类,用来剔除选定集合中的特定内容。为了去掉当前鼠标所在的元素,用到了:not(:hover)这个不可思议的组合。其实我一开始也是抱着试试看的心理来用这样一种组合,没想到效果相当好。这也颠覆了我对伪类的认识。
  • -webkit-transition。这是html5引入的一个新的css属性,当然因为使用chrome和safari浏览器,必须添加-webkit这个前缀。这个属性就我目前的认识,用法是对选定元素指定一个属性,同时指定动画方式。此后,只要触发这个属性的改变就会以预先定义好的动画方式来显示。具体请研究示例里面的代码。

虽然我没有在firefox上测试过,但是如果把webkit改成moz的话应该也会有同样的效果。这算是html5的基本常识了,为了浏览器兼容性,理应把各种属性都加上去。不过作为一个测试页面,请原谅我没有考虑太多的兼容性问题。此外,作为一个果粉+谷粉,请允许我自私一回。想看效果的就请移驾此地。(PS:仅限chrome和safari浏览器哦!)

为打印页面提供专用CSS

曾经探讨过要怎么为打印一个网页提供专门的CSS,结论是要用js,于是放弃了。昨天因为机缘巧合重新研究了这个问题,发现单纯的CSS就可以搞定,不过还是有些值得注意的地方,写在这里与各位分享。

废话不多说,直接进入正题。使用CSS为网页提供样式一般来说有3种方法:关联外部css文件,内部style元素,以及内联样式(即使用元素的style属性)。为了实现向打印页面提供专用的样式表,我们必须采用前面两种方式。

使用外部css文件的做法很简单。假设你有一个名为style.css的文件需要关联到当前的页面,通常的做法是使用下面这条语句:

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

如果你需要将print.css这个文件用于该页面的打印,你需要做得仅仅是在其后面添加下面的语句(注意红色的部分):

<link rel="stylesheet" type="text/css" href="print.css" media="print" />

但是请注意,style.css这个样式表仍然对打印的页面起作用,因为浏览器判定它是全局的。如果你提供的是独立的样式表,那么可以在引用style.css的语句里加上:

media="screen"

使用media属性就可以为不同终端提供不同的呈现方式,非常方便。