为了提高用户体验,我们经常会动态修改Dom节点的样式,各种浏览器差异比较大,我们如何应对?不断尝试,不断总结~!

1. style、getComputedStyle、currentStyle

内嵌样式:

<!--body -->
<div style="width: 30px;background-color: #ff6a00;">我就是傻里傻气的,完全素颜!</div>
1 //内联样式优先级最高,通过style获取的样式是最准确的
2 var elm = document.getElementById('J-demo');
3
4 //通常这样获取
5 elm.style.width
6 elm.style.backgroundColor

内联样式、外部样式:

<!--css-->
<link ref="stylesheet" href="demo.css"> <style>
.demo {
width: 30px;
background-color: #ff6a00;
}
</style> <!--body -->
<div id="J-demo" class="demo">你想那么容易看我素颜?没那么容易...</div>
 var elm = document.getElementById('J-demo'),
elmStyle; elm.style.xxx //只能获取定义的内联样式 //如果标签没有定义相关的内联样式,应该这么办:
elmStyle = elm.currentStyle ? elm.currentStyle.getAttribute('background-color') : window.getComputedStyle(elm, null).getPropertyValue('background-color'); getPropertyValue(name) //name不要使用驼峰命名的名称
getAttribute(name) //如果考虑该死的IE6, name 必须是驼峰命名的名称 //为什么不用下标[name]来获取属性值呢?
//浏览器对样式属性解释名称不一样,比如float,有的叫cssFloat,有的叫styleFloat

2. screen属性

//显示器可用宽度、高度,不包含任务栏
availWidth、availHeight //显示器屏幕的宽度、高度
width、height

3. 元素视图方法、属性

 //让元素滚动到可视区域
scrollIntoView() //内容区域的左上角相对于整个元素左上角的位置(包括边框)
clientLeft
clientTop //内容区域的高度和宽度,包括padding,不包括边框和滚动条
clientWidth
clientHeight //相对于最近的祖先定位元素的偏移值
offsetLeft
offsetTop //返回最近的且定位的祖先元素
offsetParent //offsetParent元素只可能是下面这几种情况:
//1. <body>
//2. position不是static的元素
//3. <table>, <th> 或<td>,但必须要position: static //整个元素的尺寸(包括边框)
offsetWidth
offsetHeight //元素滚动的像素大小,可读可写
scrollLeft
scrollTop //整个内容区域的宽高,包括隐藏部分
scrollWidth
scrollHeight
//兼容问题:当外层元素没有设置overflow,但内容超过外层元素宽高时,浏览器获取的值将不准确
//解决方法:对外层元素设置overflow属性

4. 鼠标位置

 //鼠标相对于window的偏移
event.clientX
event.clientY //鼠标相对于显示器屏幕的偏移坐标
event.screenX
event.screenY

.Thingking

学会这些通用的样式处理方法,操作Dom样式,制作出漂亮的页面style,将会更加得心应手。

Reference: http://www.quirksmode.org/dom/w3c_cssom.html

