Blogger Information
Blog 11
fans 0
comment 0
visits 4688
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
细说CSS选择器
昊森
Original
340 people have browsed it

基本选择器

根据元素的基本特征匹配元素

1.标签:tag
2.属性:[attr=value]
id、class是高频属性,有专用语法糖

id属性:#id
class属性:.class

标签选择器

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  7. <title>Document</title>
  8. <!-- 引入外部样式表 -->
  9. <link rel="stylesheet" href="/index.css" />
  10. </head>
  11. <body>
  12. <!-- 创建一个H2标签 -->
  13. <h2 class="head">你好,在线源码网</h2>
  14. </body>
  15. </html>

css代码

  1. /* 使用标签选择器将h2标签内的内容更改为红色 */
  2. h2 {
  3. color: red;
  4. }

属性选择器

  1. <!-- 创建一个H2标签 -->
  2. <h2 class="head">你好,在线源码网</h2>
  3. <!-- hr分隔符 -->
  4. <hr />
  5. <!-- 创建一个H2标签,他会默认红色,因为我们已经定义了h2等于红色,
  6. 所以他会默认全局h2都变成红色,所以我们要用到属性选择器 -->
  7. <h2 class="sety">昊森运维</h2>

css代码

  1. /* 使用标签选择器将h2标签内的内容更改为红色 */
  2. h2 {
  3. color: red;
  4. }
  5. /* 属性选择器 */
  6. h2[class="sety"] {
  7. color: aqua;
  8. }

ID选择器

id选择器其实和属性选择器没有太大区别

id的唯一性是由编程人员来保证的,浏览器只负责渲染。

  1. <!-- 创建一个H2标签 -->
  2. <h2 class="head">你好,在线源码网</h2>
  3. <!-- hr分隔符 -->
  4. <hr />
  5. <!-- 创建一个H2标签,他会默认红色,因为我们已经定义了h2等于红色,
  6. 所以他会默认全局h2都变成红色,所以我们要用到属性选择器 -->
  7. <h2 class="sety">昊森运维</h2>
  8. <hr />
  9. <!-- 创建id选择器 -->
  10. <h2 id="hs">你好</h2>

css代码

  1. /* 使用标签选择器将h2标签内的内容更改为红色 */
  2. h2 {
  3. color: red;
  4. }
  5. /* 属性选择器 */
  6. h2[class="sety"] {
  7. color: aqua;
  8. }
  9. /* id选择器 */
  10. h2[id="hs"] {
  11. color: blue;
  12. }


属性选择器和id选择器为高频属性,我们经常会用,所以代码我们可以适当的简化一点。

我们用.来代理class、用#来代替id,这样可以让代码更简洁,思路更清晰。

  1. /* 属性选择器 */
  2. h2[class="sety"] {
  3. color: aqua;
  4. }
  5. /* id选择器 */
  6. h2[id="hs"] {
  7. color: blue;
  8. }
  9. /* 属性选择器(简化) */
  10. h2.sety{
  11. color: coral;
  12. }
  13. h2#hs{
  14. color: fuchsia;
  15. }

上下文选择器

根据元素的层级和关系匹配元素

  1. 父子:>
    2.后代:空格
    3.兄弟:+
    4.同级:~
    class权重是很高的,所以为了降低权重我们需要采用一些技巧
  1. <!-- 上下文选择器 -->
  2. <ul class="list">
  3. <li class="hs">item1</li>
  4. <li class="hs">item2</li>
  5. <li class="hs">item3</li>
  6. <li class="hs">item4</li>
  7. <li class="hs zx">item5</li>
  8. <li class="hs">item6</li>
  9. <li class="hs">item7</li>
  10. <li class="hs">item8</li>
  11. </ul>

css代码

  1. /* 上下文选择器*/
  2. /* 一定要有查询的起点(入口)*/
  3. /* 1.父子关系 */
  4. .list > .hs {
  5. border: thin solid;
  6. }
  7. /* 2.后代选择器(空格) */
  8. .list .hs {
  9. color: aqua;
  10. }
  11. /* 定位某一条属性 */
  12. /* .list > .hs.zx + .hs {
  13. background: #000;
  14. } */
  15. /* 但是上面这一条定位属性权重会很高,我们还可以换一种方式写 */
  16. /* 权重越低,越容易被自定义样式覆盖 */
  17. /* .list > .hs.zx + * {
  18. background: #ff1;
  19. } */
  20. /* 同级选择器 */
  21. /* 这样会将.hs.zx之后的所有同级别元素都设置背景颜色 */
  22. /* 等于此处选择的6/7/8元素 */
  23. .list > .hs.zx ~ * {
  24. background: #ff1;
  25. }

伪类选择器

伪类选择器是根据元素的位置或状态匹配元素

结构伪类

  1. :nth-child():
  2. :first-child():
  3. :last-child():
  4. :nth-last-child():

状态伪类

