昨日,突现一个bug,令人十分恼火。

基本场景

自己实现一多选日历,可多选多天(相连或不相连均可)。“贵司”的需求真心有些小复杂了,“市面”上没有这样的相似的东东啊

Bug场景

鼠标悬浮到day上时,显示暗灰色,然后点击day的背景变为淡蓝色。问题就出如今这了。当鼠标悬浮的时候此时背景色为暗灰色,可是点击后仍然是暗灰色,仅仅有当鼠标移开这个day的时候才会真正改变背景色

也就是说事实上已经发生作用了。可是css并未真正发生作用

纠错历程

  1. 起初首先想到的是css权重问题

    第一等:代表内联样式。如: style=””。权值为1000。

    第二等:代表ID选择器,如:#content,权值为100。

    第三等:代表类。伪类和属性选择器。如.content,权值为10。

    第四等:代表类型选择器和伪元素选择器。如div p,权值为1。

    这个问题也与ITFriend的创始人曾诚于昨晚讨论。曾诚也认为应该是css权重的问题。可是我于今早再试这个问题的时候。将.active的权重提高到非常高。可是依旧不行

  2. 昨天有将datepicker.css中有一个.datepicker的选择器中的display属性改动。不管我将其改动还是删除。都会使得这个bug得以解决,可是前提是必须在线上浏览器中改动。这可能导致了浏览器又一次渲染。同一时候也说明了,权重的问题不是特别成立,由于在这个时候,我并没有改动这个地方的css权重

  3. 情急之下,仅仅能简单粗暴(由于昨天以为误攻克了,跟Leader说已经解决这个bug),然后仅仅能是通过js动态改变其background,这个地方读者有可能依旧想到是css权重的问题,毕竟行间样式的css权重最高吗,可是为什么改动class中的这个问题却不行呢。这的确是个问题

写在最后

bug尽管解决。可是想想这样的解决方案毕竟不是特别优雅,并且强迫控也会认为这样的写法对效率会有影响,毕竟css渲染要比js快(哈哈,如今pc都什么情况了,我们是不是能够忽略不计了,亲)。

究其根本,还是浏览器渲染问题的详细情况我们并非特别清楚。并且不同浏览器关于css渲染的问题也都不是特别一样。

关于本文

关于这篇博客。有可能读者会看到,我晕。博主也没有正面的解决问题嘛,干嘛还要写这篇文章

是这样。我们解决一个问题并非仅仅有一种方式。毕竟条条大路通罗马。

还有一方面。可能非常多时候,大多数前端project师都非常easy忽略css权重的问题,那么,这篇文章也希望将css权重的问题提到一个能让读者比較重视的位置。

本文结束。欢迎吐槽

