Blogger Information
Blog 27
fans 0
comment 0
visits 19028
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
CSS选择器(基本+上下文+伪类)
茂林
Original
362 people have browsed it

选择器

概念:CSS 选择器规定了 CSS 规则会被应用到哪些元素上。
分类:

  • 基本选择器
  • 上下文选择器
  • 伪类选择器
    1. 结构伪类选择器
    2. 状态伪类选择器

一、基本选择器

根据元素名称与特征匹配应用到元素
标签:tag
属性:[attr = value]
id与class 是高频属性,有专用语法糖
1 标签和属性选择器应用

  1. <h1>Hello World</h1>
  2. <h2>Hello html</h2>
  3. <em>css 基本选择器</em>
  1. <!-- 1.1 tag 标签选择器 -->
  2. <!--将标签名称当作选择器使用 -->
  3. h1 {
  4. background-color: seagreen;
  5. }
  6. h2,
  7. em {
  8. color: blue;
  9. }

效果:
tag selector

  1. <!--1.2 属性选择器:`[attr = value]` -->
  2. <ul class="lists">
  3. <li class="one">选择器1</li>
  4. <li class="two">选择器2</li>
  5. <li class="three">选择器3</li>
  6. <li class="four">选择器4</li>
  7. <li class="five">选择器5</li>
  8. </ul>
  1. /* ul > li.three {
  2. color: aqua;
  3. } */
  4. /* li.three ===li[class="three"] */
  5. ul > li[class="three"] {
  6. color: red;
  7. }

效果:
selector attr

二、上下文选择器

概念:根据元素位置与层级匹配元素
分类:
1 父子: >
2 后代: 空格
3 兄弟: +
4 同级: ~
注意:一定要有查询的起点;比如以某个类开始,就可以查询该类下面的元素。
实例1 1 父子: >

  1. <ul class="items">
  2. <li class="it1">上下文选择器2</li>
  3. <li class="it2">上下文选择器3</li>
  4. <li class="it3">上下文选择器4</li>
  5. <li class="it4">上下文选择器1</li>
  6. <li class="it5">上下文选择器5</li>
  7. <li class="it6">上下文选择器6</li>
  8. </ul>
  9. <ul class="lists">
  10. <li class="one">选择器1</li>
  11. <li class="two">选择器2</li>
  12. <li class="three">选择器3</li>
  13. <li class="four">选择器4</li>
  14. <li class="five">选择器5</li>
  15. </ul>
  1. /* 1.父子选择器 */
  2. /* 将items类下面所有li加上边框和背景色 */
  3. ul.items > li {
  4. width: 150px;
  5. /* border: 1px solid red; */
  6. margin-top: 2px;
  7. background-color: lightblue;
  8. }
  9. /* 第三个背景色改绿色 */
  10. .lists > li.three {
  11. width: 150px;
  12. /* border: 2px solid blue; */
  13. background-color: seagreen;
  14. /* color: blue; */
  15. }

效果:
selector-content

实例2 后代: 空格

  1. <!-- 2 后代 空格 -->
  2. <ul class="items">
  3. <li class="it">上下文选择器2</li>
  4. <li class="it">上下文选择器3</li>
  5. <li class="it">上下文选择器4</li>
  6. <li class="it">
  7. <ul class="lists">
  8. 上下文选择器1
  9. <li class="it">选择器1</li>
  10. <li class="it">选择器2</li>
  11. <li class="it">选择器3</li>
  12. <li class="it">选择器4</li>
  13. <li class="it">选择器5</li>
  14. </ul>
  15. </li>
  16. <li class="it">上下文选择器5</li>
  17. <li class="it">上下文选择器6</li>
  18. </ul>
  1. /* 2. 后代: `空格`
  2. 查询的起点是items类,下面所有it 类的标签 加上浅蓝色边框
  3. */
  4. .items .it {
  5. width: 150px;
  6. border: 1px solid lightblue;
  7. margin: 2px;
  8. }

效果:
上下文选择器-后代

3 兄弟: +
邻接兄弟选择器(+)用来选中恰好处于另一个在继承关系上同级的元素旁边的物件。

  1. <ul class="items">
  2. <li class="it">上下文选择器1</li>
  3. <li class="it">上下文选择器2</li>
  4. <li class="it">上下文选择器3</li>
  5. <li class="it five">上下文选择器4</li>
  6. <li class="it">上下文选择器5</li>
  7. <li class="it">上下文选择器6</li>
  8. </ul>
  1. /* 3. 兄弟: `+`
  2. 定位结果查询其兄弟标签元素
  3. 通过 items>.it.five 类定位到下个li标签元素
  4. 上下文选择器5
  5. .items > .it.five + li === .items > .it.five + *
  6. * 星号可以匹配任意元素
  7. */
  8. .items > .it.five + * {
  9. width: 150px;
  10. border: 1px solid lightblue;
  11. margin: 2px;
  12. background-color: violet;
  13. }

