image.png
    属性选择器

    Element[attr ^= “value” ] 属性以字符串开头
    Element[attr $= “value” ] 属性以字符串开头
    Element[attr ~= “value” ] 属性以字符串开头
    image.png
    伪类选择器

    :root 的优先级大于 html
    :hover
    :not([textIndent $= “first”]) 查找textIndent 不是以first结尾的元素
    :not([textIndent ^= “first”]) 查找textIndent 不是以first开头的元素

    :not 中选择器的权重问题
    :not (div > a) 非div下的a

    :empty 选择器 查找 真正是空的元素 内部没有任何文本节点
    image.png
    :target 用户选中某个锚点之后 将找到的那个元素应用上特定的样式

    :nth-child(an + b)以a为循环的个数,b为基数

    :first-child 查找相同级别下面第一次出现的元素

    1. 结构选择器:
      1. 属性选择器
        1. Element[attr ^= “value” ] 属性以字符串开头
        2. Element[attr $= “value” ] 属性以字符串开头
        3. Element[attr ~= “value” ] 属性以字符串开头
      2. 伪类选择器
        1. :nth-child
        2. :nth-of-type
        3. :not
        4. :target
        5. :empty
    2. UI元素状态伪类选择器
      1. :active
      2. :hover
      3. :focus
      4. :enabled
      5. :disabled
      6. :read-only 只读
      7. :read-write 可读写
      8. :checked 选中状态
      9. :default 当前浏览器被打开的时候当前被指定的默认样式是什么。
      10. :indetermate
      11. :first-letter 必须是块级元素
      12. :first-line 必须是块级元素
    3. 关系选择器
      1. E F 后代选择器
      2. E > F 直接子元素选择器

    禁用 disabled
    只读 readonly
    在表单中的唯一作用就是 readonly 可以被提交 disabled不会被提交.
    readonly选择器的值会覆盖disabled
    read-write 可以作用于disabled

    1. <!DOCTYPE html>
    2. <html lang="en">
    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>选择器</title>
    8. <style>
    9. /* :not(div > a) {
    10. color: aquamarine;
    11. } */
    12. /* 空 */
    13. .box{
    14. width: 100px;
    15. height: 100px;
    16. background-color: brown;
    17. color: #fff;
    18. }
    19. .box:empty{
    20. color: #000;
    21. background-color: blue;
    22. }
    23. /* 用户选中某个锚点之后 将找到的那个元素应用上特定的样式 */
    24. :target{
    25. background-color: black;
    26. }
    27. p:nth-child(4n + 1){
    28. background-color: #aaa;
    29. }
    30. p:nth-child(4n + 2){
    31. background-color: blue;
    32. }
    33. p:nth-child(4n + 3){
    34. background-color: purple;
    35. }
    36. p:nth-child(4n + 4){
    37. background-color: chartreuse;
    38. }
    39. p:nth-child(4n + 5){
    40. background-color: salmon;
    41. }
    42. /* nth-child */
    43. div.last :first-child{
    44. background-color: red;
    45. }
    46. /* nth-of-type */
    47. div.last :first-of-type{
    48. background-color: salmon;
    49. }
    50. .box2 :only-child{
    51. color: salmon;
    52. }
    53. /* UI元素状态伪类选择器 */
    54. .box3 > input:hover{
    55. color: salmon;
    56. }
    57. .box3 > input:focus{
    58. color: salmon;
    59. }
    60. /* 鼠标按住不动的颜色 */
    61. .box3 > input:active{
    62. color: blue;
    63. }
    64. .box3 > input:disabled{
    65. background-color: #aaa;
    66. }
    67. .box3 > input:enabled{
    68. background-color: #fff;
    69. }
    70. .box3 > input:read-only{
    71. background-color: #ccc;
    72. color: red;
    73. outline: none;
    74. border: none;
    75. }
    76. .box3 > input:read-write{
    77. background-color: green;
    78. }
    79. .box3 > input[type = "radio"]:checked{
    80. outline: 2px solid #000;
    81. }
    82. .box3 > input[type = "radio"]:default{
    83. outline: 0px solid #000;
    84. }
    85. .box3 > input[type = "checkbox"]:checked{
    86. outline: 2px solid #000;
    87. }
    88. .box3 > input[type = "checkbox"]:default{
    89. outline: 10px solid #000;
    90. }
    91. /* indeterminate 不确定 */
    92. .box4 > :indeterminate :indeterminate + label{
    93. background-color: greenyellow;
    94. }
    95. .box5 > p::first-letter{
    96. color: red;
    97. font-size: 18px;
    98. text-transform: uppercase;
    99. }
    100. .box5 > :nth-of-type(2)::first-line{
    101. color: red;
    102. }
    103. .box5 > p::selection{
    104. color: forestgreen;
    105. background-color: gold;
    106. }
    107. /* 直接子元素选择器*/
    108. .box6 > span{
    109. color: gold;
    110. }
    111. span {
    112. color: green;
    113. }
    114. /* */
    115. </style>
    116. </head>
    117. <body>
    118. <h1>:not</h1>
    119. <a href="">我是非table下的a</a>
    120. <table>
    121. <a href="">我是table下的a</a>
    122. <tr>
    123. <td> <a href="">td下的a</a></td>
    124. </tr>
    125. </table>
    126. <div>
    127. <a href="">我是div下的a</a>
    128. </div>
    129. <!-- empty -->
    130. <hr>
    131. <h1>empty</h1>
    132. <div class="box">
    133. <hr>
    134. <!-- 我是换行的注释节点 -->
    135. </div>
    136. <div class="box"><!-- 我是注释节点 --></div>
    137. <div class="box">我是普通文本节点</div>
    138. <hr>
    139. <h1>锚点选择器</h1>
    140. <!-- 锚点选择器 -->
    141. <div id="one">one</div>
    142. <div id="two">two</div>
    143. <div id="three">three</div>
    144. <div id="four">four</div>
    145. <a href="#one">one</a>
    146. <a href="#two">two</a>
    147. <a href="#three">three</a>
    148. <a href="#four">four</a>
    149. <hr>
    150. <h1>
    151. nth-child
    152. </h1>
    153. <!-- nth-child -->
    154. <p>1</p>
    155. <p>2</p>
    156. <p>3</p>
    157. <p>4</p>
    158. <p>5</p>
    159. <p>6</p>
    160. <p>7</p>
    161. <p>8</p>
    162. <hr>
    163. <!--
    164. /* nth-of-type */
    165. div.last :first-of-type{
    166. background-color: salmon;
    167. }
    168. -->
    169. <h1>
    170. nth-of-type
    171. </h1>
    172. <div class="last">
    173. <span>这是span1</span>
    174. <span>这是span2</span>
    175. <span>这是<em>嵌套em的span</em></span>
    176. <span>这是<span>嵌套span</span>的span</span>
    177. <em>这是em</em>
    178. <span>这个是最后一个span</span>
    179. </div>
    180. <!-- only-child -->
    181. <hr>
    182. <h1>only-child</h1>
    183. <div class="box2">
    184. <div>
    185. <i>只有一个子元素</i>
    186. </div>
    187. <div>
    188. <i>我是第一个子元素</i>
    189. <em>我是em标签</em>
    190. <span>
    191. 我有一个
    192. <span>span</span>
    193. </span>
    194. </div>
    195. </div>
    196. <hr>
    197. <h1>
    198. a标签伪类
    199. </h1>
    200. <a href="">这个是a标签</a>
    201. <input type="text">
    202. <!-- UI元素状态伪类选择器 -->
    203. <hr>
    204. <h1>
    205. UI元素状态伪类选择器
    206. </h1>
    207. <div class="box3">
    208. <input type="text" value="enabled" enabled/>
    209. <input type="text" value="disabled" disabled/>
    210. <input type="text" value="read-only" readonly/>
    211. <input type="text" value="read-write" readwrite />
    212. <input type="radio" />
    213. <input type="checkbox" id="read" checked disabled/>
    214. <label for="read">read</label>
    215. <input type="checkbox" id="tourist"/>
    216. <label for="tourist">tourist</label>
    217. </div>
    218. <hr>
    219. <h1>indeterminate</h1>
    220. <div class="wrap">
    221. <div class="box4">
    222. <input type="checkbox" id="radio">
    223. <label for="radio">radio</label>
    224. </div>
    225. <div class="box4">
    226. <input type="checkbox" id="checkbox" checked>
    227. <label for="checkbox">checkbox</label>
    228. </div>
    229. </div>
    230. <hr>
    231. <h1>first-letter</h1>
    232. <div class="box5">
    233. <p class="test">这是为了测试
    234. 这是为了测试
    235. 这是为了测试
    236. 这是为了测试
    237. 这是为了测试
    238. </p>
    239. <p class="test">这是为了测试
    240. 这是为了测试
    241. 这是为了测试
    242. 这是为了测试
    243. 这是为了测试
    244. </p>
    245. <p class="test">today is a nice day
    246. today is a nice day
    247. today is a nice day
    248. today is a nice day
    249. today is a nice day
    250. </p>
    251. </div>
    252. <hr>
    253. <h1>后代选择器</h1>
    254. <div>
    255. <span></span>
    256. </div>
    257. <hr>
    258. <h1>直接后代选择器</h1>
    259. <div>
    260. <span>
    261. <span>我是span里面的span</span>
    262. </span>
    263. </div>
    264. <script>
    265. var oInputs = document.getElementsByClassName('wrap')[0].querySelectorAll("input");
    266. oInputs.forEach(item=>{
    267. item.indeterminate = true;
    268. })
    269. </script>
    270. </body>
    271. </html>