博客列表 >三大种类选择器与伪类选择器还有伪元素的演示

三大种类选择器与伪类选择器还有伪元素的演示

BigPig
BigPig原创
2020年06月20日 19:08:351294浏览

三大种类选择器

简单选择器


1.元素选择器(也叫做标签选择器)
元素选择器是由元素来做选择器,然后去更改该标签的样式的
例如:

  1. <style>
  2. body{
  3. background-color:red;
  4. }
  5. </style>

是通过元素选择器将body的背景改为红色。

2.类选择器
类选择器是对应着HTML标签中的class属性的

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <style>
  8. .bgc {
  9. width: 200px;
  10. height: 200px;
  11. background-color: yellow;
  12. }
  13. </style>
  14. </head>
  15. <body>
  16. <div class="bgc"></div>
  17. </body>
  18. </html>

上面是通过类选择器来将body中的div标签绑定,然后将div的宽高设置为200px,将背景颜色设置为黄色,效果图如下:

3.id选择器
id选择器是对应着HTML标签中的id属性的
通过标签的id属性,将其与样式表中的id相绑定,然后更改其样式,代码如下

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <style>
  8. #bgc {
  9. width: 200px;
  10. height: 200px;
  11. background-color: yellow;
  12. }
  13. </style>
  14. </head>
  15. <body>
  16. <div id="bgc"></div>
  17. </body>
  18. </html>

总的来说,id选择器与类选择器的区别就是在于一个是以.或着#来声明是类选择器还是id选择器,现在id选择器很少用,更大部分还是推荐使用类选择器。

上下文选择器


为了更好的举例说明,这里我们将会用到grid布局来做九宫格来演示。
上下文选择器一共是有四种类型的选择器分别是

1.后代选择器
2.父子选择器
3.同级相邻选择器
4.同级所有选择器

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title></title>
  7. <style>
  8. .container {
  9. width: 300px;
  10. height: 300px;
  11. display: grid;
  12. grid-template-columns: repeat(3, 1fr);
  13. gap: 5px;
  14. }
  15. .item {
  16. font-size: 2rem;
  17. background-color: lightskyblue;
  18. display: flex;
  19. justify-content: center;
  20. align-items: center;
  21. }
  22. /* 1. 后代选择器: 空格 */
  23. .container div {
  24. border: 1px solid #000;
  25. }
  26. /*选择类属性值为.container下面的所有子级div添加1px黑色实线的边框*/
  27. /* 2. 父子选择器: > */
  28. body>div {
  29. background-color: yellow;
  30. }
  31. /*选择body标签下的第一个div,并且将背景色改为黄色*/
  32. /* 3. 同级相邻选择器 */
  33. .item.center+.item {
  34. background-color: lightgreen;
  35. }
  36. /*选中有.item.center复式类属性的div标签,将它下一个相邻的div背景颜色改为浅绿色*/
  37. /* 4. 同级所有选择器 */
  38. .item.center~.item {
  39. background-color: lightsalmon;
  40. }
  41. /**选中有.item.center复式类属性的div标签,将它以下的所有同级兄弟div的背景色改为浅珊瑚色*/
  42. </style>
  43. </head>
  44. <body>
  45. <div class="container">
  46. <div class="item">1</div>
  47. <div class="item">2</div>
  48. <div class="item">3</div>
  49. <div class="item">4</div>
  50. <div class="item center">5</div>
  51. <div class="item">6</div>
  52. <div class="item">7</div>
  53. <div class="item">8</div>
  54. <div class="item">9</div>
  55. </div>
  56. </body>
  57. </html>

效果图如下:

伪类选择器

伪类选择器(不分组)


  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title></title>
  7. <style>
  8. /* 使用九宫格来演示: grid布局实现 */
  9. .container {
  10. width: 300px;
  11. height: 300px;
  12. display: grid;
  13. grid-template-columns: repeat(3, 1fr);
  14. gap: 5px;
  15. }
  16. .item {
  17. font-size: 2rem;
  18. background-color: lightskyblue;
  19. display: flex;
  20. justify-content: center;
  21. align-items: center;
  22. }
  23. /* first-child是匹配.container下面的第一个子元素 */
  24. .container>*:first-child {
  25. background-color: lightgreen;
  26. }
  27. /* last-child是匹配.container下面的最后一个子元素 */
  28. .container> :last-child {
  29. background-color: lightpink;
  30. }
  31. /* :nth-child()是匹配任意一共子元素,值有后面括号中的参数决定 */
  32. .container> :nth-child(3) {
  33. background-color: limegreen;
  34. }
  35. </style>
  36. </head>
  37. <body>
  38. <div class="container">
  39. <div class="item">1</div>
  40. <div class="item">2</div>
  41. <div class="item">3</div>
  42. <div class="item">4</div>
  43. <div class="item">5</div>
  44. <div class="item">6</div>
  45. <div class="item">7</div>
  46. <div class="item">8</div>
  47. <div class="item">9</div>
  48. </div>
  49. </body>
  50. </html>

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>结构伪类选择器: 不分组(不区分元素类型)</title>
  7. <style>
  8. /* 使用九宫格来演示: grid布局实现 */
  9. .container {
  10. width: 300px;
  11. height: 300px;
  12. display: grid;
  13. grid-template-columns: repeat(3, 1fr);
  14. gap: 5px;
  15. }
  16. .item {
  17. font-size: 2rem;
  18. background-color: lightskyblue;
  19. display: flex;
  20. justify-content: center;
  21. align-items: center;
  22. }
  23. /* 选择排序为偶数的单元格,并为其单元格添加浅绿色背景。偶数用even表示 */
  24. .container> :nth-child(even) {
  25. background-color: limegreen;
  26. }
  27. /* 选择排序为奇数数的单元格,并为其单元格添加珊瑚色背景。奇数: odd */
  28. .container> :nth-child(odd) {
  29. background-color: salmon;
  30. }
  31. </style>
  32. </head>
  33. <body>
  34. <div class="container">
  35. <div class="item">1</div>
  36. <div class="item">2</div>
  37. <div class="item">3</div>
  38. <div class="item">4</div>
  39. <div class="item">5</div>
  40. <div class="item">6</div>
  41. <div class="item">7</div>
  42. <div class="item">8</div>
  43. <div class="item">9</div>
  44. </div>
  45. </body>
  46. </html>

