位置: 编程技术 - 正文

了解CSS的查找匹配原理,让CSS更简洁、高效(css查找元素)

编辑:rootadmin
看1个简单的CSS: DIV#divBox p span.red{color:red;},按习惯我们对这个CSS 的理解是,浏览器先查找id为divBox的DIV元素,当找到后,再找其下的所有p元素,然后再查找所有span元素,当发现有span的class为red的时候,就应用该style。多么简单易懂的原理,可是这个理解却是完完全全相反、错误的。 匹配原理: 浏览器CSS匹配不是从左到右进行查找,而是从右到左进行查找。比如之前说的 DIV#divBox p span.red{color:red;},浏览器的查找顺序如下:   先查找html中所有class='red'的span元素,找到后,再查找其父辈元素中是否有p元素,再判断p的父元素中是否有id为divBox的div元素,如果都存在则匹配上。 浏览器从右到左进行查找的好处是为了尽早过滤掉一些无关的样式规则和元素。比如如下html和css: 如果按从左到右查找,哪会先查找到很多不相关的p和span元素。而如果按从右到左的方式进行查找,则首先就查找到<span class='red'>的元素。firefox称这种查找方式为key selector(关键字查询),所谓的关键字就是样式规则中最后(最右边)的规则,上面的key就是span.red。 简洁、高效的CSS: 所谓高效的CSS就是让浏览器在查找style匹配的元素的时候尽量进行少的查找,下面列出一些我们常见的写CSS犯一些低效错误(也是我以前常常犯的错误,还老以为这样写才是高效的): 1.不要在ID选择器前使用标签名 一般写法:DIV#divBox 更好写法:#divBox 解释: 因为ID选择器是唯一的,加上div反而增加不必要的匹配。 2.不要再class选择器前使用标签名 一般写法:span.red 更好写法:.red 解释: 同第一条,但如果你定义了多个.red,而且在不同的元素下是样式不一样,则不能去掉,比如你css文件中定义如下: p.red{color:red;} span.red{color:#ffff} 如果是这样定义的就不要去掉,去掉后就会混淆,不过建议最好不要这样写 3.尽量少使用层级关系 一般写法:#divBox p .red{color:red;} 更好写法:.red{..} 4.使用class代替层级关系 一般写法:#divBox ul li a{display:block;} 更好写法:.block{display:block;} PS:看有些同学对从右到左的理论保持怀疑,下面贴出firefox和google的2篇相关css解释的文章,供大家参考 mozilla firefox: google page-speed:

推荐整理分享了解CSS的查找匹配原理,让CSS更简洁、高效(css查找元素),希望有所帮助,仅作参考,欢迎阅读内容。

了解CSS的查找匹配原理,让CSS更简洁、高效(css查找元素)

文章相关热门搜索词:css中search,css查找元素,用css设计一个搜索网页,css匹配,css中search,css中search,css中search,css怎么弄出搜索按钮,内容如对您有帮助,希望把文章链接给更多的朋友!

Zen Coding 快速编写HTML/CSS代码的实现 在本文中我们将展示一种新的使用仿CSS选择器的语法来快速开发HTML和CSS的方法。它由SergeyChikuyonok开发。你在写HTML代码(包括所有标签、属性、引用、大

Zen Coding css,html缩写替换大观 快速写出html,css 阅读本文,先仔细阅读网站文章。ZenCoding快速编写HTML/CSS代码的实现E元素名称(div,p);E#id使用id的元素(div#content,p#intro,span#error);E.class使用类的元素(div.header

javascript代码规范小结 1.Javascript代码应符合Douban-JSLint检验标准1-1.语句必须都有分号结尾,除了for,function,if,switch,try,while1-2.只有长语句可以考虑断行,如:TEMPL_SONGLIST.replace('{TA

标签: css查找元素

本文链接地址:https://www.jiuchutong.com/biancheng/372076.html 转载请保留说明!

上一篇:firefox下rowspan+border+border-collapse的bug

下一篇:Zen Coding css,html缩写替换大观 快速写出html,css

  • 外贸企业出口流程图
  • 一般纳税人企业所得税多久申报一次
  • 国家税务总局操作指引
  • 运输公司加计扣除
  • 一般纳税人没有进项怎么交税
  • 注册资本需要实交吗
  • 哪些支出允许在企业所得税前扣除
  • 发票到了款未付账务处理
  • 三包范围内的维修费谁出
  • 海关进口关税专用缴款书可以抵扣增值税吗
  • 使用人民币进行石油贸易结算
  • 纳税人必须熟知什么
  • 特定行业如何界定
  • 工程已完工又发生了成本怎么处理
  • 个人购买办公楼出租要交税吗
  • 企业用户纳税人识别号不合法
  • 资产处置损益在企业所得税汇算时如何填列
  • 应收账款确认无法收回
  • 代购商品委托书怎么写
  • 没有进出口权可以做外贸吗
  • 企业法人的工资没有实收可以退税吗
  • 稽查查补的税款可以享受即征即退吗
  • tp link无线路由器设置
  • 合同资产和合同负债属于什么科目
  • 签证费会计分录
  • php拼接url
  • 电脑qq聊天框变成一侧显示的软件版本
  • php-msf
  • 工程结算转收入
  • 如何在Mac上更改我的Apple ID
  • PHP:stream_socket_get_name()的用法_Stream函数
  • 作为一名程序员应该掌握哪些语言
  • wordpress怎么上传网站
  • 完税证明和纳税申报表的金额不一致
  • 计提的发展基金如何使用
  • 房地产消防工程入什么科目
  • 零售价是含税价还是不含税价
  • 报个税时显示扣缴单位无有效的税费种认定信息
  • 社保退工伤保险怎样做分录
  • 待摊费用和预付账款的区别是什么
  • 药品进销差价的计算公式
  • npm ERR! code ERESOLVEnpm ERR! ERESOLVE could not resolve dependency
  • nodejs vue
  • 深度学习数据集—水果数据集大合集
  • 利息支出税前扣除时间
  • 研发费用属于什么会计科目
  • 社保局申报工伤款多久能下
  • 税控盘抵减增值税
  • 免税农产品发票怎么做账
  • 财务报表漏报了会影响领票吗
  • 年金一定是一年一次吗
  • 在建工程待摊支出结转
  • 工商年报和税务年报有什么区别
  • 盈余公积的用途主要是
  • 施工企业如何确权
  • 企业购入投资性房地产
  • 建筑业外包工程包括哪些
  • 记账凭证背面贴原始凭证图片
  • 转账支票的密码需要填写吗
  • 个人公积金计入什么科目
  • 公司购买垃圾袋可以抵扣吗
  • mysql预编译原理
  • 禁用windows杀毒
  • centos7 pptp搭建
  • Mac怎么快速显示桌面
  • 苹果mac系统如何升级最新版本
  • mac的itunes怎么用
  • mac怎么预览cr3
  • suse linux教程
  • 如何检测装有监控器?
  • win10如何使用usb无线网卡
  • jquery添加图片
  • 网页javascript错误
  • 关于批处理的说法错误的是
  • jquery插件是干什么的
  • jquery分页插件的使用
  • android设计模式书籍
  • 农产品核定扣除办法38号公告
  • 北京增值税普通发票图片
  • 紧缩性财政政策有哪些
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设