css 样式加载的优先级使用经验分享
建站知识 2021-07-03 09:08www.168986.cn长沙网站建设
昨天项目开发过程中,遇到一个样式加载优先级的问题。
定义了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 ,,在同级样式按照申明的顺序后出现的样式具有高优先级。
定义了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 ,,在同级样式按照申明的顺序后出现的样式具有高优先级。
长沙网站设计
- 如何自己建一个网站 自己想建个网站,怎么建
- 如何制作网站免费建站 创建网站免费注册
- html简单网页代码 html简单网页代码超链接
- dreamweaver网页制作 dreamweaver网页制作模板
- 上海网站建设 上海网站建设制作微信
- 如何制作网站和网页 如何制作一个网页
- html网页制作代码大全 端午节html网页制作代码大
- app开发公司 app开发公司前十名
- html网页制作 html网页制作文字居中
- app制作一个需要多少钱 请人制作一个app多少钱
- 成都网站制作 成都网站制作维护
- 百度建一个网站多少钱 百度做个公司网站要多少
- html+css网页制作成品 web网页制作成品css+javascrip
- html网页制作案例 html网页设计案例
- html+css网页制作成品 web网页制作成品css+javascrip
- 个人网站模板 个人网站模板HTML