js正确获取元素样式详解


Posted in Javascript onAugust 07, 2009

在说js获取元素样式之前,简单地谈一下样式

样式分三种
外部样式 External Style Sheet
以CSS为扩展名的文件(又称为"超文本样式表"文件),它的作用范围可以是多张网页,或整个网站,甚至不同的网站。与网页链接后,才能应用。
嵌入式样式 internal Style Sheet
包含在网页内部的样式设置,它的作用范围仅限于嵌入的网页。
内联式样式 inline Style
在HTML文档中,内联式样式表的格式化信息直接插入所应用的网页元素的HTML标签中,作为其HTML标签的属性参数。严格地说,内联样式表称不上表,仅仅是一条HTML标记。
当出现相同的样式时,优先级是内联大于嵌入式样式, 嵌入式样式大于外部样式。
---------------------------------------------------------------
当js获取这三种样式时,style只能获取内联样式,获取不到外部样式和嵌入式样式,因此要用currentStyle属性,而currentStyle在FF下不支持
下面介绍二种 兼容FF和IE和正确获取样式的方法

var $=function(id){return document.getElementById(id) }; 
方法一 
/* 
* @string id 
* @string styleName 样式名 
*/ 
function getEyeJsStyle(id,styleName){ 
if($(id).currentStyle){//ie 
return $(id).currentStyle[styleName]; 
}else{ //ff 
var $arr=$(id).ownerDocument.defaultView.getComputedStyle($(id), null); 
return $arr[styleName]; 
} 
}

方法二:
HTMLElement.prototype.__defineGetter__("currentStyle", function () { 
return this.ownerDocument.defaultView.getComputedStyle(this, null); 
});

讲述一下getComputedStyle函数的用法
这个函数有两个参数:
第一个参数为需要获取样式的元素对象;
第二个参数为伪元素,如:hover, :first-letter, :before等等,
如果不需要伪元素则该参数为null。
getComputedStyle()函数可以从 document.defaultView 对象中访问到,即可以这样调用该函数
--------------------------------------------------------------------------------------------

顺便说一下runtimeStyle属性,首页该属性只在IE中支持,在FF不支持
runtimeStyle 运行时的样式!如果与style的属性重叠,将覆盖style的属性!
意思就是当指定了runtimeStyle,那么当前显示的样式以runtimeStyle为准,如果取消了runtimeStyle,那么当前显示样式就恢复到currentStyle的样式。
案例:
设置document.getElementById("eyejs").runtimeStyle.width="400px"; 那该元素的宽度就是400px,,将覆盖style的属性
案例分析打包下载

Javascript 相关文章推荐
js 链式延迟执行DOME
Jan 04 Javascript
JS Replace 全部替换字符的用法小结
Dec 24 Javascript
在javascript中使用com组件的简单实现方法
Aug 17 Javascript
微信小程序 用户数据解密详细介绍
Jan 09 Javascript
JS操作input标签属性checkbox全选的实现代码
Mar 02 Javascript
Webpack如何引入bootstrap的方法
Jun 17 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
Jun 22 Javascript
从vue基础开始创建一个简单的增删改查的实例代码(推荐)
Feb 11 Javascript
详解操作虚拟dom模拟react视图渲染
Jul 25 Javascript
微信小程序实现省市区三级地址选择
Jun 21 Javascript
js实现三角形粒子运动
Sep 22 Javascript
关于Javascript闭包与应用的详解
Apr 22 Javascript
JavaScript 乱码问题
Aug 06 #Javascript
jquery ui dialog里调用datepicker的问题
Aug 06 #Javascript
jquery select(列表)的操作(取值/赋值)
Aug 06 #Javascript
asp(javascript)全角半角转换代码 dbc2sbc
Aug 06 #Javascript
javascript Array.remove() 数组删除
Aug 06 #Javascript
实现连缀调用的map方法(prototype)
Aug 05 #Javascript
Extjs ajax同步请求时post方式参数发送方式
Aug 05 #Javascript
You might like
Wordpress php 分页代码
2009/10/21 PHP
php实现水仙花数的4个示例分享
2014/04/08 PHP
php检测数组长度函数sizeof与count用法
2014/11/17 PHP
php 微信公众平台开发模式实现多客服的实例代码
2016/11/07 PHP
PHP新特性之字节码缓存和内置服务器
2017/08/11 PHP
多个Laravel项目如何共用migrations详解
2018/09/25 PHP
PHP实现关键字搜索后描红功能示例
2019/07/03 PHP
用js实现控制内容的向上向下滚动效果
2007/06/26 Javascript
json格式化/压缩工具 Chrome插件扩展版
2010/05/25 Javascript
国外大牛IE版本检测!现在IE都到9了,IE检测代码
2012/01/04 Javascript
js对象关系图 方便dom操作
2012/03/18 Javascript
javaScript知识点总结(必看篇)
2016/06/10 Javascript
Javascript中click与blur事件的顺序详析
2017/04/25 Javascript
JavaScript引用类型RegExp基本用法详解
2018/08/09 Javascript
JavaScript 判断iPhone X Series机型的方法
2019/01/28 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
这15个Vue指令,让你的项目开发爽到爆
2019/10/11 Javascript
Egg Vue SSR 服务端渲染数据请求与asyncData
2019/11/24 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
2019/12/19 Javascript
JavaScript的垃圾回收机制与内存管理
2020/08/06 Javascript
[51:14]LGD vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
python控制台英汉汉英电子词典
2020/04/23 Python
python3+PyQt5实现拖放功能
2018/04/24 Python
详解Python安装tesserocr遇到的各种问题及解决办法
2019/03/07 Python
浅谈Python3中strip()、lstrip()、rstrip()用法详解
2019/04/29 Python
python如何以表格形式打印输出的方法示例
2019/06/21 Python
Numpy 中的矩阵求逆实例
2019/08/26 Python
python 字符串常用方法汇总详解
2019/09/16 Python
Python使用selenium + headless chrome获取网页内容的方法示例
2019/10/16 Python
使用CSS3实现一个3D相册效果实例
2016/12/03 HTML / CSS
美国领先的奢侈手表在线零售商:WatchMaxx
2017/12/17 全球购物
德国在线香料制造商:Gewürzland
2020/03/10 全球购物
NFL官方在线商店:NFLShop
2020/07/29 全球购物
写出SQL四条最基本的数据操作语句(DML)
2012/12/12 面试题
员工培训心得体会
2013/12/30 职场文书
法人委托书
2014/07/31 职场文书