昨日,突现一个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. 如何在github上搭建一个免费的 无限流量的静态网页博客Github pages

    前言: 看到很多相关的教程,但是在实际操作的时候还是遇见了不少问题,这里记录分享一下我的操作流程.免费空间用过很多,博客也用过一些,听说了github后就想试着玩一下这个静态库,感觉挺不错的,操作也比 ...

  2. JavaScript跨域解决方式

    平时工作中经常被JavaScript跨域问题所困扰,其实有很多种解决方式,下面给大家介绍常用的几种: 1.jsonp解决跨域问题 客户端代码: <!DOCTYPE html> <ht ...

  3. Linux进程间通信(System V) --- 共享内存

    共享内存 IPC 原理 共享内存进程间通信机制主要用于实现进程间大量的数据传输,下图所示为进程间使用共享内存实现大量数据传输的示意图: 共享内存是在内存中单独开辟的一段内存空间,这段内存空间有自己特有 ...

  4. [转]【Angular4】基础(二):创建组件 Component

    本文转自:https://blog.csdn.net/u013451157/article/details/79445138 版权声明:本文为博主原创文章,未经博主允许不得转载. https://bl ...

  5. easyui的datagrid为何无法显示json数据

    因为easyui的datagrid要求数据JSON必须是如下格式:{"total":0,"rows":[]}其中total表示总的数据行数,rows是当前页的数 ...

  6. Linux中ssh介绍与ssh+key密钥登陆部署

    环境内核信息: [root@zabbix- ~]# uname -a Linux zabbix- -.el6.x86_64 # SMP Tue Mar :: UTC x86_64 x86_64 x86 ...

  7. EXISTS 执行顺序

    select * from a where a.s_status=1 and exists (select orderid from b where a.orderid=b.orderid) exis ...

  8. git+github/码云+VSCode (转载)

    VSCode中使用git,参见. Git安装   在初次使用时如果本地没有安装git会提示先安装git,然后重启vscode. 一.本地操作项目前提: 1)若本地没有git拉取下来的项目,用git克隆 ...

  9. LVOOP设计模式在路上(二)-- 策略模式

    前言 最近工作还挺忙的,连着好些周都是单休了,今天休息在家就来写写关于策略模式的理解和labivew的实现. 正文 1.什么是策略模式 定义是这样描述的:它定义了算法家族,分别封装起来,让它们之间可以 ...

  10. 从函数式编程到Promise

    译者按: 近年来,函数式语言的特性都被其它语言学过去了.JavaScript异步编程中大显神通的Promise,其实源自于函数式编程的Monad! 原文: Functional Computation ...