博客列表 >css引入方式与选择器

css引入方式与选择器

Jason药师
Jason药师原创
2020年12月19日 09:51:36534浏览

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,这些都是快捷方式

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议