前端开发之-------------合理利用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样式覆盖的问题,避开了计算选择符权重的过程,同时也提高了代码的重用性。
前端开发之-------------合理利用CSS的权重----------------的更多相关文章
- Brackets - 强大免费的开源跨平台Web前端开发工具IDE (HTML/CSS/Javascript代码编辑器)
Brackets 是一个免费.开源且跨平台的 HTML/CSS/JavaScript 前端 WEB 集成开发环境 (IDE工具).该项目由 Adobe 创建和维护,根据MIT许可证发布,支持 Wind ...
- [转载]Brackets - 强大免费的开源跨平台Web前端开发工具IDE (HTML/CSS/Javascript代码编辑器)
http://brackets.io/ Brackets 是一个免费.开源且跨平台的 HTML/CSS/JavaScript 前端 WEB 集成开发环境 (IDE工具).该项目由 Adobe 创建和维 ...
- Web前端开发实战6:CSS实现导航菜单结合二级下拉式菜单的简单变换
前面几篇博文都在讲导航菜单和二级下拉式菜单,事实上有非常多方法都能够实现的.详细的情况还要视情况而定. 在后面学习到jQuery框架之后,会有更丰富的动画效果.因为在学习Ajax和jQuery的初步阶 ...
- Web前端开发中的各种CSS规范
Reference: http://yusi123.com/2866.html 一.文件规范 1.文件均归档至约定的目录中(具体要求以豆瓣的CSS规范为例进行讲解): 所有的CSS分为两大类:通用类和 ...
- 前端开发【第二篇: css】
css概述 层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言.CSS ...
- Angular01 利用grunt搭建自动web前端开发环境、利用angular-cli搭建web前端项目
搭建angular开发环境 一.下载并安装node 官网地址:点击前往 二.利用npm安装cnpm 安装好node后就可以使用npm命令啦 查看版本:npm -v 安装cnpm:npm install ...
- 前端开发中常用的CSS选择器解析(一)
你也许已经掌握了id.class.后台选择器这些基本的css选择器.但这远远不是css的全部.下面向大家系统的介绍css中最常用的选择器,包括我们最头痛的浏览器兼容性问题.掌握了它们,才能真正领略cs ...
- 前端开发学习之——利用模板实现涉及url问题时的bug分析及解决(chrome源码)
例如我们要实现如下页面,其中历史页面列表想来自底层返回的数据,此处用testData代替: 最初我写的实现代码如下: html文件: <!doctype html> <html cl ...
- Web前端开发CSS规范总结
作为Web前端开发必备语言,CSS为大家广为熟知,今天就跟大家分享下CSS规范总结,Web前端的小伙伴们看过来吧! CSS样式的权值(权重) 权值等级的定义 第一等:代表内联样式,如: style=” ...
随机推荐
- java多线程之计算数量
package Thread.Abort; import java.util.ArrayList; import java.util.List; import java.util.Random; im ...
- 搭建一个springmvc helloworld程序
1.加jar包,需要8个,从springframework里面选 logging core aop context expression bean web webmvc 2.配置web.xml,在文件 ...
- js监听浏览器关闭事件
html : <HTML> <HEAD> <title>test</title> </HEAD> <body onbefore ...
- 修改Tomcat的网站根目录
想把Tomcat的默认网站根目录修改成自己指定的目录,比如:F:/MyWeb.这样以后把自己写的index.jsp放到该目录下,就能通过http://localhost:8080/index.jsp来 ...
- 有没有一行文件字过多后可以省略号显示,我说的不是用其他样式,BT本身有没有?谢谢
.text-overflow {display: inline-block;max-width: 200px;overflow: hidden;text-overflow: ellipsis;whit ...
- 卸载oracle
1. 开始->设置->控制面板->管理工具->服务 停止所有Oracle服务. 2. 开始->程序->Oracle - OraHome81 ...
- FreeMarker页面中获得contextPath
要在ftl页面中使用contextPath,需要在viewResolver中做如下配置(红色部分): <bean id="viewResolver" class=" ...
- IO/NIO
1.转换流,Buffered BufferedWriter out=new BufferedWriter(new OutputStreamWriter(System.out)); BufferedRe ...
- ListView之setEmptyView的问题
使用listView或者gridView时,当列表为空时,有时需要显示一个特殊的empty view来提示用户,一般情况下,如果你是继承ListActivity,只要 <ListView and ...
- GL_INVALID_VALUE(0X501)
当android应该打开GPU的支持后, 有些手机会出现黑屏.闪屏等现象. 跟踪控制台, 会打印日志GL_INVALID_VALUE(0X501). 参考资料:http://mobile.riaos. ...