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 相关文章推荐
理解JavaScript的caller,callee,call,apply
Apr 28 Javascript
JS setCapture 区域外事件捕捉
Mar 18 Javascript
JavaScript下利用fso判断文件是否存在的代码
Dec 11 Javascript
jQuery fancybox在ie浏览器下无法显示关闭按钮的解决办法
Feb 19 Javascript
浅析Javascript中bind()方法的使用与实现
Apr 29 Javascript
用jQuery实现优酷首页轮播图
Jan 09 Javascript
加载 vue 远程代码的组件实例详解
Nov 20 Javascript
JS+WCF实现进度条实时监测数据加载量的方法详解
Dec 19 Javascript
Vue.js 利用v-for中的index值实现隔行变色
Aug 01 Javascript
vue自定义指令directive的使用方法
Apr 07 Javascript
使用taro开发微信小程序遇到的坑总结
Apr 08 Javascript
JavaScript检测是否开启了控制台(F12调试工具)
Oct 02 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 正则表达式小结
2009/08/31 PHP
php面向对象全攻略 (十七) 自动加载类
2009/09/30 PHP
PHP读取xml方法介绍
2013/01/12 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
2015/12/31 PHP
PHP whois查询类定义与用法示例
2019/04/03 PHP
PHP实现限制域名访问的实现代码(本地验证)
2020/09/13 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
2021/03/04 PHP
jQuery的运行机制和设计理念分析
2011/04/05 Javascript
jQuery隔行变色与普通JS写法的对比
2013/04/21 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
你可能不知道的JavaScript的new Function()方法
2014/04/17 Javascript
js动态删除div元素基本思路及实现代码
2014/05/08 Javascript
JavaScript中数组去除重复的三种方法
2016/04/22 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
Zepto实现密码的隐藏/显示
2017/04/07 Javascript
Bootstrap datepicker日期选择器插件使用详解
2017/07/26 Javascript
vue组件 $children,$refs,$parent的使用详解
2017/07/31 Javascript
在 vue-cli v3.0 中使用 SCSS/SASS的方法
2018/06/14 Javascript
Vue实现图书管理案例
2021/01/20 Vue.js
[00:47]TI7不朽珍藏III——沙王不朽展示
2017/07/15 DOTA
Python使用正则表达式获取网页中所需要的信息
2018/01/29 Python
python使用Paramiko模块实现远程文件拷贝
2019/04/30 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
2020/06/11 Python
django教程如何自学
2020/07/31 Python
Python爬虫教程知识点总结
2020/10/19 Python
CSS3 制作旋转的大风车(充满童年回忆)
2013/01/30 HTML / CSS
LEGO玩具英国官方商店:LEGO Shop GB
2018/03/27 全球购物
GoPro摄像机美国官网:美国运动相机厂商
2018/07/03 全球购物
捷克家具销售网站:SCONTO Nábytek
2020/01/02 全球购物
实习心得体会
2014/01/02 职场文书
护理毕业生自我鉴定
2014/02/11 职场文书
cf收人广告词大全
2014/03/14 职场文书
四风问题自我剖析材料
2014/10/07 职场文书
大学校园招聘会感想
2015/08/10 职场文书
html5实现点击弹出图片功能
2021/07/16 HTML / CSS
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS