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 相关文章推荐
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
Aug 30 Javascript
jQuery实现的仿百度分页足迹效果代码
Oct 30 Javascript
jQuery实现的点赞随机数字显示动画效果(附在线演示与demo源码下载)
Dec 31 Javascript
详解JavaScript中this关键字的用法
May 26 Javascript
JavaScript中获取时间的函数集
Aug 16 Javascript
javascript表单控件实例讲解
Sep 13 Javascript
JavaScript中清空数组的方法总结
Dec 02 Javascript
总结4个方面优化Vue项目
Feb 11 Javascript
性能优化篇之Webpack构建速度优化的建议
Apr 03 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
Jun 18 jQuery
bootstrap table列和表头对不齐的解决方法
Jul 19 Javascript
jQuery实现轮播图效果
Nov 26 jQuery
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
ADODB的数据库封包程序库
2006/12/31 PHP
smarty表格换行实例
2014/12/15 PHP
PHP基于自定义类随机生成姓名的方法示例
2017/08/05 PHP
PHP 传输会话curl函数的实例详解
2017/09/12 PHP
PHP使用Redis实现Session共享的实现示例
2019/05/12 PHP
基于php+MySql实现学生信息管理系统实例
2020/08/04 PHP
控制台报错object is not a function的解决方法
2014/08/24 Javascript
node.js中的fs.writeFileSync方法使用说明
2014/12/14 Javascript
JS实现文字向下滚动完整实例
2015/02/06 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
2016/06/01 Javascript
layui点击导航栏刷新tab页的示例代码
2018/08/14 Javascript
解决vue项目nginx部署到非根目录下刷新空白的问题
2018/09/27 Javascript
Vue路由切换页面不更新问题解决方案
2020/07/10 Javascript
vue实现图片裁剪后上传
2020/12/16 Vue.js
[02:15]2014DOTA2国际邀请赛 专访LGD.lin小兔子是大腿
2014/07/14 DOTA
[01:19:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第二局
2016/03/05 DOTA
python调用短信猫控件实现发短信功能实例
2014/07/04 Python
itchat接口使用示例
2017/10/23 Python
python向字符串中添加元素的实例方法
2019/06/28 Python
阿里云ECS服务器部署django的方法
2019/08/29 Python
keras 如何保存最佳的训练模型
2020/05/25 Python
Win10下用Anaconda安装TensorFlow(图文教程)
2020/06/18 Python
Python3.9新特性详解
2020/10/10 Python
用CSS3来实现社交分享按钮
2014/11/11 HTML / CSS
html5版canvas自由拼图实例
2014/10/15 HTML / CSS
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
PHP高级工程师面试问题推荐
2013/01/18 面试题
新媒传信软件测试面试题
2013/02/24 面试题
业务经理岗位职责
2013/11/11 职场文书
美容院经理岗位职责
2014/04/03 职场文书
10的分与合教学反思
2014/04/30 职场文书
2014年管理工作总结
2014/11/22 职场文书
2016年入党心得体会范文
2016/01/23 职场文书
Django给表单添加honeypot验证增加安全性
2021/05/06 Python
html5表单的required属性使用
2021/07/07 HTML / CSS
DIV CSS实现网页背景半透明效果
2021/12/06 HTML / CSS