加载中...

css


其中 Y=css

源代码下载: learncss-cn.css

早期的web没有样式,只是单纯的文本。通过CSS,可以实现网页样式和内容的分离。

简单来说,CSS可以指定HTML页面上的元素所使用的样式。

和其他语言一样,CSS有很多版本。最新的版本是CSS 3. CSS 2.0兼容性最好。

你可以使用dabblet来在线测试CSS的效果。

  1. /* 注释 */
  2. /* ####################
  3. ## 选择器
  4. ####################*/
  5. /* 一般而言,CSS的声明语句非常简单。 */
  6. 选择器 { 属性: 值; /* 更多属性...*/ }
  7. /* 选择器用于指定页面上的元素。
  8. 针对页面上的所有元素。 */
  9. * { color:red; }
  10. /*
  11. 假定页面上有这样一个元素
  12. <div class='some-class class2' id='someId' attr='value' />
  13. */
  14. /* 你可以通过类名来指定它 */
  15. .some-class { }
  16. /* 给出所有类名 */
  17. .some-class.class2 { }
  18. /* 标签名 */
  19. div { }
  20. /* id */
  21. #someId { }
  22. /* 由于元素包含attr属性,因此也可以通过这个来指定 */
  23. [attr] { font-size:smaller; }
  24. /* 以及有特定值的属性 */
  25. [attr='value'] { font-size:smaller; }
  26. /* 通过属性的值的开头指定 */
  27. [attr^='val'] { font-size:smaller; }
  28. /* 通过属性的值的结尾来指定 */
  29. [attr$='ue'] { font-size:smaller; }
  30. /* 通过属性的值的部分来指定 */
  31. [attr~='lu'] { font-size:smaller; }
  32. /* 你可以把这些全部结合起来,注意不同部分间不应该有空格,否则会改变语义 */
  33. div.some-class[attr$='ue'] { }
  34. /* 你也可以通过父元素来指定。*/
  35. /* 某个元素是另一个元素的直接子元素 */
  36. div.some-parent > .class-name {}
  37. /* 或者通过该元素的祖先元素 */
  38. div.some-parent .class-name {}
  39. /* 注意,去掉空格后语义就不同了。
  40. 你能说出哪里不同么? */
  41. div.some-parent.class-name {}
  42. /* 你可以选择某元素前的相邻元素 */
  43. .i-am-before + .this-element { }
  44. /* 某元素之前的同级元素(相邻或不相邻) */
  45. .i-am-any-before ~ .this-element {}
  46. /* 伪类允许你基于页面的行为指定元素(而不是基于页面结构) */
  47. /* 例如,当鼠标悬停在某个元素上时 */
  48. :hover {}
  49. /* 已访问过的链接*/
  50. :visited {}
  51. /* 未访问过的链接*/
  52. :link {}
  53. /* 当前焦点的input元素 */
  54. :focus {}
  55. /* ####################
  56. ## 属性
  57. ####################*/
  58. 选择器 {
  59. /* 单位 */
  60. width: 50%; /* 百分比 */
  61. font-size: 2em; /* 当前字体大小的两倍 */
  62. width: 200px; /* 像素 */
  63. font-size: 20pt; /* 点 */
  64. width: 5cm; /* 厘米 */
  65. width: 50mm; /* 毫米 */
  66. width: 5in; /* 英尺 */
  67. /* 颜色 */
  68. background-color: #F6E; /* 短16位 */
  69. background-color: #F262E2; /* 长16位 */
  70. background-color: tomato; /* 颜色名称 */
  71. background-color: rgb(255, 255, 255); /* rgb */
  72. background-color: rgb(10%, 20%, 50%); /* rgb 百分比 */
  73. background-color: rgba(255, 0, 0, 0.3); /* rgb 加透明度 */
  74. /* 图片 */
  75. background-image: url(/path-to-image/image.jpg);
  76. /* 字体 */
  77. font-family: Arial;
  78. font-family: "Courier New"; /* 使用双引号包裹含空格的字体名称 */
  79. font-family: "Courier New", Trebuchet, Arial; /* 如果第一个
  80. 字体没找到,浏览器会使用第二个字体,一次类推 */
  81. }

使用

CSS文件使用 .css 后缀。

  1. <!-- 你需要在文件的 <head> 引用CSS文件 -->
  2. <link rel='stylesheet' type='text/css' href='filepath/filename.css' />
  3. <!-- 你也可以在标记中内嵌CSS。不过强烈建议不要这么干。 -->
  4. <style>
  5. 选择器 { 属性:值; }
  6. </style>
  7. <!-- 也可以直接使用元素的style属性。
  8. 这是你最不该干的事情。 -->
  9. <div style='property:value;'>
  10. </div>

优先级

同一个元素可能被多个不同的选择器指定,因此可能会有冲突。

假定CSS是这样的:

  1. /*A*/
  2. p.class1[attr='value']
  3. /*B*/
  4. p.class1 {}
  5. /*C*/
  6. p.class2 {}
  7. /*D*/
  8. p {}
  9. /*E*/
  10. p { property: value !important; }

然后标记语言为:

  1. <p style='/*F*/ property:value;' class='class1 class2' attr='value'>
  2. </p>

那么将会按照下面的顺序应用风格:

  • E 优先级最高,因为它使用了 !important,除非很有必要,尽量避免使用这个。
  • F 其次,因为它是嵌入的风格。
  • A 其次,因为它比其他指令更具体。
  • C 其次,虽然它的具体程度和B一样,但是它在B之后。
  • 接下来是 B
  • 最后是 D

兼容性

CSS2 的绝大部分特性兼容各种浏览器和设备。现在 CSS3 的兼容性也越来越好了。 但是兼容性问题仍然是需要留意的一个问题。

QuirksMode CSS是关于这方面最好的资源。

扩展阅读


还没有评论.