Blogger Information
Blog 29
fans 0
comment 0
visits 14060
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
CSS选择器权重和伪类选择器学习小结
P粉317509817
Original
618 people have browsed it

选择器权重

权重的概念:

将任何一个”选择器”视为由:id,class,tag组成的 3 位整数

1. 现在生成一个div和div下的一个h1标签

  1. <div class="window">
  2. <h1 id="leteral" class="leteracy">hello world</h1>
  3. </div>

其中导入CSS文件:

  1. div {
  2. background-color: red;
  3. width: 200px;
  4. }
  5. div > h1 {
  6. color: blue;
  7. }

此时div标签的样式的权重是:0个id,0个class,1 个标签 ——(0,0,1)
h1标签的权重是: 0个id,0个class,2 个标签 ——(0,0,2)

效果:

2. 现在改变字的颜色

  1. div {
  2. background-color: red;
  3. width: 200px;
  4. }
  5. div > h1 {
  6. color: blue;
  7. }
  8. div > h1 {
  9. color: cyan;
  10. }

这里通过后写样式覆盖先前的样式将字的颜色经行改变

效果:

3. 现在想将字改回原来的颜色

有两种方法:
  • 第一种是继续使用后写的样式去覆盖先前的样式
  • 第二种就是改变样式的权重
  1. div {
  2. background-color: red;
  3. width: 200px;
  4. }
  5. div > h1.leteracy {
  6. color: blue;
  7. }
  8. div > h1 {
  9. color: cyan;
  10. }

现在div > h1.leteracy的权重是:0个id,1个class,2个tagName —— (0,1,2)

而先前div > h1的权重是:0个id,0个class,2个tagName —— (0,0,2)

显然(0,1,2) > (0 , 0 ,2)

通过这样的写法,css通过选择器的权重从而可以忽略书写的顺序

效果:

4. 调试样式

在样式后加 !important 从而忽略样式的权重
  1. div {
  2. background-color: red;
  3. width: 200px;
  4. }
  5. div > h1.leteracy {
  6. color: blue;
  7. }
  8. div > h1 {
  9. color: cyan !important;
  10. }

此时虽然上一个h1的权重大于后一个的权重,但是后一个样式中加了!important就只显示后一个的样式

效果:

伪类选择器

注意:在计算权重时,伪类任然算是class级别

结构伪类

1. 生成一个无序列表

  1. <ul class="list">
  2. <li class="item1">item1</li>
  3. <li class="item2">item2</li>
  4. <li class="item3">item3</li>
  5. <li class="item4">item4</li>
  6. <li class="item5">item5</li>
  7. <li class="item6">item6</li>
  8. <li class="item7">item7</li>
  9. <li class="item8">item8</li>
  10. <li class="item9">item9</li>
  11. <li class="item10">item10</li>
  12. <li class="item11">item11</li>
  13. <li class="item12">item12</li>
  14. <li class="item13">item13</li>
  15. <li class="item14">item14</li>
  16. <li class="item15">item15</li>
  17. </ul>
效果:

2.改变全部样式:

写法一:

  1. ul {
  2. width:100px;
  3. background-color: black;
  4. }
  5. ul>li {
  6. color:aqua;
  7. background-color: violet;
  8. }
效果:


写法二:
使用伪类:匹配分组的任意位置的子元素th-of-type(n)

  1. ul {
  2. width:100px;
  3. background-color: black;
  4. }
  5. ul>:nth-of-type(n) {
  6. color:aqua;
  7. background-color: violet;
  8. }

效果和上图一样

3改变部分样式:

使用伪类改变前5个的样式
  1. ul {
  2. width:100px;
  3. background-color: black;
  4. }
  5. ul>:nth-of-type(-n+5) {
  6. color:aqua;
  7. background-color: violet;
  8. }
效果:

使用伪类改变后5个样式:
  1. ul {
  2. width:100px;
  3. background-color: black;
  4. }
  5. ul>:nth-last-of-type(-n+5) {
  6. color:aqua;
  7. background-color: violet;
  8. }
效果:

使用伪类改变奇数个的样式:
  1. ul {
  2. width:100px;
  3. background-color: black;
  4. }
  5. ul>:nth-of-type(odd) {
  6. color:aqua;
  7. background-color: violet;
  8. }
效果:

参数解释:

:nth-of-type(an+b):

a=[0,1,2….]
n=[0,1,2,….]
b为偏置量

如 -n+3 :

-n result
0 5
-1 4
-2 3
-3 2
-4 1

忽略 =< 0 的数字
即改变前五个的样式
将其改成:nth-last-type-(an+b):一样的参数就会变成后五个

又如:
:nth-of-type(-2n+15):

n -2n+15
0 15
1 13
2 11
3 9
4 7
5 5
6 3
7 1

将选中这些样式

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