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 相关文章推荐
csdn 博客的css样式 v3
Feb 24 Javascript
JavaScript 解析读取XML文档 实例代码
Jul 07 Javascript
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
Mar 26 Javascript
当前流行的JavaScript代码风格指南
Sep 10 Javascript
jQuery中[attribute^=value]选择器用法实例
Dec 31 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
Mar 19 Javascript
详解基于Bootstrap扁平化的后台框架Ace
Nov 27 Javascript
整理Javascript基础入门学习笔记
Nov 29 Javascript
js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
May 31 Javascript
TypeScript开发Node.js程序的方法
Apr 30 Javascript
vue实现下拉菜单树
Oct 22 Javascript
JavaScript继承的三种方法实例
May 12 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中OO之静态关键字以及类常量的详解
2013/06/07 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
2013/08/10 PHP
php通过ksort()函数给关联数组按照键排序的方法
2015/03/18 PHP
详解HTTP Cookie状态管理机制
2016/01/14 PHP
PHP中new static()与new self()的比较
2016/08/19 PHP
php封装单文件上传到数据库(路径)
2017/10/15 PHP
js png图片(有含有透明)在IE6中为什么不透明了
2010/02/07 Javascript
javascript模拟C#格式化字符串
2015/08/26 Javascript
快速学习jQuery插件 Form表单插件使用方法
2015/12/01 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
2016/05/25 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
vue+swiper实现侧滑菜单效果
2017/12/28 Javascript
JS使用tween.js动画库实现轮播图并且有切换功能
2018/07/17 Javascript
小程序云开发实战小结
2018/10/25 Javascript
Vue项目部署在Spring Boot出现页面空白问题的解决方案
2018/11/26 Javascript
原生JS实现的自动轮播图功能详解
2018/12/28 Javascript
微信小程序实现左右列表联动
2020/05/19 Javascript
jQuery实现回到顶部效果
2020/10/19 jQuery
python实现读取并显示图片的两种方法
2017/01/13 Python
Django添加favicon.ico图标的示例代码
2018/08/07 Python
django如何连接已存在数据的数据库
2018/08/14 Python
Python 创建新文件时避免覆盖已有的同名文件的解决方法
2018/11/16 Python
通过pykafka接收Kafka消息队列的方法
2018/12/27 Python
python实现双色球随机选号
2020/01/01 Python
Python中关于logging模块的学习笔记
2020/06/03 Python
Web前端页面跳转并取到值
2017/04/24 HTML / CSS
Tiqets荷兰:出售欧洲最美丽的景点和博物馆门票
2018/01/09 全球购物
空字符串(“”)和null的区别
2012/11/13 面试题
带薪年假请假条
2014/02/04 职场文书
《尊严》教学反思
2014/02/11 职场文书
部门年终奖分配方案
2014/05/07 职场文书
司法局群众路线教育实践活动开展情况总结
2014/10/25 职场文书
何玥事迹观后感
2015/06/16 职场文书
制定企业培训计划的五大要点!
2019/07/10 职场文书
php TP5框架生成二维码链接
2021/04/01 PHP
Tomcat配置访问日志和线程数
2022/05/06 Servers