博客列表 >CSS层叠样式表基础知识—选择器

CSS层叠样式表基础知识—选择器

李东亚¹⁸⁰³⁹⁵⁴⁰¹²⁰
李东亚¹⁸⁰³⁹⁵⁴⁰¹²⁰原创
2020年04月07日 15:42:26917浏览

CSS基础知识之选择器

一、选择器类型
1、CSS选择器类型可分为:简单选择器(含属性选择器)以及伪类选择器
2、简单选择器见表一:

序号 选择器 描述 举例
1 元素选择器 根据元素标签名称进行匹配 div {...}
2 群组选择器 同时选择多个不同类型的元素 h1,h2,h3{...}
3 通配选择器 选择全部元素,不区分类型 * {...}
4 属性选择器 根据元素属性进行匹配 *[...]
5 后代选择器 选择当前元素的所有后代元素空格 ul li{……}
6 父子选择器 选择当前元素的所有自带元素> form>section{……}
8 同级相邻选择器 选择当前拥有共同父级且相邻的元素+ li.item+li{……}
9 同级所有元素 选择拥有共同父级的后续所有元素~ li.item~li{………}

3、常有简单属性选择器:

常见属性选择器 举例
类选择器 .container{………}
id选择器 #first{……}

4、伪类选择器:结构伪类选择器和表单伪类选择器
5、结构伪类选择器
a、结构伪类选择器分为:不分类型匹配(:nth-child(n))和分类型匹配(:nth-of-type(n));
b、结构伪类参考表(n从1开始计算)

不分类匹配 分类匹配
匹配第一个元素 :first-child{……} :first-of-type{……}
匹配最后一个元素 :last-child{……} :last-of-type{……}
匹配任意元素 :nth-child(n){……} :nth-of-type(){……}

备注:匹配任意元素中n可以通过表达式来表示匹配一组元素,表达式中的n从0开始,且必须写在前面;-n表示获取前面一组元素,正数表示从指定元素获取余下元素;
6、表单选择器:

7、其他伪类选择器

选择器 描述
:active 向被激活的元素添加样式
:focus 向拥有键盘输入焦点的元素添加样式
:hover 当鼠标悬浮在元素上方时,向元素添加样式
:link 向未被访问的链接添加样式
:visited 向已被访问的链接添加样式
:root 根元素,通常是html
:empty 选择没有任何子元素的元素(含文本节点)
:not() 排除与选择器参数匹配的元素

二、代码实操练习

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>Document</title>
  7. <style>
  8. /* 元素选择器 */
  9. body {
  10. background-color: #e3e3e3;
  11. }
  12. /* 类选择器 */
  13. .container {
  14. width: 300px;
  15. height: 300px;
  16. display: grid;
  17. grid-template-columns: repeat(3, 1fr);
  18. gap: 5px;
  19. }
  20. /* 父子选择器 */
  21. .container > * {
  22. background-color: #80ffff;
  23. display: flex;
  24. justify-content: center;
  25. align-items: center;
  26. font-size: 20px;
  27. }
  28. /* 后代选择器 */
  29. .container * {
  30. /* border: 1px solid #ff0000; */
  31. }
  32. /* 伪类选择器 */
  33. .container > span:first-of-type {
  34. background-color: lightblue;
  35. }
  36. /* ID选择器 */
  37. #center {
  38. background-color: #ff00ff;
  39. }
  40. /*伪类选择器*/
  41. .container > :first-child {
  42. background-color: lightblue;
  43. }
  44. /*相邻同级选择*/
  45. #center + .item {
  46. background-color: red;
  47. }
  48. /* 伪类选择器 */
  49. .item:nth-child(n + 7) {
  50. background-color: lightgreen;
  51. }
  52. /*元素选择器*/
  53. fieldset {
  54. width: 400px;
  55. border: none;
  56. background-color: lightgreen;
  57. display: grid;
  58. grid-template-columns: 1fr;
  59. justify-items: center;
  60. gap: 15px;
  61. }
  62. /*其他伪类选择器,鼠标移动到选中*/
  63. fieldset:hover {
  64. box-shadow: 0 0 3px rosybrown;
  65. }
  66. fieldset > legend {
  67. text-align: center;
  68. width: 400px;
  69. margin: auto;
  70. font-size: 20px;
  71. color: green;
  72. font-weight: bolder;
  73. }
  74. section {
  75. width: 260px;
  76. margin: 10px auto;
  77. display: grid;
  78. grid-template-columns: 60px 1fr;
  79. }
  80. section:last-child {
  81. display: flex;
  82. justify-content: space-between;
  83. }
  84. /*表单选择器*/
  85. input:enabled {
  86. width: 200px;
  87. height: 20px;
  88. background: khaki;
  89. border-style: none;
  90. }
  91. /*表单选择器:获取焦点时选中*/
  92. input:focus {
  93. background-color: #fff;
  94. outline: none;
  95. }
  96. .button {
  97. width: 100px;
  98. height: 30px;
  99. }
  100. .button:hover {
  101. border: none;
  102. outline: none;
  103. background-color: royalblue;
  104. color: seashell;
  105. }
  106. </style>
  107. </head>
  108. <body>
  109. <div class="container">
  110. <div class="item">1</div>
  111. <div class="item">2</div>
  112. <div class="item">3</div>
  113. <div class="item">4</div>
  114. <span class="item" id="center">5</span>
  115. <span class="item">6</span>
  116. <span class="item">7</span>
  117. <span class="item">8</span>
  118. <span class="item">9</span>
  119. </div>
  120. <hr />
  121. <form action="">
  122. <fieldset>
  123. <legend>用户登陆</legend>
  124. <section>
  125. <label for="username">账号:</label>
  126. <input
  127. type="text"
  128. placeholder="explome@qq.com"
  129. id="username"
  130. name="username"
  131. required
  132. autofocus
  133. />
  134. </section>
  135. <section>
  136. <label for="pasword">密码:</label>
  137. <input
  138. type="password"
  139. name="password"
  140. id="password"
  141. placeholder="输入密码"
  142. reuqired
  143. />
  144. </section>
  145. <section>
  146. <button type="submit" class="button">登陆</button>
  147. <button type="reset" class="button">取消</button>
  148. </section>
  149. </fieldset>
  150. </form>
  151. </body>
  152. </html>

2、运行效果图:

总结:

1、css选择器虽然非常多,但经常用的并不多;最常见的由:元素选择器、类选择器和id选择器、伪类选择器(:nth-child(n):hoverinput:focus)等等
2、伪类选择器重点在::nth-child(n+2){……}在n表达式上的理解,偶数可以用even奇数可以用odd表示;
3、表单伪类选择器和链接伪类选择器,需要练习
4、特殊伪类::hover{……}input:focus:not()不包含选择器::not(span){……}

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