Blogger Information
Blog 8
fans 1
comment 0
visits 8880
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
三大种类选择器与伪类选择器还有伪元素的演示
BigPig
Original
1296 people have browsed it

三大种类选择器

简单选择器


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的所有演示!

Correcting teacher:WJWJ

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