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 相关文章推荐
激活 ActiveX 控件
Oct 09 Javascript
Array 重排序方法和操作方法的简单实例
Jan 24 Javascript
js中函数调用的两种常用方法使用介绍
Jul 17 Javascript
jQuery结合HTML5制作的爱心树表白动画
Feb 01 Javascript
kindeditor修复会替换script内容的问题
Apr 03 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
Mar 09 Javascript
JS条形码(一维码)插件JsBarcode用法详解【编码类型、参数、属性】
Apr 19 Javascript
浅谈js基础数据类型和引用类型,深浅拷贝问题,以及内存分配问题
Sep 02 Javascript
原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面
Nov 01 Javascript
详解在Vue中使用TypeScript的一些思考(实践)
Jul 06 Javascript
vue.js template模板的使用(仿饿了么布局)
Aug 13 Javascript
详解为生产环境编译Angular2应用的方法
Dec 10 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
DSP接收机前端设想
2021/03/02 无线电
php中实现记住密码自动登录的代码
2011/03/02 PHP
PHP实现定时执行任务的方法
2014/10/05 PHP
微信公众平台消息接口校验与消息接口响应实例
2014/12/23 PHP
linux下为php添加iconv模块的方法
2016/02/28 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
2016/11/05 PHP
jQuery Animation实现CSS3动画示例介绍
2013/08/14 Javascript
html+js实现动态显示本地时间
2013/09/21 Javascript
JS关键字球状旋转效果的实例代码
2013/11/29 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
2014/01/15 Javascript
招聘网站基于jQuery实现自动刷新简历
2015/05/10 Javascript
在浏览器中打开或关闭JavaScript的方法
2015/06/03 Javascript
JavaScript Ajax实现异步通信
2016/12/14 Javascript
使用jQuery和ajax代替iframe的方法(详解)
2017/04/12 jQuery
Vue实现日历小插件
2019/06/26 Javascript
Element-Ui组件 NavMenu 导航菜单的具体使用
2019/10/24 Javascript
vue实现登录拦截
2020/06/29 Javascript
python回调函数的使用方法
2014/01/23 Python
Python复数属性和方法运算操作示例
2017/07/21 Python
python生成1行四列全2矩阵的方法
2018/08/04 Python
Python3中编码与解码之Unicode与bytes的讲解
2019/02/28 Python
windows下安装Python虚拟环境virtualenvwrapper-win
2019/06/14 Python
pyqt5与matplotlib的完美结合实例
2019/06/21 Python
PyQt5基本控件使用详解:单选按钮、复选框、下拉框
2019/08/05 Python
PIL包中Image模块的convert()函数的具体使用
2020/02/26 Python
win10从零安装配置pytorch全过程图文详解
2020/05/08 Python
Python 连接 MySQL 的几种方法
2020/09/09 Python
英国No.1文具和办公用品在线:Euroffice
2016/09/21 全球购物
物业工作计划书
2014/01/10 职场文书
住宅质量保证书
2014/04/29 职场文书
建筑安全员岗位职责
2015/02/15 职场文书
个人优缺点总结
2015/02/28 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
工作犯错保证书
2015/05/11 职场文书
2015年服务员个人工作总结
2015/05/27 职场文书
运动会闭幕式致辞
2015/07/29 职场文书