样式的顺序

CSS 代码:

 

HTML 代码:

 

记得之前这是一道比较火的 CSS 考题,当时好像是有不少的人答错(30% 以上)

答案你们应该是知道的。

可以这样提升 CSS 性能

后代选择器

样式选择器中间的空格是什么?它的名字是 —— 后代选择器。

为什么会更消耗性能呢?

因为浏览器首先会找到所有p标签,然后再向上查找包含class为div标签。这样一来如果代码中有很多p标签,无疑是会做很多重复工作的。

所以可以减少使用 HTML 标签来定义 CSS 的方式,换成使用具体的class。

浏览器会从右到左解析 CSS 选择器:

浏览器会对上面的例子做如下的步骤处理:

首先找到页面所有的<a>元素

然后向上找到被<p>元素包裹的<a>元素

再向上查找到一直到.content_box的元素

从上面的步骤我们可以看出,越靠右的选择器越具有唯一性,浏览器解析 CSS 属性的效率就越高。

所以一定换成使用具体的class编写 CSS 代码。

自己整理了一套2019最新前端开发资料,需要加qun【四八四。七五七。七六零】

避免 reflow 风险

我们知道修改某些 CSS 属性会导致整个页面布局的重绘( repaint )/重排( reflow )。

repaint 的速度远快于 reflow,所以避免 reflow 更重要

导致 repaint 和 reflow 的原因

1.DOM 元素的添加、修改、删除(repaint、reflow)

2.仅仅修改 DOM 元素的字体颜色(repaint,不需要调整布局)

3.应用新的样式或者修改任何影响元素外观的属性(repaint、reflow)

4.resize,页面滚动(repaint、reflow)

读取元素的某些属性(offsetTop/Left/Width/Height、getComputedStyle、scrollTop/Left/Width/Height、clientTop/Left/Width/Height等)(repaint、reflow)

如果在大量的元素上更改这些属性,那么计算和更新他们的位置/大小需要花费很长的时间。

更加消耗性能的 CSS 属性

有一些 CSS 属性会比其他属性消耗能多的性能,即浏览器解析这些属性需要花费更多的时间。

如:border-radius、box-shadow、filter、:nth-child等

当然这些属性我们经常使用,有些无法避免。要做出适当的取舍。

希望这几个 CSS 小知识可以对你有所帮助,然后点个赞在走呗。

几个有益的 CSS 小知识的更多相关文章

  1. 【前端词典】几个有益的 CSS 小知识

    今天偷个懒,不长篇大论,分享几个你可能不知道的 CSS 小知识. 样式的顺序 CSS 代码:   HTML 代码:   记得之前这是一道比较火的 CSS 考题,当时好像是有不少的人答错(30% 以上) ...

  2. 12个你未必知道的CSS小知识

    虽然CSS并不是一种很复杂的技术,但就算你是一个使用CSS多年的高手,仍然会有很多CSS用法/属性/属性值你从来没使用过,甚至从来没听说过. 1.CSS的color属性并非只能用于文本显示 对于CSS ...

  3. 一些常被你忽略的CSS小知识

    1.CSS的color属性并非只能用于文本显示 对于CSS的color属性,相信所有Web开发人员都使用过.如果你并不是一个特别有经 验的程序员,我相信你未必知道color属性除了能用在文本显示,还可 ...

  4. HTML、CSS小知识--兼容IE的下拉选择框select

    HTML <div class="s_h_ie"> <select id="Select1" disabled="disabled& ...

  5. 你未必知道的css小知识

    1:当按百分比设定一个元素的宽度时,它是相对于父容器的宽度计算的,但是,对于一些表示竖向距离的属性,例如padding-top,padding-bottom,margin-top,margin-bot ...

  6. css 小知识

    <!-- IE下消除点击图片文字后出现的虚线框代码 --> <style type="text/css">a {blr:expression(this.on ...

  7. css小知识

    7. span { display:inline-block; width:70px; /* 超出长度以...显示 */ text-overflow: ellipsis; white-space: n ...

  8. css小知识 2

    效果为 为什么还出现出现不同的效果? 浏览器在解析第二个p的时候,因为第二个字母见没有空格,它会认为这是一个单词没有写完,所以不会换行 列表 1.无序列表ul 第二,内部必须有子代标签<li&g ...

  9. CSS小知识---table表格

    所用的仍是bootstrap的模板 <link rel="stylesheet" href="css/bootstrap.min.css"> < ...

随机推荐

  1. !!a标签和button按钮只允许点击一次,防止重复提交

    button 方法:加上属性disabled = “disabled” 或者 disabled = “true” <button id="btn" disabled=&quo ...

  2. 常见的医学基因筛查检测 | genetic testing | 相癌症早筛 | 液体活检

    NIPT, Non-invasive Prenatal Testing - 无创产前基因检测 (学术名词) NIFTY,胎儿染色体异常无创产前基因检测 (注册商标)华大的明显产品 新生儿耳聋基因检测 ...

  3. 效率包括了代码的GC 大小与内存大小,执行速度等等。其中执行速度不是关注 的重点

    效率包括了代码的GC 大小与内存大小,执行速度等等.其中执行速度不是关注的重点

  4. Comparison and difference for Default geodatabase,Current workspace,Scratch workspace,Home Folder

    Comparison and difference for Default geodatabase,Current workspace,Scratch workspace,Home Folder 商务 ...

  5. 在dubbo工程中,使用druid监控

    介绍:在dubbo项目中,使用druid的监控功能 问题:因为,在网上找勒,很多的资料,显示的都是需要在web.xml中配置 <servlet> <servlet-name>D ...

  6. AI学习网址记录

    https://ai.yanxishe.com/ https://ai.yanxishe.com/page/blogDetail/14365 GAN网络 对抗式生成网络-图像超分辨及图像修复 完全可见 ...

  7. ubuntu设置开机启动后命令行界面

    author:headsen chen date: 2019-09-19  14:23:31 在字符界面(即命令行界面)输入命令: 设置为字符界面的命令:sudo systemctl set-defa ...

  8. flutter Checkbox 复选框组件

    import 'package:flutter/material.dart'; class CheckboxDemo extends StatefulWidget { @override _Check ...

  9. npm配置淘宝镜像

    npm直接安装包太慢,采用淘宝npm镜像安装 在linux和Mac上可以添加环境变量的形式修改bashrc文件,但是在windows上可以直接采取如下方式,以绝后患. 永久采用 npm config ...

  10. zabbix使用fping监控任意两个节点之间的网络质量、丢包率和响应时间

    zabbix使用fping监控任意两个节点之间的网络质量.丢包率和响应时间 之前的博文 使用zabbix3..4的ICMP Ping模版实现对客户端网络状态的监控 https://www.cnblog ...