通常用于链接与表单元素

  1. :hover:鼠标悬停
  2. :enabled:有效控件
  3. :disabled:禁用控件
  4. :checked:选中控件
  5. :required:必选控件
  6. `:focus:焦点控件
  1. <!-- 伪类选择器 -->
  2. <ul class="list">
  3. <li>itme1</li>
  4. <li>itme2</li>
  5. <li>itme3</li>
  6. <li>itme4</li>
  7. <li class="five">itme5</li>
  8. <li>itme6</li>
  9. <li>itme7</li>
  10. <li>itme8</li>
  11. <li>itme9</li>
  12. <li>itme10</li>
  13. </ul>

css代码

  1. /* !伪类选择器 结构*/
  2. /* 伪类选择器,最常用的就是结构伪类,用于查询子元素 */
  3. /* 这与上下文选择器非常相似,必须设置一个起点,否则从html开始查询 */
  4. /* 与上下文选择器相比,结构伪类要简洁很多,除起点元素外,几乎不需要在子元素上添加多余属性 */
  5. /* 获取第五个 */
  6. .list :nth-child(5) {
  7. background: #ff3;
  8. }
  9. /* 获取左后八个 */
  10. .list :nth-child(8) {
  11. background: #ff3;
  12. }
  13. /* 第一个和最后一个属于高频操作,经常用 */
  14. /* 获取第一个 */
  15. .list :first-child {
  16. background: #f09;
  17. }
  18. /* 获取左后一个 */
  19. .list :last-child {
  20. background: #f09;
  21. }
  22. /* 匹配前三个 */
  23. .list :nth-child(-n + 3) {
  24. background: #ff3;
  25. }
  26. /* 匹配第五个之后的所有 */
  27. /* 用上下文选择器的方式 */
  28. /* 这个是群组选择器的使用方式 */
  29. .list > .five,
  30. .list > .five ~ * {
  31. background: violet;
  32. }
  33. /* 用伪类的方式获取地址个之后的所有 */
  34. /* 可以对比出来那个更简单,更方便 */
  35. .list :nth-child(n + 5) {
  36. background: blue;
  37. }

nth-child()计算方式

:nth-of-type(an+b)

1、a:系数,[0、1、2、3、……]
2、n:参数,[0、1、2、3、……]
3、b:偏移量,从0 开始
规则:计算出来的索引必须是有效的(从1开始)
html代码

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  7. <title>Document</title>
  8. <!-- 引入外部样式表 -->
  9. <link rel="stylesheet" href="/index.css" />
  10. </head>
  11. <body>
  12. <ul class="list">
  13. <li>item1</li>
  14. <li>item2</li>
  15. <li>item3</li>
  16. <li>item4</li>
  17. <li>item5</li>
  18. <li>item6</li>
  19. <li>item7</li>
  20. <li>item8</li>
  21. <li>item9</li>
  22. <li>item10</li>
  23. </ul>
  24. </body>
  25. </html>

css代码

  1. /* 匹配元素的场景有两种
  2. 1、匹配一个
  3. 2、匹配一组 */
  4. /* a=0 : 匹配一个 */
  5. /* .list > :nth-child(0n + 1) {
  6. color: aqua;
  7. } */
  8. /* 0乘以任何数都是0,那么0n=0 0+1还是1 所以我们可以这样写 */
  9. .list > :nth-child(1) {
  10. color: aqua;
  11. }
  12. /* -------------------------- */
  13. /* a=1: 匹配一组 */
  14. .list > :nth-child(1n + 2) {
  15. color: blue;
  16. }
  17. /* 从第二个开始全部获取 */
  18. /* ---------------- */
  19. /* 只获取前三个:反选 */
  20. .list > :nth-child(-1n + 3) {
  21. color: black;
  22. }
  23. /* 1乘以任何数都不变,所以我们可以省略1, */
  24. /* 所以上面的两个我们可以直接省略1 */
  25. .list > :nth-child(n + 2) {
  26. color: blue;
  27. }
  28. .list > :nth-child(-n + 3) {
  29. color: black;
  30. }
  31. /* 偶数位 */
  32. /* 如果a=2会怎么样呢? */
  33. .list > :nth-child(2n) {
  34. background: #000;
  35. }
  36. /* 他会变成偶数,即2/4/6/8/10 */
  37. /* 2n可以用even关键字代替 */
  38. .list > :nth-child(even) {
  39. background: rgb(244, 0, 0);
  40. }
  41. /* 奇数2n+1 */
  42. .list > :nth-child(2n + 1) {
  43. background: rgb(54, 177, 60);
  44. }
  45. /* 获取倒数第四个之后的 */
  46. .list > :nth-last-child(-n + 4) {
  47. background: rgb(18, 192, 255);
  48. }

状态伪类

html代码

  1. <form action="">
  2. <fieldset>
  3. <legend>用户注册</legend>
  4. <input type="text" id="user" name="user" placeholder="用户名" />
  5. <input type="email" id="email" name="email" placeholder="邮箱" />
  6. <input type="password" id="pass" name="pass" placeholder="密码" />
  7. <div>
  8. <input type="checkbox" id="rem" />
  9. <label for="rem">记住我</label>
  10. </div>
  11. <button>提交</button>
  12. </fieldset>
  13. </form>

css代码

  1. fieldset {
  2. width: 20px;
  3. }
  4. /* 用户注册居中显示 */
  5. fieldset legend {
  6. text-align: center;
  7. }
  8. /* 当记住我为选中状态更改颜色 */
  9. input[type="checkbox"]:checked + label {
  10. color: aqua;
  11. }
  12. /* 设置按钮的基础样式 */
  13. button {
  14. border: none;
  15. outline: none;
  16. background: #2ba7ba;
  17. width: 170px;
  18. height: 25px;
  19. color: #fff;
  20. }
  21. /* 鼠标悬停至提交按键的时候按钮发生变化 */
  22. /* cursor: pointer;鼠标悬停变为小手 */
  23. /* opacity: 0.8;鼠标悬停调整透明度 */
  24. button:hover {
  25. cursor: pointer;
  26. opacity: 0.8;
  27. }
Correcting teacher:PHPzPHPz

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