博主信息
博文 29
粉丝 0
评论 0
访问量 20960
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
CSS选择器权重和伪类选择器学习小结
P粉317509817
原创
842人浏览过

选择器权重

权重的概念:

将任何一个”选择器”视为由: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

将选中这些样式

批改老师:PHPzPHPz

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学