Blogger Information
Blog 5
fans 0
comment 0
visits 3454
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
css引入方式与选择器
Jason药师
Original
535 people have browsed it

css引入方式与模块化编程

css引入方式有:内部样式表引用、外部样式表引用、行内样式

1、内部样式表:通过 \<style> 标签引入的 css 规则,仅适用于当前页面

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>css的基本语法</title>
  6. <!-- 任何元素如果想引入到html文档中,必须要使用一个适当的标签,css也不例外 -->
  7. <style>
  8. /* 通过style标签引入的css规则,仅适用于当前的页面(html文档) */
  9. /* css: 层叠样式表,用来设置页面中元素的样式,布局 */
  10. h1 {
  11. /* 声明: 属性和值组成 */
  12. color: violet;
  13. border: 1px solid #000;
  14. }
  15. /* h1: 选择器 */
  16. /* {...}: 声明块,由一个或多个由分号分隔开的样式声明构成 */
  17. /* h1 + {...}: 选择器 + 声明块 = 规则 */
  18. </style>
  19. </head>
  20. <body>
  21. <h1>php.cn</h1>
  22. </body>
  23. </html>

2、外部样式表:使用 \<link> 标签引入的外部公共样式表

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>css引入方式:外部样式表/公共样式表/共享样式表</title>
  6. <!-- 2. 使用link 标签引入外部公共样式表 -->
  7. <link rel="stylesheet" href="css/style.css">
  8. </head>
  9. <body>
  10. <h1>php中文网</h1>
  11. </body>
  12. </html>

style.css

  1. h1 {
  2. /* 声明: 属性和值组成 */
  3. color: violet;
  4. border: 1px solid #000;
  5. }

3、行内样式:通过 style=” “属性给指定元素自定义/定制样式

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>css引入方式:style属性设置样式</title>
  6. </head>
  7. <body>
  8. <!-- 3. 通过style属性给指定元素自定义/定制样式 -->
  9. <h1 style="color:teal">css真的非常好玩</h1>
  10. </body>
  11. </html>

总结:
1. 内部样式: 仅对当前文档的元素有效,使用 style 标签
2. 外部样式: 适用于所有引入了这个css样式表的html文档,使用 link 标签
3. 行内样式: 仅适用于当前的页面中的指定的元素,使用style属性

样式表的模块化

样式表的模块化,是通过 @import 来实现的

1、在内部样式表中的使用方式

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>样式表的模块化:公共部分进行分离</title>
  6. <style>
  7. /* 导入公共页眉 */
  8. @import url(css/header.css);
  9. /* 导入公共页脚 */
  10. @import 'css/footer.css';
  11. main {
  12. min-height: 500px;
  13. background-color: lightcyan;
  14. }
  15. </style>
  16. </head>
  17. <body>
  18. <header>页眉</header>
  19. <main>主体</main>
  20. <footer>页脚</footer>
  21. </body>
  22. </html>

css/header.css

  1. /* 公共页眉 */
  2. header {
  3. height: 50px;
  4. background-color: #ddd;
  5. }

css/footer.css

  1. /* 公共页脚 */
  2. footer {
  3. height: 80px;
  4. background-color: #555;
  5. color: white;
  6. }

2、在外部样式表中的使用方式

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>样式表的模块化:导入一个公共入口的css文件</title>
  6. <link rel="stylesheet" href="css/style1.css">
  7. </head>
  8. <body>
  9. <header>页眉</header>
  10. <main>主体</main>
  11. <footer>页脚</footer>
  12. </body>
  13. </html>

css/style1.css

  1. /* 导入公共页眉 */
  2. @import url(header.css);
  3. /* 导入公共页脚 */
  4. @import "footer.css";
  5. main {
  6. min-height: 500px;
  7. background-color: lightcyan;
  8. }

css的模块化总结:
1. 将公共样式部分进行分离,并创建一些独立的样式表来保存它
2. 使用@import指令将这些独立的公共样式表引入到指定的css文档或标签中

选择器

基础选择器

