(知识点)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 = ' ...
随机推荐
- iOS回顾笔记(07) -- UITableView的使用和性能优化
iOS回顾笔记(07) -- UITableView的使用和性能优化 如果问iOS中最重要的最常用的UI控件是什么,我觉得UITableView当之无愧!似乎所有常规APP都使用到了UITableVi ...
- ARC引用计数
NSlog(@"Retain count is %ld", CFGetRetainCount((__bridge CFTypeRef)self)); block保环流---> ...
- java 文件操作(二)---Files和Path
自从java 7以来,引入了FIles类和Path接口.他们两封装了用户对文件的所有可能的操作,相比于java 1的File类来说,使用起来方便很多.但是其实一些本质的操作还是很类似的.主要需要知道的 ...
- 数据库DDL操作
DDL1. 数据库* 查看所有数据库:SHOW DATABASES* 切换(选择要操作的)数据库:USE 数据库名* 创建数据库:CREATE DATABASE [IF NOT EXISTS] myd ...
- 更换gitlab公网IP,引发的故障。
gitlab更换公网IP地址,导致gitlab非常的很卡,并且ssh方式添加的远程仓库是无法git pull 或者git push,只有是添加http方式的可以正常git pull和git push ...
- 微软在.NET官网上线.NET 架构指南频道
微软在Visual Studio 2017 正式发布的时候也上线了一个参考应用https://github.com/dotnet/eShopOnContainers , 最近微软给这个参考应用写了完善 ...
- C#遍历指定文件夹中的所有文件(转)
原文链接:http://www.cnblogs.com/qianqianfy/archive/2009/07/08/1518974.html 1. C#遍历指定文件夹中的所有文件 DirectoryI ...
- 4日6日--Math的常用方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- alert 和 console.log的区别
出走半月,一直以为 console.log 和 alert 的用法是一样的,只是表现的形式不同,alert 是以弹框的形式出现,console.log 是在后台打印输出. 但是今天在写东西的时候,发现 ...
- iterable
iterable 阅读: 148111 遍历Array可以采用下标循环,遍历Map和Set就无法使用下标.为了统一集合类型,ES6标准引入了新的iterable类型,Array.Map和Set都属于i ...