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 相关文章推荐
jquery下将选择的checkbox的id组成字符串的方法
Nov 28 Javascript
jQuery UI Dialog控件中的表单无法正常提交的解决方法
Dec 19 Javascript
当jQuery1.7遇上focus方法的问题
Jan 26 Javascript
JQuery中serialize()用法实例分析
Feb 06 Javascript
教大家轻松制作Bootstrap漂亮表格(table)
Dec 13 Javascript
angular select 默认值设置方法
Jun 23 Javascript
vue基于Element构建自定义树的示例代码
Sep 19 Javascript
vue2.0获取鼠标位置的方法
Sep 13 Javascript
vue中使用vue-cli接入融云实现即时通信
Apr 19 Javascript
node中短信api实现验证码登录的示例代码
Jan 20 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
Jan 29 Vue.js
js实现自动锁屏功能
Jun 02 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
关于crontab的使用详解
2013/06/24 PHP
Linux下php5.4启动脚本
2014/08/03 PHP
PHP实现导出excel数据的类库用法示例
2016/10/15 PHP
PHP实现文件上传功能实例代码
2017/05/18 PHP
javascript实现的网页局布刷新效果
2008/12/01 Javascript
jQuery 页面 Mask实现代码
2010/01/09 Javascript
JsDom 编程小结
2011/08/09 Javascript
JQuery的ready函数与JS的onload的区别详解
2013/11/21 Javascript
moment.js轻松实现获取当前日期是当年的第几周
2015/02/05 Javascript
jQuery实现带滚动导航效果的全屏滚动相册实例
2015/06/19 Javascript
js 作用域和变量详解
2017/02/16 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
JavaScript canvas实现雨滴特效
2021/01/10 Javascript
在python中只选取列表中某一纵列的方法
2018/11/28 Python
使用python Telnet远程登录执行程序的方法
2019/01/26 Python
关于Flask项目无法使用公网IP访问的解决方式
2019/11/19 Python
python图形用户接口实例详解
2019/12/16 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
使用tensorflow实现矩阵分解方式
2020/02/07 Python
python实现微信打飞机游戏
2020/03/24 Python
Python基于QQ邮箱实现SSL发送
2020/04/26 Python
Python如何转换字符串大小写
2020/06/04 Python
python爬虫把url链接编码成gbk2312格式过程解析
2020/06/08 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
2020/06/10 Python
python 提高开发效率的5个小技巧
2020/10/19 Python
python 对象真假值的实例(哪些视为False)
2020/12/11 Python
Clearly新西兰:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
90后毕业生的求职信范文
2013/09/21 职场文书
空中乘务员岗位职责
2014/03/08 职场文书
生日主持词
2014/03/20 职场文书
《春到梅花山》教学反思
2014/04/16 职场文书
白酒营销策划方案
2014/08/17 职场文书
社区活动策划方案
2014/08/21 职场文书
酒店优秀员工推荐信
2015/03/24 职场文书
2015年小学二年级班主任工作总结
2015/05/21 职场文书
医院病假条范文
2015/08/17 职场文书