1、标签元素选择器

  • 最常见的 CSS 选择器是元素选择器。换句话说,文档的元素就是最基本的选择器。

  • 如果设置 HTML 的样式,选择器通常将是某个 HTML 元素,比如 p、h1、em、a,甚至可以是 html 本身:

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>选择器1: 简单选择器</title>
  6. <style>
  7. /* 1. 标签选择器, 返回一组 */
  8. li {
  9. background-color: violet;
  10. }
  11. </style>
  12. </head>
  13. <body>
  14. <ul>
  15. <li>item1</li>
  16. <li>item2</li>
  17. <li>item3</li>
  18. <li>item4</li>
  19. <li>item5</li>
  20. </ul>
  21. </body>
  22. </html>

2、类选择器 class

  • 类选择器允许以一种独立于文档元素的方式来指定样式。

  • 该选择器可以单独使用,也可以与其他元素结合使用。

  • 在使用类选择器之前,需要修改具体的文档标记,以便类选择器正常工作

  • 为了将类选择器的样式与元素关联,必须将 class 指定为一个适当的值

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>选择器1: 简单选择器</title>
  6. <style>
  7. /* 2. 类选择器: 返回一组 */
  8. /* li[class="on"] {
  9. background-color: violet;
  10. } */
  11. /* class选择器可简化为 . */
  12. .on {
  13. background-color: violet;
  14. }
  15. </style>
  16. </head>
  17. <body>
  18. <ul>
  19. <li>item1</li>
  20. <li class="on">item2</li>
  21. <li>item3</li>
  22. <li class="on">item4</li>
  23. <li class="on">item5</li>
  24. </ul>
  25. </body>
  26. </html>

3、id选择器

  • 在一个 HTML 文档中,ID 选择器会使用一次,而且仅一次。

  • ID 选择器不能结合使用,因为 ID 属性不允许有以空格分隔的词列表。

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>选择器1: 简单选择器</title>
  6. <style>
  7. /* 3. id选择器: 返回一个 */
  8. /* li[id="foo"] {
  9. background-color: violet;
  10. } */
  11. /* 因为浏览器不检查id的唯一性,必须由开发者自行保证 */
  12. /* id选择器使用 # 简化 */
  13. #foo {
  14. background-color: violet;
  15. }
  16. </style>
  17. </head>
  18. <body>
  19. <ul>
  20. <li id="foo">item1</li>
  21. <li class="on">item2</li>
  22. <li id="foo">item3</li>
  23. <li class="on">item4</li>
  24. <li class="on">item5</li>
  25. </ul>
  26. </body>
  27. </html>

上下文选择器

1、后代选择器

  • 根据上下文选择元素我们可以定义后代选择器来创建一些规则,使这些规则在某些文档结构中起作用,而在另外一些结构中不起作用。
  • 在后代选择器中,规则左边的选择器一端包括两个或多个用空格分隔的选择器。选择器之间的空格是一种结合符(combinator)。每个空格结合符可以解释为“… 在 … 找到”、“… 作为 … 的一部分”、“… 作为 … 的后代”,但是要求必须从右向左读选择器
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>选择器2:上下文选择器</title>
  6. <style>
  7. /* 因为html是一个结构化的文档:每一个元素在文档中有确切的位置 */
  8. /* 所以根据元素的上下文环境来选择是完全没有问题的 */
  9. /* 1. 后代选择器: 所有层级 */
  10. ul li {
  11. background-color: lightblue;
  12. }
  13. </style>
  14. </head>
  15. <body>
  16. <ul>
  17. <li>item1</li>
  18. <li>item2</li>
  19. <li>item3</li>
  20. <li>item4
  21. <ul>
  22. <li>item4-1</li>
  23. <li>item4-2</li>
  24. <li>item4-3</li>
  25. </ul>
  26. </li>
  27. <li>item5</li>
  28. </ul>
  29. </body>
  30. </html>

