(知识点)JS中获取元素的样式
首先我们已经知道了JavaScript如果获取一个元素的内部样式,你可以这样做:
<div id="box" style="width:100px;height:100px;background:red"></div> <script> var oBox = document.getElementById('box'); console.log(oBox.style.width); console.log(oBox.style.height); console.log(oBox.style.background); </script>
在这种情况下,获取和设置靠style属性就可以了,因为element.style属性返回的是一组类数组的一组样式属性及对应的值。因此访问具体样式的时候可以采取两种方式即“ele.style.属性名称”和“ele.style['属性名称']”。
但是,要注意的是:对于css样式里的background-color,margin-top等以-相连的属性(在JavaScript中的命名规范中,-是不可用的)。对于这种情况,在使用style属性获取设置样式的时候名称要改为驼峰式,如ele.style.backgroundColor.
——
上述的方法只能用style属性获取到内联样式。
但是现在的文档基本上都遵循分离的思想,样式基本都是外部链接。所以三种方式设置样式都要考虑到:
在Dom标准里有一种全局的方法:getcomputedStyle(obj,null).paddingLeft;
但是事情还没有就这么结束:万恶的IE是不支持这种方法的,但是它提供了一种方法currentStyle,它与全局方法getComputedStyle还有所不同,它是作为Dom元素属性存在的,你可以这样使用obj.currentStyle.paddingLeft;
——
那么最终考虑到兼容性问题:我们可以让浏览器都可以获得元素的全局样式
function getDefaultStyle (obj,attribute) { return obj.currentStyle ? obj.currentStyle[attribute] : document.defaultView.getComputedStyle(obj,false)[attribute] }
getComputedStyle的用法是这样window.getComputedStyle(obj,pseudoElt)[attr]
其中pseudoElt表示:after和:before这样的伪类,如果不用的话,设置为null就可以了,
但是在老版本的火狐中,一般只需要一个参数,这里设置为false是为了兼容老版本的火狐。
最后:我们在来回顾一下给元素设置样式的几种方法:
1)外联式Linking(也叫作外部样式)
2)镶入式Embedding(也叫做内页样式)
3)内联式Lnline(也叫作行内样式)
优先级: 内联式>镶入式>外联式
所以,当同时存在且不同时:我们用这种方法得到的总是镶嵌在元素内部的style样式属性。
(知识点)JS中获取元素的样式的更多相关文章
- js中获取元素的样式兼容性的写法
1:设计元素的样式:el.style.color="red"||el.style["color"]="red" 获取元素的样式:el.st ...
- JS中获取元素属性的逆天大法
给大家聊下js中获取元素属性的逆天大法,胆小慎入,切记切记!!! innerHTML.outerHTML.innerText .outerText.value.text().html(),val() ...
- js兼容获取元素的样式
js获取元素的样式的兼容性处理: function getStyle(obj,attr){ return obj.currentStyle?obj.currentStyle[attr]:getComp ...
- chrome中获取元素的样式
以获取背景颜色为例 html部分 <div id="test">abcd</div> css部分 #test { background-color: rgb ...
- js中获取css的样式
因为给定一个div宽度或者其他样式之后,再设置一个border的宽度在js中得到的obj.setoffWidth就会变成width加上border的二倍宽度,因此可以自己写一个方法来获取样式.(obj ...
- JS中获取元素使用getElementByID()、getElementsByName()、getElementsByTagName()的用法和区别
Web标准下可以通过getElementById(), getElementsByName(), and getElementsByTagName()访问Documnent中的任一个标签: 1 g ...
- js中获取css样式属性值
关于js中style,currentStyle和getComputedStyle几个注意的地方 (1)用js的style只能获取元素的内联样式,内部样式和外部样式使用style是获取不到的.针对css ...
- js和jquery中获取非行间样式
样式又分为了行间样式和非行间样式.一般来说行间样式用的是比较少的,因为它能够作用的范围就只有一个元素,而非行间样式的作用范围可以是一类元素(即拥有相同德标签,或者说是有相同的类名,(当然id名不可能相 ...
- (转载)记录函数 getStyle() 获取元素 CSS 样式
设置元素(element)的css属性值可以用element的style属性,例如要将element的背景色设置为黑色,可以这么做: element.style.backgroundColor = ' ...
随机推荐
- FDG内存分配器笔记
FDG: 大规模并行系统中的动态内存分配器由于需要全局同步(记账) ,导致性能急剧下降. 代码解析 1.superblock 类中包含两个变量,两个函数.默认superblock大小为2048 ite ...
- Android开发之启动模式的深入理解
standard(标准模式): 当用ApplicationContext去启动standard模式时会报错,是因为非Activity类型的Context没有所谓的任务栈, 所以需要为待启动的Activ ...
- Java字节流在Android中的使用
引言:项目开发有时会使用上传文件到服务器,再从服务器取数据显示到本地这一过程:或者输入一段文字,再把文字显示出来.这个过程都用到了IO流. IO流分为字符流(Reader\Writer)和字节流(In ...
- css删除线,下划线等
<style> .p1 { text-decoration:overline; //上划线 } .p2 { text-decoration:line-through; //删除线 } . ...
- 《InsideUE4》UObject(五)类型系统信息收集
在一起!在一起! 引言 前文中我们阐述了类型系统构建的第一个阶段:生成.UHT分析源码的宏标记并生成了包含程序元信息的代码,继而编译进程序,在程序启动的时候,开始启动类型系统的后续构建阶段.而本文我们 ...
- Java位向量的实现原理与巧妙应用
Java位向量的巧实现原理与巧妙应用 1.博文介绍 本篇博文将会介绍几本的位运算含义.位向量介绍.BitSet实现原理.Java位向量的应用.拓展介绍Bloom Filter等. 2.位运算介绍 1) ...
- 深入hibernate的三种状态
学过hibernate的人都可能都知道hibernate有三种状态,transient(瞬时状态),persistent(持久化状态)以及detached(离线状态),大家伙也许也知道这三者之间的区别 ...
- 老李性能测试分享:可以没事代理刷榜赚外快了,poptest这是让你快速致富啊
老李性能测试分享:可以没事代理刷榜赚外快了,poptest这是让你快速致富啊 最近学员不断面试,不时听到令人惊喜的消息,类似应届专科毕业生获得7k月薪,小美女应聘月薪11k等等,看到学员开心的笑容 ...
- 在hive中直接对timestamp类型取max报错
之前直接对timestamp类型做max操作, select id,max(updatetime) updatetime from his.tag group by id; 结果查询的结果有的显示为1 ...
- javascript的getter和setter(转)
显然这是一个无关IE(高级IE除外)的话题,尽管如此,有兴趣的同学还是一起来认识一下ECMAScript5标准中getter和setter的实现.在一个对象中,操作其中的属性或方法,通常运用最多的就是 ...