2009.01 03

5个使你熟知CSS 3.0的技术

要毕业了,准备去工作,初定8号会去应聘一个网页设计的职位。看起来应该去复习一下xHtml(CSS应该不需要多复习吧-_-!!),不过,先来一些CSS 3.0的知识吧。怎么说呢?CSS 3已经非常强大了,圆角+resize则是我喜欢的。你还不知道? 一起来吧,继续这个来自NETTUTS的教程:

1. 基本的xhtml标记

css3.7.png

在开始这个教程之前,让我们来做点xHtml标记,我们需要的几个DIV来完成效果的显示,如下:

  • #round, 这个显示CSS 3圆角
  • #indie, 单个角的显示
  • #opacity, 不透明度
  • #shadow, 不用制图工具制作投影
  • #resize, 可调节大小

因此,我会的xHtml会像下面这样,你可以自己建立一个html文件,也可以在这里下载(download):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>An Introduction to CSS3; A Nettuts Tutorial</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="wrapper">
<div id="round"> </div>
<div id="indie"> </div>
<div id="opacity"> </div>
<div id="shadow"> </div>
<div id="resize">
<img src="image.jpg" alt="resizable image" width="200" height="200">
</div>
</div>
</body>
</html>

让我们来稍微重设一下浏览器的CSS(还刻CSS reset吗? 可以看10款浏览器CSS Reset的方法),代码如下:

body {
background-color: #fff;
}
#wrapper {
width: 100%;
height: 100%;
}
div {
width: 300px;
height: 300px;
margin: 10px;
float: left;
}
/*稍后我们把要实现的代码写在这里*/

2. CSS3 圆角

css3.2.png

如上面所说,我们的代码会是这样的:

#round {
background-color: #000;
border: 1px solid #000;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
}

在这里-moz是firefox上能显示的样式前缀,而-webkit刚是像safari/Chrome这样的浏览器的样式前缀。而10px刚是border的半径(radius : ['reidjəs] n. 半径),明白了吧!

3. 单独圆角的定义

css3.3.png

看了上面的CSS圆角,你可能会觉得,如果我想让它只显示两个三个圆角,需要怎么办呢,难道还是要用到制图工具? 当然不用,CSS3已经为我们想好了。这里,我们的代码将是:

#indie {
background-color: #000;
border: 1px solid #000;
-moz-border-radius-topright: 10px;
-moz-border-radius-bottomright: 10px;
-webkit-border-top-left-radius: 10px;
-webkit-border-bottom-left-radius: 10px;
}

注意到topright和top-left这两个值没有? 这表明的是圆角的方位,完整的方位书写出下:

  • 以-moz为前缀的:topleft topright bottomleft bottomright
  • 以-webkit为前缀的:top-left top-right bottom-left bottom-right

而且,你注意到了没,-moz为前缀的,是写在最后,而以-webkit前缀的,写在半径的前面。

4. 显示不透明度

css3.4.png

搞过透明没有, 很难搞,是不是?对,就是难搞,特别是IE(友情推荐:让IE支持PNG透明的最好方法)。而CSS3只要一行代码。如果浏览器都支持CSS 3,事情就好办多了。我们的代码如下:

#opacity {
background-color: #000;
opacity: 0.3;
}

再来一次英文解释吧,opacity,就是不透明度的意思。我想,只要知道这个,你就会用了吧?

5. CSS 投影

css3.5.png

你可能知道如何用CSS技巧来实现投影吧? 不过,这里要说的不是技巧,而是CSS 3的一个技术,看代码:

#shadow {
background-color: #fff;
border: 1px solid #000;
-webkit-box-shadow: 3px 5px 10px #ccc;
}

看到没,-webkit这一行,只要这一行。3px表示水平方向的投影,5px表示纵向投影,而10px而指模糊的跨度(使用过fireworks或者photoshop的feather功能没有? 对,就是这个!)。而且,像你看到的,-webkit为前缀,证明只有safari和chrome这样的浏览器才会显示,firefox则不会。

6. 调节大小

css3.6.png

用过safari的人都知道,一般情况下,textarea部分是可以调节大小的,就是这样。不过,这个功能现在也暂时只支持safari。代码如下:

#resize {
background-color: #fff;
border: 1px solid #000;
resize: both;
overflow: auto;
}

resize:both。像clear:both一样。表示,可以向水平方向和纵方向选择拖动,调节大小。当然,也支持下面的值:

  • resize:horizontal; 水平方向调作
  • resize:vertical; 纵向调节

而另一个要让你明白的是,你必须把overflow:auto;写上,才能保证Resize正常使用。当然,你还可以设定最长宽度,最低高度来让这个元素在可一个范围内可调节,知道下面这个不?

  • max-height: 123px;
  • min-height: 321px;
  • max-width: 123px;
  • min-width: 321px;

不懂? 那你可以回去学一下CSS啦,虽然IE6这个曾经的伟大的浏览器不支持这个属性(可用JS来hack它)。这可是很重要的哦!