效果:
brother
4 同级: ~
定位到元素.items > .it.five,查询其后面的所有元素

  1. <ul class="items">
  2. <li class="it">上下文选择器1</li>
  3. <li class="it">上下文选择器2</li>
  4. <li class="it">上下文选择器3</li>
  5. <li class="it five">上下文选择器4</li>
  6. <li class="it">上下文选择器5</li>
  7. <li class="it">上下文选择器6</li>
  8. </ul>
  1. .items > .it.five ~ * {
  2. width: 150px;
  3. border: 1px solid lightblue;
  4. margin: 2px;
  5. background-color: violet;
  6. }

效果:
同级

三、伪类选择器

概念:
伪类是添加到选择器的关键字,用于指定所选元素的特殊状态。例如,伪类 :hover 可以用于选择一个按钮,当用户的指针悬停在按钮上时,设置此按钮的样式。
伪类的使用说明
https://developer.mozilla.org/zh-CN/docs/Web/CSS/Pseudo-classes
分类:
1 结构伪类
2 状态伪类

结构伪类:常用的”结构伪类”,用于查询子元素

结构伪类的特点:
伪类选择器, 最常用的”结构伪类”,用于查询子元素
这与上下文选择器非常相似,必须设置一个查询起点,否则从html开始递归查询
与上下文选择器相比, 结构伪类,要简洁的多,除起点元素外,几乎不需要在子元素上添加多余属性
最常用的结构伪类:

  1. :nth-child(n):查询第n个子元素
  2. :first-child:查询第1个子元素,高频操作 是:nth-child(1)的语法糖
  3. nth-child(n + a):n代表
  4. :last-child:查询最后一个子元素,高频操作 是:nth-child(n)的语法糖,n代表最后一个子元素的序号。
  5. :nth-last-child()
  1. <ul class="items">
  2. <li>上下文选择器1</li>
  3. <li>上下文选择器2</li>
  4. <li>上下文选择器3</li>
  5. <li>上下文选择器4</li>
  6. <li>上下文选择器5</li>
  7. <li>上下文选择器6</li>
  8. </ul>

1 nth-child(n):用来查询任意一个子元素

1.1 查找第一个子元素

  1. /* 查找第一个子元素 */
  2. /* 查找第一个子元素 是最常用的,有语法糖*/
  3. /* .items > :nth-child(1) === .items > :first-child */
  4. /* .items > :nth-child(1) {
  5. width: 150px;
  6. background-color: lightblue;
  7. } */
  8. .items > :first-child {
  9. width: 150px;
  10. background-color: lightblue;
  11. }

效果:
伪类定位第一个子元素

1.2 查询最后一个子元素

  1. /* 查找最后一个子元素 ,常用有语法糖
  2. .items > :nth-child(6) === .items > :last-child
  3. */
  4. /* .items > :nth-child(6) {
  5. width: 150px;
  6. background-color: lightblue;
  7. } */
  8. .items > :last-child {
  9. width: 150px;
  10. background-color: lightblue;
  11. }

效果:
selector-fake-last
1.3 查询任意一个子元素

  1. /* 查询任意一个子元素,
  2. 只需要在:nth-child(n),将参数n改为查询子元素的序号 ,比如第3个子元素
  3. */
  4. .items > :nth-child(3) {
  5. width: 150px;
  6. background-color: lightblue;
  7. }

效果:

状态伪类: 常用于链接与表单元素

更多查询 MDN

  1. :hover: 鼠标悬停
  2. :enabled: 有效控件
  3. :disabled: 禁用控件
  4. :checked: 选中控件
  5. :required: 必选控件
  6. :focus: 焦点控件

状态伪类实现一个下拉菜单功能

  1. <div class="box">
  2. <label for="menu">项目类型</label>
  3. <input type="checkbox" name="xxxx" id="menu" />
  4. <ul>
  5. <li><a href="">项目1</a></li>
  6. <li><a href="">项目2</a></li>
  7. <li><a href="">项目3</a></li>
  8. <li><a href="">项目4</a></li>
  9. </ul>
  10. </div>
  1. 1. 将复选框的状态与下拉菜单进行绑定
  2. 2. 根据复选框的状态,确定下拉菜单是否显示?
  3. */
  4. /* 1. 初始化 */
  5. /* (1)隐藏复选框 */
  6. #menu {
  7. display: none;
  8. }
  9. /* (2)隐藏下拉菜单 */
  10. #menu + ul {
  11. display: none;
  12. }
  13. /* 更新复选框的状态: 选中或未选中 */
  14. #menu:checked + ul {
  15. display: block;
  16. }
  17. .box {
  18. display: inline-grid;
  19. position: relative;
  20. color: white;
  21. }
  22. /* 下拉菜单名的样式 */
  23. .box label {
  24. background-color: lightblue;
  25. padding: 5px 10px;
  26. text-align: center;
  27. }
  28. .box label:hover {
  29. cursor: pointer;
  30. }
  31. .box li {
  32. list-style: none;
  33. }
  34. .box li a {
  35. text-decoration: none;
  36. color: #444;
  37. font-size: 13px;
  38. }
  39. .box li a:hover {
  40. color: orangered;
  41. font-weight: bolder;
  42. background-color: lightblue;
  43. }
  44. .box ul {
  45. margin: 0;
  46. padding: 10px 0;
  47. padding-left: 10px;
  48. border: 1px solid #aaa;
  49. box-shadow: 3px 3px 3px #aaa;
  50. text-align: center;
  51. }

效果:
menu

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