首先我们已经知道了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. NodeJs中process.cwd()与__dirname的区别

    process.cwd() 是当前执行node命令时候的文件夹地址 ——工作目录,保证了文件在不同的目录下执行时,路径始终不变__dirname 是被执行的js 文件的地址 ——文件所在目录 Node ...

  2. 【树莓派】Linux应用相关:自动删除n天前日志

    linux是一个很能自动产生文件的系统,日志.邮件.备份等.虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情.不用你去每天惦记着是否需要清理日志 ...

  3. SQLSERVER 切换数据库为单用户和多用户模式

    有时候数据库在占用时,想做一些操作,无法操作.可以尝试将数据库切换为单用户模式来操作.操作完之后再切换回多用户模式. 命令如下: alter database 数据库名 set Single_user ...

  4. 从Properties得到数据到gson转换为json

    从上一篇得到properties里的数据 Map<String,String> map = new HashMap<String,String>(); Enumeration& ...

  5. apache和nginx原理上的不同之处

    今天群里提到面试时问到apache和nginx原理有什么不同,一时还真没想起,想到的只是他们的优缺点,便搜索了下.记录学习下.顺便记录下优缺点吧. 原理不同之处: 为什么Nginx的性能要比Apach ...

  6. 记录一次坑爹的VM连接主机的路程

    因为之前电脑配置过虚拟机连接主机的过程,所以没有太在意,换电脑了之后配了两天结果没有配置成功; 首先配置静态ip: 1,编辑第一个文件/etc/sysconfig/network-scripts/if ...

  7. 【C#】组件分享:FormDragger-窗体拖拽器

    适用:.net2.0+ winform项目 介绍: 类似QQ.迅雷等讲究UI体验的软件,都支持在窗口内多处地方拖动窗口,而不必老实巴交的去顶部标题栏拖,这个组件就是让winform也能这样随性拖拽,随 ...

  8. 老李分享:webservice是什么?

    老李分享:webservice是什么?   前言 Web Services 是 Web 应用出于和其他 Web 应用以交互数据为目的的开放式标准(XML.SOAP.HTTP 等).Web Servic ...

  9. RabbitMQ-从基础到实战(6)— 与Spring集成

    0.目录 RabbitMQ-从基础到实战(1)- Hello RabbitMQ RabbitMQ-从基础到实战(2)- 防止消息丢失 RabbitMQ-从基础到实战(3)- 消息的交换(上) Rabb ...

  10. php基础知识--2017-04-14

    1.Php的两种打开方式: 第一种方式:http://localhost/0414/qq.php 第二种:新建站点,选到www目录.点击服务器----+添加-------选择本地网络   ------ ...