JS 操作Dom节点之样式的更多相关文章

  1. 原生js操作Dom节点:CRUD

    知识点,依然会遗忘.我在思考到底是什么原因.想到研究生考试准备的那段岁月,想到知识体系的建立,知识体系分为正向知识体系和逆向知识体系:正向知识体系可以理解为教科书目录,逆向知识体系可以理解考试真题. ...

  2. JS 操作Dom节点之CURD

    许多优秀的Javascript库,已经封装好了丰富的Dom操作函数,这可以加快项目开发效率.但是对于非常注重网页性能的项目来说,使用Dom的原生操作方法还是必要的. 1. 查找节点 document. ...

  3. JS操作DOM节点查找

    JS中常用的DOM操作事件,包括有节点查找,键盘鼠标事件等等,本文内容介绍DOM的节点查找. <script> window.onload = function(){ //children ...

  4. JS操作DOM节点大全

    1.Javascript删除节点 在Javascript中,只提供了一种删除节点的方法:removeChild(). removeChild() 方法用来删除父节点的一个子节点. 语法:parent. ...

  5. ionic+微信js-sdk集成初步融合,在子路由页引入js操作dom节点

    .controller('yaoheCtrl',['$scope',function ($scope) { $scope.$watch('$viewContentLoaded',function(ev ...

  6. JavaScript操作DOM节点

    DOM (文档对象模型(Document Object Model)) 文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口.在网 ...

  7. 原生JS的DOM节点操作

    DOM(Document Object Model/文档对象模型)是针对HTML和XML文档的一个API.DOM节点树:在文档中出现的空格.回车.标签.注释.文本.doctype.标签等都属于DOM节 ...

  8. js操作DOM对象

    js操作DOM对象  (Document Object Model)文档对象模型 nodeType返回值 1:元素节点 2:属性节点 3:文本节点 8:注释节点 9: 文档节点 nodeName 节点 ...

  9. 原生js操作DOM基础-笔记

    原文参考http://mp.weixin.qq.com/s?__biz=MzU3MDA0NTMzMA==&mid=2247485490&idx=1&sn=15197b4b53e ...

随机推荐

  1. 《ACM国际大学生程序设计竞赛题解Ⅰ》——基础编程题

    这个专栏开始介绍一些<ACM国际大学生程序设计竞赛题解>上的竞赛题目,读者可以配合zju/poj/uva的在线测评系统提交代码(今天zoj貌似崩了). 其实看书名也能看出来这本书的思路,就 ...

  2. Timeout for tests

    如果想把timeout太久的测试自动标记为失败,有两种方法: 1.在 @Test里加上 Timeout 参数 定义"timeout=1000“的话,如果超过1000 毫秒,failure会被 ...

  3. JSP基本语法

    在tomcat环境搭建一文中为大家详细的介绍了第一个JSP的程序--Hello World,大家都应该顺利的完成了吧,以此为一个开端,希望大家在学习java EE的路上乘风破浪,不断进步.今天,为大家 ...

  4. 输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)

    群里看到这道题,用python做了做, def find(array): v_sum = greatest = 0 for a in array: v_sum += a v_sum = 0 if v_ ...

  5. Structual设计--Flyweight模式

    1.意图 运用共享技术有效地支持大量细粒度的对象. 2.别名 无 3.动机 有些应用程序得意于在其整个设计过程中採用对象技术,但简单化的实现代价极大.如我们在使用word的时候.假设设置正文字体为:t ...

  6. Project Euler:Problem 55 Lychrel numbers

    If we take 47, reverse and add, 47 + 74 = 121, which is palindromic. Not all numbers produce palindr ...

  7. 怎样使用 iOS 7 的 AVSpeechSynthesizer 制作有声书(2)

    切分语句 软件project的一条定律是数据和代码分离.这样做会使代码更易于測试,即使输入的数据发生改变,你的代码也能够同意.甚至于,程序能在执行中实时下载新的数据.假设程序能在执行中下载新书岂不是更 ...

  8. PHP学习路径

    php学习大致可分为三个阶段: 第一阶段:基础知识,页面布局. 学习内容:html.div+css.js. 学习目标:div+css设计. 阶段二:php核心知识和数据库交互. 学习内容:php核心知 ...

  9. 【PHP缩略图类】手机照片不能生成缩略图问题以及解决方式

    [本文原创,谢绝转载] 一.出现的问题 这几天做了手机上传照片并裁出缩略图的接口的測试,发现无论怎么.生成的缩略图都是一片漆黑.:-( 然后就把这个缩略图类单拿出来进行測试,发现仅仅要是手机拍出来的照 ...

  10. HDU 4455(dp)

    题意:给定一个序列ai,个数为n.再给出一系列w:对于每个w,求序列中,所有长度为w的连续子串中的权值和,子串权值为子串中不同数的个数. 思路:动态规划,用dp[w]表示当前长度为w的时候的权值和.显 ...