Blogger Information
Blog 53
fans 3
comment 0
visits 46781
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
前端简单选择器、上下文选择器和伪类选择器
emagic
Original
725 people have browsed it

0615作业

一、 举例演示简单选择器,上下文选择器

1.简单选择器

  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. .day {
  9. font-size: 2rem;
  10. background-color: lightskyblue;
  11. display: flex;
  12. justify-content: center;
  13. align-items: center;
  14. }
  15. /* 简单选择器 */
  16. /* 元素选择器: 标签选择器 */
  17. body {
  18. background-color: lightcyan;
  19. }
  20. /* 类选择器: 通过class属性定位 */
  21. .day {
  22. border: 1px solid #000;
  23. }
  24. /* id选择器 */
  25. #first {
  26. background-color: lightpink;
  27. }
  28. /* * :属于元素级别
  29. 元素 < class < id */
  30. /* id,class可以添加到任何元素上,所以可以省略 */
  31. </style>
  32. </head>
  33. <body>
  34. <div class="container">
  35. <div class="day" id="first">星期一</div>
  36. <div class="day">星期二</div>
  37. <div class="day">星期三</div>
  38. <div class="day">星期四</div>
  39. <div class="day">星期五</div>
  40. <div class="day">星期六</div>
  41. <div class="day">星期日</div>
  42. </div>
  43. </body>
  44. </html>

简单选择器

2.上下文选择器

  • 后代选择器效果:

    1. /* 后代选择器: 空格 */
    2. body div {
    3. border: 5px solid coral;
    4. }

  • 父子选择器效果:

    1. /* 父子选择器: > */
    2. body > div {
    3. border: 5px solid coral;
    4. }

    父子选择器

  • 同级相邻选择器效果:

    1. /* 同级相邻选择器 */
    2. .day.friday + .day {
    3. background-color: lightgreen;
    4. }

    同级相邻

  • 同级所有选择器效果

    1. /* 4. 同级所有选择器 */
    2. .day.friday ~ .day {
    3. background-color: lightsalmon;
    4. }

    同级所有

    二、 举例演示结构伪类选择器(不分组与分组)

1.结构伪类选择器(不分组)练习

  1. /* 匹配第一个子元素 */
  2. .container > :first-child {
  3. /*子元素直接指定,精确控制>:first-child,不要用空格,即便用了,first-child也只能取到子元素,但是代码不清晰*/
  4. background-color: red;
  5. }
  6. /* 最后一个子元素 */
  7. .container > :last-child {
  8. background-color: violet;
  9. }
  10. /* 选第3个: 索引是从1开始 */
  11. .container > :nth-child(3) {
  12. background-color: yellow;
  13. }

不分组1

隔行(奇/偶)

  1. /* 偶数用even表示 */
  2. .container > :nth-child(even) {
  3. background-color: limegreen;
  4. }
  5. /* 奇数: odd */
  6. .container > :nth-child(odd) {
  7. background-color: salmon;
  8. }

奇偶

从前往后数取2个,从后往前数取2个,倒数取第3个

  1. /* 只取前三个 */
  2. .container .day:nth-child(-n + 2) {
  3. background-color: red;
  4. }
  5. /* -0 + 3 = 3
  6. -1 + 3 = 2
  7. -2 + 3 = 1 序号为0就跳出不再取*/
  8. /* 只取最后三个 */
  9. .container .day:nth-last-child(-n + 2) {
  10. background-color: blue;
  11. }
  12. /* 取倒数第3个,用倒数的方式更直观 */
  13. .container .day:nth-last-child(3) {
  14. background-color: yellow;
  15. }

2.结构伪类选择器(分组)练习

html代码

  1. <body>
  2. <div class="container">
  3. <div class="day">星期一</div>
  4. <div class="day">星期二</div>
  5. <div class="day">星期三</div>
  6. <span class="day">星期四</span>
  7. <span class="day">星期五</span>
  8. <span class="day">星期六</span>
  9. <span class="day">星期日</span>
  10. </div>
  11. </body>

css代码

  1. <style>
  2. .day{
  3. font-size: 2rem;
  4. background-color: lightskyblue;
  5. display: flex;
  6. justify-content: center;
  7. align-items: center;
  8. }
  9. /* 分组结构伪类分二步:
  10. 1. 元素按类型进行分组
  11. 2. 在分组中根据索引进行选择 */
  12. .container div:first-of-type {
  13. background-color: red;
  14. }
  15. /* 在分组中匹配任何一个 */
  16. .container span:nth-of-type(2) {
  17. background-color: violet;
  18. }
  19. /* 前2个 */
  20. .container span:nth-of-type(-n + 2) {
  21. background-color: yellow;
  22. }
  23. /* div最后2个,实际效果并非星期六、日,而是二三 */
  24. .container div:nth-last-of-type(-n + 2) {
  25. background-color: green;
  26. }
  27. </style>

分组