2、子元素选择器

  • 与后代选择器相比,子元素选择器(Child selectors)只能选择作为某元素子元素的元素。
  • 如果您不希望选择任意的后代元素,而是希望缩小范围,只选择某个元素的子元素,请使用子元素选择器(Child selector)。
  • 子选择器使用了大于号(子结合符)。子结合符两边可以有空白符,这是可选的。
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>选择器2:上下文选择器</title>
  6. <style>
  7. /* 因为html是一个结构化的文档:每一个元素在文档中有确切的位置 */
  8. /* 所以根据元素的上下文环境来选择是完全没有问题的 */
  9. /* 2. 子元素选择器: 仅父子层级 */
  10. body>ul>li {
  11. background-color: teal;
  12. }
  13. </style>
  14. </head>
  15. <body>
  16. <ul>
  17. <li>item1</li>
  18. <li>item2</li>
  19. <li>item3</li>
  20. <li>item4
  21. <ul>
  22. <li>item4-1</li>
  23. <li>item4-2</li>
  24. <li>item4-3</li>
  25. </ul>
  26. </li>
  27. <li>item5</li>
  28. </ul>
  29. </body>
  30. </html>

3、同级相邻选择器

  • 相邻兄弟选择器,可选择紧接在另一元素后的元素,且二者有相同父元素。
  • 相邻兄弟选择器使用了加号(+),即相邻兄弟结合符
  • 与子结合符一样,相邻兄弟结合符旁边可以有空白符
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>选择器2:上下文选择器</title>
  6. <style>
  7. /* 因为html是一个结构化的文档:每一个元素在文档中有确切的位置 */
  8. /* 所以根据元素的上下文环境来选择是完全没有问题的 */
  9. /* 3. 同级相邻选择器: 仅选中与之相邻的第一个兄弟元素 */
  10. .start+li {
  11. background-color: lightgreen;
  12. }
  13. </style>
  14. </head>
  15. <body>
  16. <ul>
  17. <li>item1</li>
  18. <li class="start">item2</li>
  19. <li>item3</li>
  20. <li>item4
  21. <ul>
  22. <li>item4-1</li>
  23. <li>item4-2</li>
  24. <li>item4-3</li>
  25. </ul>
  26. </li>
  27. <li>item5</li>
  28. </ul>
  29. </body>
  30. </html>

4、同级所有选择器

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>选择器2:上下文选择器</title>
  6. <style>
  7. /* 因为html是一个结构化的文档:每一个元素在文档中有确切的位置 */
  8. /* 所以根据元素的上下文环境来选择是完全没有问题的 */
  9. /* 4. 同级所有选择器: 选中与之相邻的后面所有兄弟元素 */
  10. .start~li {
  11. background-color: yellow;
  12. }
  13. </style>
  14. </head>
  15. <body>
  16. <ul>
  17. <li>item1</li>
  18. <li class="start">item2</li>
  19. <li>item3</li>
  20. <li>item4
  21. <ul>
  22. <li>item4-1</li>
  23. <li>item4-2</li>
  24. <li>item4-3</li>
  25. </ul>
  26. </li>
  27. <li>item5</li>
  28. </ul>
  29. </body>
  30. </html>

上下文选择器总结:

  1. 空格: 所有层级
  2. > :父子级
  3. + :相邻的兄弟
  4. ~ :所有相邻兄弟

伪类选择器: 结构伪类,难点重点

  • 结构伪类是使用位置进行选择

  • 匹配任意位置的元素: :nth-of-type(an+b)

    • :nth-of-type(n) 选择器匹配属于父元素的特定类型的第 N 个子元素的每个元素.
    • n 可以是数字、关键词或公式。
    • an+b: an起点,b是偏移量, n的取值从0开始,n = (0,1,2,3…)
  • 反向获取任意位置的元素: nth-last-of-type(an+b)

    • :nth-last-of-type(n) 选择器匹配属于父元素的特定类型的第 N 个子元素的每个元素,从最后一个子元素开始计数
    • n 可以是数字、关键词或公式。
  • 选择第一个子元素::first-of-type

    • :first-of-type 选择器匹配属于其父元素的特定类型的首个子元素的每个元素。
    • 等同于 :nth-of-type(1)
  • 选中最后一个: :last-of-type
    • :last-of-type 选择器匹配属于其父元素的特定类型的最后一个子元素的每个元素。
    • 等同于 :nth-last-of-type(1)
  • 匹配父元素中唯一子元素,使用 :only-of-type

