前端开发之-------------合理利用CSS的权重----------------

  什么是CSS的权重?对于前端工程师来说,这是一个很基础的问题,如果前端工程师没有深刻理解这个概念,则很难写出高质量的CSS代码。

  那么到底什么是CSS的权重呢?我们又怎么来进行判定CSS的权重呢?

  讨论CSS的权重,则必须想了解而且是深刻的了解CSS样式的6种基础选择器:ID选择器、类选择器、属性选择器、伪类和为对象选择器、标签选择器以及统配选择器。所有在CSS样式中定义的选择符都是由这6种基础选择符组合而成的,组合的方式也分为三种:后代选择符、子选择符、相邻选择符。(如果希望更详细的认识选择器的话点击(CSS选择器);

  CSS的权重指的是这些选择符的优先级,优先级高的CSS样式会覆盖优先级低的样式,优先级越高说明权重越高,反之亦然。

  计算CSS的权重是有一定的规则的。根据W3C指定的CSS规范,CSS权重是通过如下规则计算的:

    1)计算选择符中的ID选择器的数量(=a)。

    2)计算选择符中的类选择器、属性选择器以及伪类选择器的数量(=b)。

    3)计算标签类型选择器和伪对象选择器的数量(=c)。

    4)忽略全局选择器。

    按照规则,基础选择器具有这样的优先级:

      ID > 类 | 伪类 | 属性选择 > 标签类型 | 伪对象 > 通配符

*			/* a=0 b=0 c=0 -> 权重 =   0  */
li			/* a=0 b=0 c=0 -> 权重 =   0  */
ul li			/* a=0 b=0 c=0 -> 权重 =   0  */
ul ol+li		/* a=0 b=0 c=0 -> 权重 =   0  */
h1 + #[rel=up]		/* a=0 b=0 c=0 -> 权重 =   0  */
ul ol li.red		/* a=0 b=0 c=0 -> 权重 =   0  */
li.red.level		/* a=0 b=0 c=0 -> 权重 =   0  */
#x34y			/* a=0 b=0 c=0 -> 权重 =   0  */
#s12:not[foo]		/* a=0 b=0 c=0 -> 权重 =   0  */

  注意:如果两个选择符的权重相同,则可依照“就近原则”来判断。

  明白了CSS选择符的权重后,我们如何依照选择符的权重定义合适的选择符?

  定义选择符的原则是:尽量使选择付的权重低,目的是保证样式在应用于多个元素时容易被覆盖,这可提高样式代码的重用性和可维护性。

