视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
css样式覆盖顺序在样式表中的实例分享
2020-11-27 18:50:29 责编:小采
文档

有时候在写CSS的过程中,某些总是不起作用,这就涉及了CSS样式覆盖的问题,如下

Css代码

#navigator { 
 height: 100%; 
 width: 200; 
 position: absolute; 
 left: 0; 
 border: solid 2 #EEE; 
} 

.current_block { 
 border: solid 2 #AE0; 
}

查找一些教材中(w3schools等),只说css的顺序是“元素上的style” > “文件头上的style元素” >“外部样式文件”,但对于样式文件中的多个相同样式的优先级怎样排列,没有详细说明。经过测试和继续搜索,得知优先级如下排列:

1. 样式表的元素选择器选择越精确,则其中的样式优先级越高:

id选择器指定的样式 > 类选择器指定的样式 > 元素类型选择器指定的样式

所以上例中,#navigator的样式优先级大于.current_block的优先级,及时.current_block是最新添加的,也不起作用。

2. 对于相同类型选择器制定的样式,在样式表文件中,越靠后的优先级越高

注意,这里是样式表文件中越靠后的优先级越高,而不是在元素class出现的顺序。比如.class2 在样式表中出现在.class1之后:

Css代码

.class1 { 
 color: black; 
} 

.class2 { 
 color: red; 
}

而某个元素指定class时采用 class="class2 class1"这种方式指定,此时虽然class1在元素中指定时排在class2的后面,但因为在样式表文件中class1处于class2前面,此时仍然是class2的优先级更高,color的属性为red,而非black。

3. 如果要让某个样式的优先级变高,可以使用!important来指定:

Css代码

.class1 { 
 color: black !important; 
} 

.class2 { 
 color: red; 
}

此时class将使用black,而非red。

对于一开始遇到的问题,有两种解决方案:

1. 将border从#navigator中拿出来,放到一个class .block中,而.block放到.current_block之前:

Css代码

#navigator { 
 height: 100%; 
 width: 200; 
 position: absolute; 
 left: 0; 
} 

.block { 
 border: solid 2 #EEE; 
} 

.current_block { 
 border: solid 2 #AE0; 
}

需要莫仁为#navigator元素指定class="block"

2. 使用!important:

Css代码

#navigator { 
 height: 100%; 
 width: 200; 
 position: absolute; 
 left: 0; 
 border: solid 2 #EEE; 
} 

.current_block { 
 border: solid 2 #AE0 !important; 
}

下载本文
显示全文
专题