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 相关文章推荐
一段实时更新的时间代码
Jul 07 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
Jan 07 Javascript
js实现带圆角的两级导航菜单效果代码
Aug 24 Javascript
jQuery实现扑克正反面翻牌效果
Mar 10 Javascript
利用纯js + transition动画实现移动端web轮播图详解
Sep 10 Javascript
JS实现点击链接切换显示隐藏内容的方法
Oct 19 Javascript
微信小程序实现刷脸登录
May 25 Javascript
微信小程序页面传多个参数跳转页面的实现方法
May 17 Javascript
vue 根据选择条件显示指定参数的例子
Nov 09 Javascript
Javascript实现鼠标移入方向感知
Jun 24 Javascript
vue中使用mockjs配置和使用方式
Apr 06 Vue.js
JavaScript parseInt0.0000005打印5原理解析
Jul 23 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+MySQL的聊天室设计
2006/10/09 PHP
php download.php实现代码 跳转到下载文件(response.redirect)
2009/08/26 PHP
PHP类的使用 实例代码讲解
2009/12/28 PHP
php下通过IP获取地理位置的代码(小偷程序)
2011/06/09 PHP
PHP 获取MySQL数据库里所有表的实现代码
2011/07/13 PHP
解析php addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
CodeIgniter配置之autoload.php自动加载用法分析
2016/01/20 PHP
PHP开发APP端微信支付功能
2017/02/17 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
2017/08/07 PHP
php静态成员方法和静态的成员属性的使用方法
2017/10/26 PHP
javascript 24小时弹出一次的代码(利用cookies)
2009/09/03 Javascript
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
2011/10/13 Javascript
jQuery EasyUI API 中文文档 - TreeGrid 树表格使用介绍
2011/11/21 Javascript
JavaScript实现自己的DOM选择器原理及代码
2013/03/04 Javascript
js中window.open()的所有参数详细解析
2014/01/09 Javascript
nodejs npm包管理的配置方法及常用命令介绍
2014/06/05 NodeJs
javascript制作网页图片上实现下雨效果
2015/02/26 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
2016/12/08 Javascript
nodejs+websocket实时聊天系统改进版
2017/05/18 NodeJs
深入理解ES6之数据解构的用法
2018/01/13 Javascript
vue组件编写之todolist组件实例详解
2018/01/22 Javascript
JS sort排序详细使用方法示例解析
2020/09/27 Javascript
vue项目打包后请求地址错误/打包后跨域操作
2020/11/04 Javascript
[42:39]老党炸弹人试玩视频
2014/09/03 DOTA
[04:12]第二届DOTA2亚洲邀请赛选手传记-Newbee.Sccc
2017/04/03 DOTA
python列表的常用操作方法小结
2016/05/21 Python
Python 自动刷博客浏览量实例代码
2017/06/14 Python
python3实现绘制二维点图
2019/12/04 Python
Linux的主要特性
2016/09/03 面试题
护理中职生求职信范文
2014/02/24 职场文书
音乐兴趣小组活动总结
2014/07/07 职场文书
校长创先争优承诺书
2014/08/30 职场文书
2015年毕业生个人自荐书
2015/03/24 职场文书
消夏晚会主持词
2015/06/30 职场文书
2015年大学组织委员个人工作总结
2015/10/23 职场文书
nginx常用命令放入shell脚本详解
2021/03/31 Servers