1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 你真的知道css三种存在样式(外联样式 内部样式 内联样式)的区别吗?

你真的知道css三种存在样式(外联样式 内部样式 内联样式)的区别吗?

时间:2022-02-19 01:09:25

相关推荐

你真的知道css三种存在样式(外联样式 内部样式 内联样式)的区别吗?

css样式在html中有三种存在形态:

内联样式:<div style="display: none"></div>

内部样式: <style></style>

外联样式:<link href="" />

三者的优先级为:内联样式>内部样式>外联样式。

你可能会对内部样式和外联样式的优先级产生怀疑。反正我怀疑过,是不是两者的先后顺序不同会产生覆盖?当然经过测试,完全没有这种情况。~至于原理,我觉得是和渲染机制有关。

分割线~其实以上都是基础知识,下面才是要讲的重点。

我们知道,在js中修改节点的长、宽、背景色等等样式属性是很常见的操作。比如

var targetObj = document.getElementById("test");targetObj.style.width = "100px";

如果targetObj本身就已经设定了宽度。在js中通过target.style.width去读取那个既定宽度时,会出现:当宽度是在内联中定义可以读取到,如果宽度不是在内联中定义,targetObj.style.width返回的就是一个空串。

总结:

targetObj.style.width去获取的应该是在内联中定义的宽度,如果宽度定义在非内联中,永远不会获取到值,尽管你看到元素在浏览器中呈现得有长有高的;

通过js代码动态添加targetObj.style.width的优先级是最高的,但是你可以理解为它是添加到内联样式中,而事实也确实是如此。其实对于这句话其实还可以再补充一点点。对于targetObj.className = "newStyle",设置类设置新样式的手段,请务必保证添加的类的样式有足够高的优先级,否则将看不到任何效果。你可以在.newStyle的样式属性定义中增加!important,提高优先级,但是这样在ie6中不奏效,反而需要用带下划线的属性另外定义(hack技术)。我采用的方法基本是通过给.newStyle增加id标签来提高其优先级。比如(#name li.newStyle和.newStyle相比,优先级不知高了几个档次),而且所有浏览器都支持。

探索到这里,还可以继续探索下去,对于样式操作,有没有更有效的方式?cssText,提供了批量处理功能,

详见另一篇博文:/Iwillknow/p/3691490.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。