三、举例演示:target, :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. #login-form {
  9. display: none;
  10. }
  11. /* :target: 必须id配合,实现锚点操作 */
  12. /* 当前#login-form的表单元素被a的锚点激活的时候执行 */
  13. #login-form:target {
  14. display: block;
  15. }
  16. /* :focus: 当获取焦点的时候执行,改变样式 */
  17. input:focus {
  18. background-color: yellow;
  19. }
  20. /* ::selection: 设置选中文本的前景色与背景色 */
  21. input::selection {
  22. color: white;
  23. background-color: blue;
  24. }
  25. /* :not(): 用于选择不满足条件元素 */
  26. .list > :not(:nth-of-type(2)) {
  27. color: red;
  28. }
  29. /* ::before 这里在内容就没有出现在HTML中,而是由浏览器加载样式后生成的*/
  30. .list::before {
  31. content: "我的地址管理";
  32. color: blue;
  33. font-size: 1.5rem;
  34. border-bottom: 1px solid #000;
  35. }
  36. /* ::after 这里在内容就没有出现在HTML中,而是由浏览器加载样式后生成的*/
  37. .list::after {
  38. content: "验证码发送中...";
  39. color: green;
  40. font-size: 1.1rem;
  41. }
  42. /* 伪元素前面是双冒号, 伪类前能是单冒号 */
  43. </style>
  44. </head>
  45. <body>
  46. <!-- <a href="#login-form">我要登录:</a> -->
  47. <button onclick="location='#login-form'">点击登录</button>
  48. <!-- 把按钮变成锚点,通过点击事件跳转绑定 -->
  49. <form action="" method="post" id="login-form">
  50. <label for="email">邮箱:</label>
  51. <input type="email" name="email" id="email" />
  52. <label for="password">密码:</label>
  53. <input type="password" name="password" id="password" />
  54. <button>登录</button>
  55. </form>
  56. <hr />
  57. <ul class="list">
  58. <li>地址1</li>
  59. <li>地址2</li>
  60. <li>地址3</li>
  61. <li>地址4</li>
  62. <li>地址5</li>
  63. </ul>
  64. </body>
  65. </html>

伪元素

课堂复习心得小结

1.简单选择器

序号 简单选择器名称 特征 示例写法
1 元素选择器/标签选择器 通过标签定位 元素名称。如 body {}或者ul {}
2 类选择器 对应html标签中的class属性定位 以.点开头。如 .item
3 id选择器 通过对应的id名称定位 以#开头加id名称。如 #idname
4 多个类可以复合使用 多个类的元素定位,两个类名要连起来中间无空格 .item.nav {background-color:red;}

2.上下文选择器

序号 上下文选择器名称 特征 示例写法
1 后代选择器 父元素下的所有后代均生效 祖先元素 空格 后代元素。如 .container div {}
2 父子选择器 父子关系,不含孙子辈 以>大于号表示。如 body>div{}
3 同级相邻/兄弟选择器 往下找一个同级元素,注意是向下仅找一个就停止了 以+连接。如 .item + .center
4 同级所有选择器 往下找全部同级元素,注意是向下找,找弟弟妹妹 以~波浪线连接。如.item.nav ~.item {}

3.结构伪类选择器(不分组)

序号 结构选择器名称 特征 示例写法
1 匹配第一个子元素 不分组 父元素:first-child
2 匹配最后的子元素 不分组 父元素 >:last-child
3 选第n个 不分组 父元素>:nth-child(n)
4 只选偶数/奇数 不分组 父元素>:nth-child(even/odd),应用场景:表格隔行变色
5 从指定位置(从第n个开始),选择剩下的所有元素 不分组 .day:nth-child(n + 4)
6 从前往后数连续取n个 不分组 :nth-child(-n + 3)
7 从后往前数连续取n个 不分组 :nth-last-child(-n + 2)
8 倒数取第n个(不连续) 不分组 :nth-last-child(2)

4.结构伪类选择器(分组)

序号 结构选择器名称 特征 示例写法
1 匹配第一个子元素 分组 组别:first-of-type
2 匹配最后的子元素 分组 组别:last-of-type
3 在分组中匹配任何一个 分组 组别:nth-of-type(n)
4 从前往后连续k个 分组 组别:nth-of-type(-n + k)
5 从后往前连续k个 分组 组别:nth-last-of-type(-n + k)
6 倒数取第n个(不连续) 分组 组别:nth-last-of-type(n)

如果不指定具体父元素,就是从html开始,按文件流递归查询符合条件的元素变更式样,哪怕是meta这些设置都无效的元素也会带上样式属性。建议设置指定具体父元素,在具体父元素上调用,防止递归

注意:-n开头就是从0计算。其余从1开始计算。公式中,n必须写在前面,如nth-child(n + 4)不可以写成nth-child(4 + n)否则不生效

5.伪类与伪元素

序号 伪类/伪元素 特征 示例写法
1 :target 必须与id配合,实现锚点操作 #login-form:target {display: block;}
2 :focus 当获取焦点时执行改变样式 input:focus { background-color: yellow;}
3 ::selection 只允许设置选中文本的前景色和背景色 input::selection {color: white;background-color: red;}
4 :not 用于选择不满足条件的元素 .list > :not(:nth-of-type(3)) {color: red;}
5 ::before 所谓伪元素就是指页面中部存在而浏览器中存在的元素 .list::before {content: “我的地址管理”;color: blue;}
6 ::after 伪元素,可用于页脚等 .list::after {content: “验证码发送中…”;}

伪元素前面是双冒号::而伪类前面是单冒号:

6.注意事项

优先级:元素 < class < id

  • id,class可以添加到任何元素上,所以可以省略, 属于元素级别,有限定的情况下如.item#first优先级大于没有限定的#first(相当于*#first),因为class优先于元素标签级别。

  • 层叠样式表, 相同元素,后面追加的样式会覆盖前面的样式

  • 所谓伪元素就是指页面中部存在而浏览器中存在的元素。

  • :target 必须与id配合,实现锚点操作

  • 伪类与伪元素可以实现以往一些js的功能

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