伪类选择器(分组)

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>结构伪类选择器: 分组(不区分元素类型)</title>
  7. <style>
  8. /* 使用九宫格来演示: grid布局实现 */
  9. .container {
  10. width: 300px;
  11. height: 300px;
  12. display: grid;
  13. grid-template-columns: repeat(3, 1fr);
  14. gap: 5px;
  15. }
  16. .item {
  17. font-size: 2rem;
  18. background-color: lightskyblue;
  19. display: flex;
  20. justify-content: center;
  21. align-items: center;
  22. }
  23. /* 分组结构伪类分二步:
  24. 1. 元素按类型进行分组
  25. 2. 在分组中根据索引进行选择 */
  26. /* 选中div分组的最后一个div,将其背景颜色改为紫色 */
  27. .container div:last-of-type {
  28. background-color: violet;
  29. }
  30. /* 在sppan分组中选择第二个span并且将其颜色改为黄色 */
  31. .container span:nth-of-type(2) {
  32. background-color: yellow;
  33. }
  34. /* 前选择div的前三个并将背景颜色改为红色 */
  35. .container div:nth-of-type(-n + 3) {
  36. background-color: red;
  37. }
  38. /* 选择span的最后二个,将背景颜色改为紫色 */
  39. .container span:nth-last-of-type(-n + 2) {
  40. background-color: violet;
  41. }
  42. </style>
  43. </head>
  44. <body>
  45. <div class="container">
  46. <div class="item">1</div>
  47. <div class="item">2</div>
  48. <div class="item">3</div>
  49. <div class="item">4</div>
  50. <span class="item">5</span>
  51. <span class="item">6</span>
  52. <span class="item">7</span>
  53. <span class="item">8</span>
  54. <span class="item">9</span>
  55. </div>
  56. </body>
  57. </html>

target, :not, :before, :after, :focus的举例演示

target

target伪类是用于配合id实现锚点操作,先写一个表单,然后用一个a链接与表单绑定id,当target伪类被a链接点击激活时,显示表单。没有激活时隐藏表单,代码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>伪类与伪元素</title>
  7. <style>
  8. #login-form {
  9. display: none;
  10. }
  11. #login-form:target {
  12. display: block;
  13. }
  14. </style>
  15. </head>
  16. <body>
  17. <!-- <a href="#login-form">我要登录:</a> -->
  18. <button onclick="location='#login-form'">点击登录</button>
  19. <form action="" method="post" id="login-form">
  20. <label for="email">邮箱:</label>
  21. <input type="email" name="email" id="email" />
  22. <label for="password">密码:</label>
  23. <input type="password" name="password" id="password" />
  24. <button>登录</button>
  25. </form>
  26. </body>
  27. </html>

表单没有显示之前:

表单显示之后:

:not, :before, :after, :focus

not伪类的作用是排除不满足条件的元素
before是在元素前添加内容或者样式
after伪元素的作品用是在元素结尾添加一些样式
focus是在所绑定的表单获取焦点时可以为其设置样式
演示代码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>伪类与伪元素</title>
  7. <style>
  8. /* 当前文本框获取焦点的时候 */
  9. input:focus {
  10. background-color: yellow;
  11. }
  12. /* class值为list下的子级标签中第三个不满足条件除外,其他都为其添加样式 */
  13. .list> :not(:nth-of-type(3)) {
  14. color: yellow;
  15. }
  16. /*在class为list的元素前添加购物车,无法选中,并且其添加样式 */
  17. .list::before {
  18. content: "购物车";
  19. color: blue;
  20. font-size: 1.5rem;
  21. border-bottom: 1px solid #000;
  22. }
  23. /*在class为list的元素前添加结算,无法选中,并且其添加样式 */
  24. .list::after {
  25. content: "结算中...";
  26. color: red;
  27. font-size: 1.1rem;
  28. }
  29. /* 伪元素前面是双冒号, 伪类前能是单冒号 */
  30. </style>
  31. </head>
  32. <body>
  33. <form>
  34. <input type="text">
  35. </form>
  36. <ul class="list">
  37. <li>item1</li>
  38. <li>item2</li>
  39. <li>item3</li>
  40. <li>item4</li>
  41. </ul>
  42. </body>
  43. </html>

效果图:

以上就是 target, :not, :before, :after, :focus的所有演示!

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