你有没有一边看,一边跟着做呢? 如果没有,建议你做一次。像你知道的,代码这东西,看着,以为懂了,到了用的时候,可能会不知道如何下手用。自己动手,会让你发现更多问题,会让你有更多的进步,而不是单纯看。anyway,这个还是提供出来:

本文的代码和预览:code | demo

Images from Flickr: 1 2 3 4 5 6

56

  1. 2009.01.03 3:15 pm
  2. 2009.01.03 3:16 pm
    Shawn不是(visit): [回复]

    我看好 css3.0 的选择器。

  3. 2009.01.03 3:19 pm
    oxygen(visit): [回复]

    怎么“不是小朋友”了。

  4. 2009.01.03 3:19 pm
    oxygen(visit): [回复]

    @oxygen:我怎么还是小朋友,55555~

  5. 2009.01.03 3:20 pm
    welee(visit): [回复]

    看来这些技巧很有用呢,正好可以试试应用在我自己的主题,先收藏。
    IE真的很难搞,特别是IE6和IE7,完全不同规格,累死 =.=’

  6. 2009.01.03 3:41 pm
    David Lau(visit): [回复]

    唉!2.0都没有弄懂,就看到3.0了!

  7. 2009.01.03 3:52 pm
    Shawn不是(visit): [回复]

    @oxygen:哈哈哈哈哈,难道你没发现我的名字很特别吗。

    oxygen不是

  8. 2009.01.03 3:58 pm
    sofish(visit): [回复]

    @Shawn不是: 最近以来的第一次沙发。

    @oxygen: “shawn不是”囧。另外一个解释是,还没长大。

    @welee: 期待一下你做的主题,哈哈哈。

    @David Lau: 嗯,有CSS3,有很多就只要hack ie6了,方便呢。

  9. 2009.01.03 4:22 pm
    老所(visit): [回复]

    IE赶快死绝吧,哈哈~~

  10. 2009.01.03 4:52 pm
    oxygen(visit): [回复]

    @Shawn不是:@sofish:强烈要求屏蔽“ID不是”这种昵称。。。俺还以为沙发就不是呢,汗死。

  11. 2009.01.03 4:54 pm
    wangyh(visit): [回复]

    正好要用到圆角,翻译辛苦!

  12. 2009.01.03 5:45 pm
    soz(visit): [回复]

    要找工作啦!加油啊!找到了通知我,让我也高兴高兴!

  13. 2009.01.03 6:34 pm
    Lorz对Sofish(visit): [回复]

    哈哈,Sofish 同学,题目说是5个,正文里讲了6个哦。希望你复习 xHTML 的同时,复习一下算术哦。否则找到工作却算错薪水就不合算了哈

  14. 2009.01.03 6:36 pm
    Zoll(visit): [回复]

    哈哈 我也才看过这篇文章~~
    貌似好多效果甚至只能在Safari和Chrome那个内核的浏览器能实现。。
    叫什么名字来这。。

  15. 2009.01.03 6:47 pm
    fisio(visit): [回复]

    太牛了 用之

  16. 2009.01.03 7:05 pm
    sofish(visit): [回复]

    @老所: ie比较慢死,唉。

    @oxygen: …如果我有这种技术。囧。叫Shawn教我怎么用。

    @Shawn不是: ↑ 如题!囧0,o…

    @wangyh: 应该比原文好,哈哈,因为我把我知道的都顺便介绍给大家,hoho。

    @soz: 好啊,谢谢^,^…希望能找到。

    @Lorz对Sofish: 里面只有5个技术嘛,lorz小朋友…第二个和第三个都是css 3 圆角,唉呀呀。

    @Zoll: 嗯,来自NETTUTS的教程嘛,第一段就说了。

    @fisio: 大家要向fisio帅小朋友学习!

  17. 2009.01.03 7:49 pm
    感受软件(visit): [回复]

    CSS3真的强大多了。
    喜欢圆角的感觉。

  18. 2009.01.03 8:05 pm
    火星人(visit): [回复]

    很好很强大

  19. 2009.01.03 8:11 pm
    Tox(visit): [回复]

    继续学习中,不过IE貌似已经成了网页设计的鸡肋了

  20. 2009.01.03 8:36 pm
    sqybi(visit): [回复]

    CSS3好爽啊…

  21. 2009.01.03 9:26 pm
    purplefire不是(visit): [回复]

    很强大,只是什么时候所有的浏览器才能全部支持CSS3?

  22. 2009.01.03 9:35 pm
    ZhouGe(visit): [回复]

    我CSS还没有分那么清楚呢~

  23. 2009.01.03 9:35 pm
    feicun(visit): [回复]

    看不懂……等放假回家学学

  24. 2009.01.03 9:49 pm
    leehow(visit): [回复]

    shawn不是小朋友?是小熊…

  25. 2009.01.03 9:52 pm
    leehow不做(visit): [回复]

    于是,这样…

  26. 2009.01.03 10:31 pm
    mingelz(visit): [回复]

    可。。。这个css3.0啥时候能出来呢?ie7已经支持css3.0了吗?恐怕。。。要让css3.0普及还是很久远的事吧……

  27. 2009.01.03 10:59 pm
    ivane(visit): [回复]

    Hi~Sofish,不知道如何能联系到你呢?

  28. 2009.01.03 11:37 pm
    housne(visit): [回复]

    哈,看来css3 要方便多了!

  29. 2009.01.03 11:59 pm
    herb(visit): [回复]

    听说css3是为了减少javascript在某些方面的滥用…而且还没有浏览器正式支持?

  30. 2009.01.04 10:14 am
    人类进化(visit): [回复]

    我恨IE6……

  31. 2009.01.04 10:57 am
    Centeur(visit): [回复]

    过渡到 css3 还需要一个过程,特别是 ie 的市场份额还很大的时候。

  32. 2009.01.04 12:37 pm
    NetPuter(visit): [回复]

    啥时候普及CSS3呢..
    哎..

  33. 2009.01.04 12:40 pm
    NetPuter(visit): [回复]

    其实CSS3也算正是的嘛,有点儿奇怪为什么那些:
    -moz-border-radius: 10px;
    -webkit-border-radius: 10px;
    前面还要有-呢,明明很正是嘛,弄得好像某个核心的浏览器的Hack..

  34. 2009.01.04 12:45 pm
    NetPuter(visit): [回复]

    其次,CSS3以前的这些代码:
    <div id=”header”>head</div>
    CSS3可以这么写:
    <header>head</header>

  35. 2009.01.04 1:25 pm
    醉倚西风不是(visit): [回复]

    预祝新年快乐哈哈哈

  36. 2009.01.04 3:46 pm
    feir(visit): [回复]

    希望你面试成功,找到个好工作。

  37. 2009.01.04 4:36 pm
    拒绝虫(visit): [回复]

    设计师是一个很不错的职业啊…预祝你找到理想的买家哈

  38. 2009.01.04 4:47 pm
    YCF_name不是(visit): [回复]

    CSS3,的确强得不行,不过w3c进度实在是太慢了。

  39. 2009.01.04 5:54 pm
    会律(visit): [回复]

    转个身回来什么都没了,昨天晚上就看到的文章,不幸的是电线烧坏了,再次错失SF!

  40. 2009.01.04 8:26 pm
    花果山寨(visit): [回复]

    有了css3.0,这网站要多漂亮就能多漂亮!期待sofish的新作能用上css3.0,也好让我们开开眼嘛!

  41. 2009.01.05 7:33 pm
    蓝浩力(visit): [回复]

    可惜,ie都不支持的东西,普及率还不会很高。

  42. 2009.01.06 10:50 pm
    leehow这个VIP(visit): [回复]

    你好久没更新?

  43. 2009.01.08 5:24 pm
    sonny(visit): [回复]

    娃哈哈,again.吃饭去,拜拜,订阅了下次就不来了。

  44. 2009.01.08 5:47 pm
    jason(visit): [回复]

    thank you!!学习啦!!

  45. 2009.01.09 10:51 am
    怪虾一直霉(visit): [回复]

    Happy 牛 year

    来我的站看看吧 尚海-www.shinehi.com

  46. 2009.01.09 3:00 pm
    David Lau(visit): [回复]

    Sofish忙着找工作?

  47. 2009.01.10 12:03 pm
    武汉打印机维修(visit): [回复]

    晕了,你这网站IP和PV多少啊?还用得着找工作?不是吧?

  48. 2009.01.11 2:12 am
    差沙(visit): [回复]

    webki
    联系我吧,直接就能找到过万的工作.

  49. 2009.01.11 11:48 am
    wordpress啦(visit): [回复]

    定义的样式前缀不错,看好CSS3.0

  50. 2009.01.12 10:16 am
    22ps(visit): [回复]

    这些都是no ie 的私有属性,不是css3的官方属性吧“
    我觉得要尽量的少使用此类属性
    应该for css ,而非for browser~~~

  51. 2009.01.13 5:11 pm
    二手科学家(visit): [回复]

    看到强悍的css,我越发讨厌IE

  52. 2009.01.14 3:15 pm
    若雪(visit): [回复]

    我试了试~
    但是为什么IE7没有效果呢~
    火狐就没有问题~
    能同时能实现多种浏览器兼容的办法不?~

  53. 2009.02.11 1:33 am
    eddie yang(visit): [回复]

    对rounded比较需要~暂时只用js来替代

  54. 2009.02.27 6:40 am
    lonqi(visit): [回复]

    有些浏览器对css3.0的支持还不够,看来还要等些日子了。

  55. 2009.04.16 12:38 pm
    rain.kx(visit): [回复]

    呃.
    看帖回帖.

  56. 2009.04.19 8:23 pm
    FoxLing(visit): [回复]

    @NetPuter: 因为CSS3还未正式完工~现在算是某些注重标准的浏览器自己实现的功能。于是便成了私有属性~

Additional comments powered by BackType