首先我们已经知道了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中获取元素的样式的更多相关文章

  1. js中获取元素的样式兼容性的写法

    1:设计元素的样式:el.style.color="red"||el.style["color"]="red"  获取元素的样式:el.st ...

  2. JS中获取元素属性的逆天大法

    给大家聊下js中获取元素属性的逆天大法,胆小慎入,切记切记!!! innerHTML.outerHTML.innerText .outerText.value.text().html(),val() ...

  3. js兼容获取元素的样式

    js获取元素的样式的兼容性处理: function getStyle(obj,attr){ return obj.currentStyle?obj.currentStyle[attr]:getComp ...

  4. chrome中获取元素的样式

    以获取背景颜色为例 html部分 <div id="test">abcd</div> css部分 #test { background-color: rgb ...

  5. js中获取css的样式

    因为给定一个div宽度或者其他样式之后,再设置一个border的宽度在js中得到的obj.setoffWidth就会变成width加上border的二倍宽度,因此可以自己写一个方法来获取样式.(obj ...

  6. JS中获取元素使用getElementByID()、getElementsByName()、getElementsByTagName()的用法和区别

    Web标准下可以通过getElementById(), getElementsByName(), and getElementsByTagName()访问Documnent中的任一个标签:   1 g ...

  7. js中获取css样式属性值

    关于js中style,currentStyle和getComputedStyle几个注意的地方 (1)用js的style只能获取元素的内联样式,内部样式和外部样式使用style是获取不到的.针对css ...

  8. js和jquery中获取非行间样式

    样式又分为了行间样式和非行间样式.一般来说行间样式用的是比较少的,因为它能够作用的范围就只有一个元素,而非行间样式的作用范围可以是一类元素(即拥有相同德标签,或者说是有相同的类名,(当然id名不可能相 ...

  9. (转载)记录函数 getStyle() 获取元素 CSS 样式

    设置元素(element)的css属性值可以用element的style属性,例如要将element的背景色设置为黑色,可以这么做: element.style.backgroundColor = ' ...

随机推荐

  1. 部署Cloudera Management for centos 7

    hadoop生态圈框架工具甚多,自己整合起来很是繁琐,特别是oozie以及hue结合来实现hive.mr.spark等定时依赖任务更是一步一个坑,为了减少踩坑,只好从apache hadoop,转向C ...

  2. Google分析language垃圾信息

    最近一段时间,我在Google Analytics(以下简称GA)中查看网站数据时,发现一个非常可疑的信息: 这什么鬼? "language"这一项一般是 "zh-tw& ...

  3. noip2008(最优贸易)

    C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的道 ...

  4. React Native 之 数据持久化

    前言 因为 实战项目系列 涉及到数据持久化,这边就来补充一下. 如本文有错或理解偏差欢迎联系我,会尽快改正更新! 如有什么问题,也可直接通过邮箱 277511806@qq.com 联系我. demo链 ...

  5. echarts 各类图形小计

    通用  官网 1.提示框组件 效果: 代码: 配置项手册 2.工具框组件 效果: 代码: 配置项: 3.series系列列表 a)折线line 效果: 代码: if(serSets[v]){ //注释 ...

  6. 模块“XXX.dll”加载失败

    具体问题:模块“XXX.dll”加载失败 请确保该二进制存储在指定的路径中,或者调试它以检查该二进制或相关的.DLL文件是否有问题  找不到指定的模块. 1.在安装C++软件的时候,有时候安装失败提示 ...

  7. [原]android sdk更新的终极解决方案

    由于众所周知的原因,国内更新Android SDK一直是个老大难的事情,一般都要到处找VPN之类的工具来曲线救国.不过其实谷歌已经帮我们想到这点了,我们自身就可以解决问题,步骤如下: 打开SDK Ma ...

  8. webpack点滴记录

    有了webpack..(不借助gulp/grunt)代码压缩 图片base64,解析less/sass coffee css压缩,MD5加密都帮你做了..还支持按需加载..还有热替换 webpack常 ...

  9. Best Time to Buy and Sell Stock系列

    I题 Say you have an array for which the ith element is the price of a given stock on day i. If you we ...

  10. 项目在App Store的展示信息

    一.首部1.图标作用:一个软件的logo.修改:每次提交新版本时可以修改.要求:1>1024*1024像素 2>72dpi.RGB.平展.不透明.没有圆角 3>高品质的JPEG或PN ...