css权重 vs 浏览器渲染 -- css之弊病的更多相关文章

  1. CSS hack——不同浏览器的CSS应对法

    1.IE条件注释法: lte表示“小于等于”,“lt”表示“小于”,“gte”表示“大于等于”,“gt”表示“大于”,“!”表示“不等于”. <!--[if IE 6]> <link ...

  2. CSS权重;慎用!important

    初初接触样式的前端开发者在碰到样式覆盖时,最先选择的往往是!important. 但是这种做法不好,应该优先考虑从样式的级联属性或者位置来解决问题. 切记以下情况永远不要使用!important: 1 ...

  3. 浏览器渲染引擎,提高css渲染速度。

    一.渲染引擎渲染引擎的职责是……渲染,也就是把请求的内容显示到浏览器屏幕上.默认情况下渲染引擎可以显示HTML,XML文档以及图片. 通过插件(浏览器扩展)它可以显示其它类型文档. 二.各种渲染引擎我 ...

  4. 网页性能优化:防止JavaScript、CSS阻塞浏览器渲染页面

    网页中引用的外部文件: JavaScritp.CSS 等常常会阻塞浏览器渲染页面.假设在 <head> 中引用的某个 JavaScript 文件由于各种不给力需要2秒来加载,那么浏览器渲染 ...

  5. CSS Position定位过多是否会影响浏览器渲染速度

    一直有个传说就是页面里的Position多了会影响浏览器渲染速度,今天做个测试看看结果如何. 检验的方法: 动态创建一定数量的div > 开始计算时间 > 导入css文件渲染 > o ...

  6. 主流浏览器内核、css权重

    主流浏览器及其内核: IE:trident Firefox:Gecko Google Chrome:webkit/blink Safari:webkit Opera:presto css权重 优先级大 ...

  7. css权重计算方法浅谈

    在这之前只知道css权重的皮毛,比如说:行内权重比头部权重高,头部比外部样式权重高----工作中才知道真正理解css权重重要性.理解权重了才能写出来最优css选择器来.对后面学习less,scss有很 ...

  8. CSS兼容各浏览器的hack

    CSS兼容各浏览器的hack:建议:尽可能的手写代码,可以有效的提高学习效率和深度.浏览器的种类多,麻烦自然也多,主要是各种浏览器对某些属性的渲染效果并不相同,所以有时候需要专门针对特定浏览器或者特定 ...

  9. css权重是什么

    css权重是什么? 概述 css Specificity中文一般译为css优先级.css权重.相比"权重","优先级"更好理解,mozilla官方中文文档就翻译 ...

随机推荐

  1. .Net Core中使用Quartz.Net

    一.介绍 Quartz.Net是根据Java的Quartz用C#改写而来,最新的版本是3.0.6,源码在https://github.com/quartznet/quartznet.主要作用是做一些周 ...

  2. python中的函数对象的内存地址是多少

    今天和同学讨论一个问题,发现了函数的内存地址和我想象的不一样. 我以为同一个函数,假如给的参数不一样,那么这两个函数的id就不一样. 然后经过实验,发现python为了便于管理函数,所有的函数都放在同 ...

  3. [转]Git & Gitlab 使用指南

    本文转自:https://blog.csdn.net/zdx1515888659/article/details/72954000 原文:http://www.restran.net/2016/02/ ...

  4. Docker 安装redis(四)

    Docker 安装redis 1.搜索docker镜像(可以看到搜索的结果,这个结果是按照一定的星级评价规则排序的) docker search redis 2.拉取docker的mysql镜像(如果 ...

  5. 基于IDEA的bs三层架构

    1.在大学的老师讲课中,可能会用到myeclipse或者eclipse来进行编译运行.其中的缺点就是要自行去下载开发所需要的一些jar包,要考虑都版本的不同造成的影响,且ORACLE和MYSQL的链接 ...

  6. C#多线程——同步

    多个线程(不仅仅局限于相同进程)如果需要访问相同的可变资源的话就可能需要考虑到线程同步的手段.CPU的线程和进程管控我这里就不去说了,计算机组成原理里面的东西 那么既然要让线程的步调一致,那么我们首先 ...

  7. Linux常用基本命令:三剑客命令之-awk输入输出分隔符

    输入分隔符,英文原文为field separator,此处简称为FS,默认是空白字符(即空格),awk默认以空白字符为分隔符对每一行进行分割. 输出分割符,英文原文为output field sepa ...

  8. sqoop简单配置与使用

    sqoop(sql-to-hadoop) Apache Sqoop是用来实现结构型数据(如关系数据库)和Hadoop之间进行数据迁移的工具.它充分利用了MapReduce的并行特点以批处理的方式加快数 ...

  9. VUE axios 发送 Form Data 格式数据请求

    axios 默认是 Payload 格式数据请求,但有时候后端接收参数要求必须是 Form Data 格式的,所以我们就得进行转换.Payload 和 Form Data 的主要设置是根据请求头的 C ...

  10. Flutter 依赖的那些事儿

    Flutter 里面有2种库一样的东西, Package -creating a pure Dart component. like a new Widget. 这种是纯Dart,相当于你自己写的组件 ...