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 相关文章推荐
使用闭包对setTimeout进行简单封装避免出错
Jul 10 Javascript
jQuery替换字符串(实例代码)
Nov 13 Javascript
用jquery写的一个万年历(自写)
Jan 20 Javascript
JavaScript中实现依赖注入的思路分享
Jan 15 Javascript
jQuery控制frames及frame页面JS的方法
Mar 08 Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
Jun 21 Javascript
jQuery仿写百度百科的目录树
Jan 03 Javascript
JavaScript函数基础详解
Feb 03 Javascript
基于Vue实例生命周期(全面解析)
Aug 16 Javascript
浅谈Javascript常用正则表达式应用
Mar 08 Javascript
VSCode launch.json配置详细教程
Jun 18 Javascript
vue引入Excel表格插件的方法
Apr 28 Vue.js
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
十大催泪虐心动漫电影,有几部你还没看
2020/03/04 日漫
关于拼配咖啡,你要知道
2021/03/03 咖啡文化
swfupload 多文件上传实现代码
2008/08/27 PHP
关于php curl获取301或302转向的网址问题的解决方法
2011/06/02 PHP
php实现mysql数据库分表分段备份
2015/06/18 PHP
Symfony控制层深入详解
2016/03/17 PHP
php并发加锁示例
2016/10/17 PHP
利用PHP判断文件是否为图片的方法总结
2017/01/06 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
2017/07/18 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
php静态成员方法和静态的成员属性的使用方法
2017/10/26 PHP
php输出形式实例整理
2020/05/05 PHP
jquery实现动态改变div宽度和高度
2015/05/08 Javascript
Vue声明式渲染详解
2017/05/17 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
2017/09/14 Javascript
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
vue.js实现二级菜单效果
2019/10/19 Javascript
ES6学习笔记之let与const用法实例分析
2020/01/22 Javascript
Vue + element 实现多选框组并保存已选id集合的示例代码
2020/06/03 Javascript
vue中的.$mount('#app')手动挂载操作
2020/09/02 Javascript
Python实现线程状态监测简单示例
2018/03/28 Python
Win7 64位下python3.6.5安装配置图文教程
2020/10/27 Python
Windows 64位下python3安装nltk模块
2018/09/19 Python
python中多个装饰器的调用顺序详解
2019/07/16 Python
Python基于yaml文件配置logging日志过程解析
2020/06/23 Python
NBA欧洲商店(法国):NBA Europe Store FR
2016/10/19 全球购物
ANINE BING官方网站:奢华的衣橱基本款和时尚永恒的单品
2019/11/26 全球购物
一套PHP的笔试题
2013/05/31 面试题
自我评价范文点评
2013/12/04 职场文书
伦敦奥运会的口号
2014/06/21 职场文书
学习教师敬业奉献模范事迹材料思想汇报
2014/09/19 职场文书
企业群众路线教育实践活动心得体会
2014/11/03 职场文书
筑梦中国心得体会
2016/01/18 职场文书
如何使用Python对NetCDF数据做空间相关分析
2021/04/21 Python
pt-archiver 主键自增
2022/04/26 MySQL
kubernetes集群搭建Zabbix监控平台的详细过程
2022/07/07 Servers