具体的原则如下:

  (1)CSS样式中尽量不要使用ID选择器

    ID选择器ijuyou很高的权重,如果要覆盖使用了ID选择器的样式,就必须在原先使用ID选择器的基础上添加新的选择符(类选择器或者标签类型选择器或者额使用个!important,但这样做的结果是无法重用的样式代码会越来越多。

  (2)减少子选择器的层级

    减少选择器的层级的过程也是降低选择符整体权重的过程。

  (3)使用组合的CSS类选择器

     使用CSS选择器组合的方式,开发者可以不用考虑CSS样式覆盖的问题,避开了计算选择符权重的过程,同时也提高了代码的重用性。

    

时间: 2024-10-06 12:20:54

前端开发之-------------合理利用CSS的权重----------------的相关文章

Brackets - 强大免费的开源跨平台Web前端开发工具IDE (HTML/CSS/Javascript代码编辑器)

Brackets 是一个免费.开源且跨平台的 HTML/CSS/JavaScript 前端 WEB 集成开发环境 (IDE工具).该项目由 Adobe 创建和维护,根据MIT许可证发布,支持 Windows.Linux 以及 OS X 平台. Brackets 的特点是简约.优雅.快捷!它没有很多的视图或者面板,也没太多花哨的功能,它的核心目标是减少在开发过程中那些效率低下的重复性工作,例如浏览器刷新,修改元素的样式,搜索功能等等.和 Sublime Text.Everedit 等通用代码编辑器

web前端开发教程:div+css的6个优点

关于div+css你知道多少?XHTML网站设计标准中,不再使用表格定位技术,而是采用div+css的方式实现各种定位.一般来说,div+css是web设计标准,它是一种网页的布局方法,与传统中经过表格(table)布局定位的方法有所区别,它能够完成页面页面内容与体现相别离, 那么你在前端开发学习对div+css的优点了解多少呢?接下来Div css教程学习中,为大家介绍web前端开发中div+css的6个优点. 介绍web前端开发中div+css的6个优点 1.契合W3C规范标准.这确保您的网

Web前端开发实战6:CSS实现导航菜单结合二级下拉式菜单的简单变换

前面几篇博文都在讲导航菜单和二级下拉式菜单,其实有很多方法都可以实现的,具体的情况还要视情况而定. 在后面学习到jQuery框架之后,会有更丰富的动画效果,由于在学习Ajax和jQuery的初步阶段,对于很多的复杂的导 航菜单和二级下拉式菜单没法做,但是学习了CSS和JS还是能实现一些简单的变换的.这篇博文就来说说用CSS实现 导航菜单结合二级下拉式菜单的两个简单变换吧. 首先还是在前面博文的基础上加以实现,其实只用HTML和CSS还是可以做出不错的效果,但是相较于JS和 jQuery来说就有很

WEB前端开发学习----5.理解 CSS 浮动float

首先需要明白两个概念:内联元素 , 块元素. 内联元素 :也叫做行内元素,可以容纳文字或其他内联元素.内联元素的高度宽度都是不可以设置的,其宽度就是自身文字或者图片的宽度,不会进行换行.常见的内联元素:<span></span>, <a></a>, <img></img>, <font></font>, <strong></strong>等 块元素:可以容纳文本,其他内联元素和块元素.可

从事前端开发应该了解的CSS原理

一.浏览器的发展与CSS 网页浏览器主要通过 HTTP 协议连接网页服务器而取得网页, HTTP 容许网页浏览器送交资料到网页服务器并且获取网页.目前最常用的 HTTP 是 HTTP/1.1,这个协议在 RFC2616 中被完整定义.HTTP/1.1 有其一套 Internet Explorer 并不完全支援的标准,然而许多其他当代的网页浏览器则完全支援这些标准.网页的位置以 URL(统一资源定位符)指示,此乃网页的地址:以 http: 开首的便是通过 HTTP协议登陆.很多浏览器同时支援其他类

【前端开发系列】—— 利用选择器添加内容

上文讲到了CSS3的选择器,通过after和before选择器,在元素前后添加内容. 也可以通过变量来实现自定义的标题 1 h1:before{ 2 content:'第'counter(mycounter)'章'; 3 color:red; 4 font-size:30px; 5 } 6 h1{ 7 counter-increment:mycounter; 8 } 代码样例 <html> <head> <style type="text/css">

前端开发中常用的CSS选择器解析(一)

你也许已经掌握了id.class.后台选择器这些基本的css选择器.但这远远不是css的全部.下面向大家系统的介绍css中最常用的选择器,包括我们最头痛的浏览器兼容性问题.掌握了它们,才能真正领略css的巨大灵活性. 1.* * { margin: 0; padding: 0; } 星状选择符会在页面上的每一个元素上起作用.web设计者经常用它将页面中所有元素的margin和padding设置为0. *选择符也可以在子选择器中使用. #container * { border: 1px soli

前端开发(二)CSS

1.CSS简介 为了让网页元素的样式更加丰富,也为了让网页的内容和样式能拆分开,CSS由此思想而诞生 CSS是 Cascading Style Sheets 的首字母缩写,意思是层叠样式表 有了CSS,html中大部分表现样式的标签就废弃不用了,html只负责文档的结构和内容,表现形式完全交给CSS,html文档变得更加简洁. css的定义方法是: 选择器 { 属性:值; 属性:值; 属性:值;} 2.CSS引入方式 <!DOCTYPE html> <html lang="en

Web前端开发工程师养成计划【转载】

Web前端开发工程师养成计划(入门篇) 最原始的忠告:这个世界上有想法的人很多,但是有想法又能实现它的人太少! 首先要感谢伟大的Web2.0概念.产品概念.用户体验概念.jQuery插件,是它们在中国日渐成熟才解放了一直以来姥姥不疼舅舅不爱的前端开发工程师们. 有没有发现从09年下半年到现在全中国的互联网公司都在招聘前端开发工程师?如果你注意到了,那么恭喜你,你已经拥有那么一点点预测互联网职场动向的能力. 可能令你感到遗憾的是你从没从事过前端开发工作,不过没关系,只要你肯努力,一切都是可以学会的