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,提供了批量处理功能,

  详见另一篇博文:http://www.cnblogs.com/Iwillknow/p/3691490.html

最新文章

  1. 通过命令行连接Wifi
  2. php学习笔记:利用gd库生成图片,并实现随机验证码
  3. 工匠若水 Android应用开发编译框架流程与IDE及Gradle概要
  4. Android网络连接之HttpURLConnection和HttpClient
  5. HDU 1003 Max Sum 解题报告
  6. js 正则表达式 查找
  7. [Webpack 2] Polyfill Promises for Webpack 2
  8. 【贪心】Codeforces 704B &amp; 705D Ant Man
  9. Activity生命周期的学习以及Logcat的使用
  10. Object-c KVC的使用和举例
  11. github import repository创建github仓库
  12. HDU 2255 奔小康赚大钱 KM算法的简单解释
  13. STM32外部中断线编程
  14. 【开发技术】 java和JSP和JavaScript有什么区别
  15. 解决vue2.0路由 TypeError: Cannot read property &#39;matched&#39; of undefined 的错误问题
  16. 自由拖拽DIV实现
  17. python(leetcode)-1.两数之和
  18. 题解-SDOI2015 约数个数和
  19. 普通程序员,三年成为年薪70w架构师,只因做到了这些
  20. POJ 3295 Tautology(构造法)

热门文章

  1. 001.android初级篇之ToolBar
  2. 2015-0306—DataLList
  3. (转)分布式缓存GemFire架构介绍
  4. onclick和onblur的冲突问题
  5. Use XSLT in wix
  6. Boost库实现线程池学习及线程实现的异步调用
  7. 4.Servlet_Form表单处理
  8. 杀死进程 kill -9
  9. C# 汉字转拼音(转)
  10. ubuntu 停在开机界面