今天小编跟大家讲解下有关css 样式加载的优先级使用经验分享 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了有关css 样式加载的优先级使用经验分享 的相关资料,希望小伙伴们看了有所帮助。
昨天项目开发过程中 遇到一个样式加载优先级的问题。 定义了class 在页面最初加载的过程中是被识别出来了 当加载完毕后的一瞬间 样式像被重写了一样 定义好的margin-bottom不起作用了。控件因为没有这个样式就挤在了一起。 测试中FF和Chrome都是可以的 IE8有问题 但是用IE developer工具是可以看到这个margin-bottom被识别出来了 也没有被重定义。 问题比较怪异。 这个页面不是普通的结构 页面内容是异步生成的 而不是之前已经写好各种元素的普通页面。至于在加载完的一瞬间是被什么给重定义了还没有找到原因。现象是其中的挤在一起的表单元素随便点击一个 它所在的模块的所有表单都会加载margin-bottom样式 就不会再挤在一起。或者用IE developer工具 先把margin-bottom前面的勾点击为不选 然后再点击选中 这样页面上所有没有识别margin-bottom的表单元素都会正常加载这个样式。 但这肯定不是解决问题的办法 不能让客户看到这个问题 UI是最能打动用户的部分 也是最容易激怒用户的部分。 随后试了几种方法 专门写一个样式定义margin-bottom 而不是随着别的定义一起 不行; 加!important这种优先级很高的办法也不行; 直接写style优先级还不如!important 并且代码冗余太多 弊端更多 不行; 然后试了一个方法 script的方法 可行 代码如下: 复制代码代码如下: <script type="text/javascript"> document.getElementByClassName("mar_b_10").style.margin-bottom="10px"; </script> 其实就是再声明一遍 跟class是同样的内容 浏览器就能识别了。JS控制的样式对象 document.getElementByClassName("mar_b_10").style.margin-bottom="10px";一般情况是JS控制的样式优先级高 因为往往DOM操作是在DOM树加载完毕之后。在DOM树加载完毕 这个时候我写了js进行重定义 就没有别的再对这次样式定义进行覆盖 结果就比较满意。 一般情况下: [1位重要标志位] > [4位特殊性标志] > 声明先后顺序 !important > [ 内联样式 > ID选择器 > 类 属性 伪类 选择器 > 元素标签 伪元素 选择器 ] 使用!important可以改变优先级别为最高 其次是style对象 然后是id > class >tag 另外 另外在同级样式按照申明的顺序后出现的样式具有高优先级。来源:爱蒂网