.html

  1. <ul>
  2. <li>item1</li>
  3. <li>item2</li>
  4. <li>item3</li>
  5. <li>item4</li>
  6. <li>item5</li>
  7. <li>item6</li>
  8. <li>item7</li>
  9. <li>item8</li>
  10. <li>item9</li>
  11. <li>item10</li>
  12. </ul>

匹配任意位置的元素:’:nth-of-type(an+b)’

.css

  1. /* 1. 匹配任意位置的元素: `:nth-of-type(an+b)` */
  2. /* an+b: an起点,b是偏移量, n的取值从0开始,n = (0,1,2,3...) */
  3. /* 匹配第3个li */
  4. ul li:nth-of-type(0n+3) {
  5. background-color: violet;
  6. }
  7. /* 简化写法:0乘以任何数都等于0,通常直接写偏移量就可以 */
  8. ul li:nth-of-type(3) {
  9. background-color: violet;
  10. }
  11. /* 选择所有元素 */
  12. ul li:nth-of-type(1n) {
  13. background-color: violet;
  14. }
  15. /* 如果只是为了全选,这样做没意义,还不如标签选择器来得直接,但是一旦带上偏移量就完全不同了 */
  16. ul li:nth-of-type(1n+3) {
  17. background-color: violet;
  18. }
  19. /* 1乘以任何数都等于自己,所以省去1 */
  20. ul li:nth-of-type(n+3) {
  21. background-color: violet;
  22. }
  23. ul li:nth-of-type(n+8) {
  24. background-color: violet;
  25. }

反向获取任意位置的元素: nth-last-of-type(an+b)

  1. /* 2. 反向获取任意位置的元素: `nth-last-of-type(an+b)` */
  2. ul li:nth-last-of-type(-n+3) {
  3. background-color: violet;
  4. }
  5. /* 我只选择倒数第3个,直接命中 */
  6. ul li:nth-last-of-type(3) {
  7. background-color: violet;
  8. }

选择所有索引为 偶数、奇数 的子元素

  1. /* 选择所有索引为偶数的子元素, 2,4,6,8... */
  2. ul li:nth-of-type(2n) {
  3. background-color: violet;
  4. }
  5. /* 2*0 = 0
  6. 2*1 = 2
  7. 2*2 = 4
  8. 2*3 = 6 */
  9. /* 选择所有索引为奇数的子元素, 1,3,5,7,9... */
  10. ul li:nth-of-type(2n-1) {
  11. background-color: violet;
  12. }
  13. /* 这里用2n+1也是对的,大家考虑一下为什么? */
  14. /* 偶数行: even */
  15. ul li:nth-of-type(even) {
  16. background-color: violet;
  17. }
  18. /* 奇数行: odd */
  19. ul li:nth-of-type(odd) {
  20. background-color: violet;
  21. }

选中第一个和最后一个

  1. /* 3.选择第一个子元素: :first-of-type */
  2. /* :nth-of-type(1) 的语法糖 :first-of-type */
  3. ul li:first-of-type {
  4. background-color: violet;
  5. }
  6. /* 3. 选中最后一个: :last-of-type */
  7. ul li:last-of-type {
  8. background-color: violet;
  9. }

如果只想匹配父元素中唯一子元素,使用 :only-of-type就可快速实现

html

  1. <ul>
  2. <li>item1</li>
  3. <li>item2</li>
  4. <li>item3</li>
  5. <li>item4</li>
  6. <li>item5</li>
  7. <li>item6</li>
  8. <li>item7</li>
  9. <li>item8</li>
  10. <li>item9</li>
  11. <li>item10</li>
  12. </ul>
  13. <ul>
  14. <li>我是一个流浪汉</li>
  15. </ul>

css

  1. /* 如果只想匹配父元素中唯一子元素,使用 :only-of-type就可快速实现 */
  2. ul li:only-of-type {
  3. background-color: violet;
  4. }

:nth-of-type(an+b)这是最核心的一个选择器,其它的相关选择器都是它的语法糖
:nth-last-of-type(), :first-of-type, :last-of-type,这些都是快捷方式

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post