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 相关文章推荐
isArray()函数(JavaScript中对象类型判断的几种方法)
Nov 26 Javascript
Grid得到选择行数据的方法总结
Jan 17 Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
May 25 Javascript
js/jquery去掉空格,回车,换行示例代码
Nov 05 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
Jan 06 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
Nov 01 Javascript
Angularjs注入拦截器实现Loading效果
Dec 28 Javascript
js实现九宫格的随机颜色跳转
Feb 19 Javascript
es6 字符串String的扩展(实例讲解)
Aug 03 Javascript
node删除、复制文件或文件夹示例代码
Aug 13 Javascript
使用JS监听键盘按下事件(keydown event)
Nov 07 Javascript
在VUE style中使用data中的变量的方法
Jun 19 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函数常用用法小结
2010/02/08 PHP
使用PHP实现蜘蛛访问日志统计
2013/07/05 PHP
php中的观察者模式简单实例
2015/01/20 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
2016/04/15 PHP
Yii2分页的使用及其扩展方法详解
2016/05/23 PHP
PHP实现按之字形顺序打印二叉树的方法
2018/01/16 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
javascript Discuz代码中的msn聊天小功能
2008/05/25 Javascript
javascript基础第一章 JavaScript与用户端
2010/07/22 Javascript
jQuery拖拽div实现思路
2014/02/19 Javascript
JavaScript简单修改窗口大小的方法
2015/08/03 Javascript
jquery实现左右滑动菜单效果代码
2015/08/27 Javascript
详解webpack分包及异步加载套路
2017/06/29 Javascript
vue-content-loader内容加载器的使用方法
2018/08/05 Javascript
JS 数组随机洗牌的实例代码
2018/09/12 Javascript
axios如何利用promise无痛刷新token的实现方法
2019/08/27 Javascript
JS实现iframe中子父页面跨域通讯的方法分析
2020/03/10 Javascript
Python中实现结构相似的函数调用方法
2015/03/10 Python
在Python的gevent框架下执行异步的Solr查询的教程
2015/04/16 Python
Python实现的简单算术游戏实例
2015/05/26 Python
Python 专题六 局部变量、全局变量global、导入模块变量
2017/03/20 Python
Python 爬虫之Beautiful Soup模块使用指南
2018/07/05 Python
pycharm 实现显示project 选项卡的方法
2019/01/17 Python
python基于Selenium的web自动化框架
2019/07/14 Python
python pillow模块使用方法详解
2019/08/30 Python
树莓派安装OpenCV3完整过程的实现
2019/10/10 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
HTML5新增加的功能详解
2016/09/05 HTML / CSS
canvas压缩图片以及卡片制作的方法示例
2018/12/04 HTML / CSS
南京软件公司的.net程序员笔试题
2014/08/31 面试题
父母对孩子的寄语
2014/04/09 职场文书
推荐信格式范文
2014/05/09 职场文书
预防煤气中毒方案
2014/06/16 职场文书
运动员获奖感言
2014/08/15 职场文书
Python控制台输出俄罗斯方块的方法实例
2021/04/17 Python
vue实现简易音乐播放器
2022/08/14 Vue.js