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 相关文章推荐
用正则表达式 动态创建/增加css style script 兼容IE firefox
Mar 10 Javascript
Firefox div高度自适应
Apr 28 Javascript
纯文字版返回顶端的js代码
Aug 01 Javascript
js如何取消事件冒泡
Sep 23 Javascript
Jquery对数组的操作技巧整理
Mar 25 Javascript
jQuery不兼容input的change事件问题解决过程
Dec 05 Javascript
angularjs指令中的compile与link函数详解
Dec 06 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
Sep 25 Javascript
拖动时防止选中
Feb 03 Javascript
jquery 校验中国身份证号码实例详解
Apr 11 jQuery
JS中promise化微信小程序api
Apr 12 Javascript
JavaScript JMap类定义与使用方法示例
Jan 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
部署PHP项目应该注意的几点事项分享
2013/12/20 PHP
php生成shtml类用法实例
2014/12/09 PHP
PHP使用xmllint命令处理xml与html的方法
2014/12/15 PHP
php实现微信扫码支付
2017/03/26 PHP
win10 apache配置虚拟主机后localhost无法使用的解决方法
2018/01/27 PHP
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
2007/04/21 Javascript
让回调函数 showResponse 也带上参数的代码
2007/08/13 Javascript
jQuery新闻滚动插件 jquery.roller.js
2011/06/27 Javascript
javascript jscroll模拟html元素滚动条
2012/12/18 Javascript
js调用webservice中的方法实现思路及代码
2013/02/25 Javascript
Jquery 获取对象的几种方式介绍
2014/01/17 Javascript
css结合js制作下拉菜单示例代码
2014/02/27 Javascript
jQuery CSS3相结合实现时钟插件
2016/01/08 Javascript
node.js微信公众平台开发教程
2016/03/04 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
修改Nodejs内置的npm默认配置路径方法
2018/05/13 NodeJs
详解性能更优越的小程序图片懒加载方式
2018/07/18 Javascript
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
2018/11/14 Javascript
elementUI中Table表格问题的解决方法
2018/12/04 Javascript
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
Angular封装搜索框组件操作示例
2019/04/25 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
2019/12/19 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
Python 迭代器工具包【推荐】
2016/05/06 Python
Python框架Flask的基本数据库操作方法分析
2018/07/13 Python
关于Keras Dense层整理
2020/05/21 Python
使用keras实现densenet和Xception的模型融合
2020/05/23 Python
如何基于Python代码实现高精度免费OCR工具
2020/06/18 Python
web字体加载方案优化小结
2019/11/29 HTML / CSS
用C#语言写出在本地创建一个UDP接收端口的具体过程
2016/02/22 面试题
社会实践先进工作者事迹材料
2014/05/06 职场文书
小学生安全保证书
2015/05/09 职场文书
常用的MongoDB查询语句的示例代码
2021/07/25 MongoDB
JavaScript中时间格式化新思路toLocaleString()
2021/11/07 Javascript
MySQL分区路径子分区再分区
2022/04/13 MySQL
USB TYPE-C 或将成为所有智能手机充电标准
2022/04/21 数码科技