获取、设置及移除单个内联 CSS 属性


每个 HTML 元素都有个 style 属性,可以用来插入针对该元素的内联 CSS 属性。

<div style='background-color:black; height:100px; width:100px'></div>
<script>
  var divStyle = document.querySelector('div').style;

  // 输出一个 CSSStyleDeclaration 对象,仅包含该元素的内联样式
  console.log(divStyle);

  // set
  divStyle.backgroundColor = 'red';

  // get
  console.log(divStyle.backgroundColor);

  // remove
  divStyle.backgroundColor = '';

  // style 对象是个 CSSStyleDeclaration 对象,它不仅提供了单个 CSS 属性的访问方式
  // 也提供 setProperty()、getPropertyValue()以及removeProperty() 方法

  // set
  divStyle.setProperty('height', '200px');

  // get
  console.log(divStyle.getPropertyValue('height'));

  // remove
  divStyle.removeProperty('height');

</script>

注意: style 对象中的属性名并不含 CSS 属性名中常用的横线。转译非常简单,移除横线并使用驼峰体。其中一个不能直接转换的 CSS 属性是 float,由于 float 是 Javascript 的保留字,因此不能用作属性名。“DOM2级样式”规范规定样式对象上相应的属性名应该是 cssFloat,ff、Safari、opera和chrome都支持这个属性,而 IE 支持的则是 styleFloat。

获取、设置及移除所有内联 CSS 属性


<div style='background-color:black; height:100px; width:100px'></div>
<script>
  var div = document.querySelector('div')
    , divStyle = div.style;

  // 使用 CSSStyleDeclaration 对象的 cssText 属性,和 getAttribute() 与 setAttribute() 方法
  // 可以用 Javascript 字符串获取、设置及移除 style 属性的整个值(即所有内联 CSS 属性)

  divStyle.cssText = '';

  divStyle.cssText = 'background-color:red; height:200px; width: 200px';

  // ----
  div.setAttribute('style', 'background-color:blue; height:100px; width:100px');

  console.log(div.getAttribute('style'));

  div.removeAttribute('style');
</script>

使用 getComputedStyle() 获取元素的已计算样式


style 属性值只包含通过 HTML 中的 style 属性定义的 CSS。要获得元素级联包括内联样式后的 CSS(即从内联样式表单,外部样式表单和浏览器样式表单级联),你可以用 getComputedStyle()。该方法提供一个只读的类似 style 的 CSSStyleDeclaration 对象。这个方法接受两个参数:要取得计算样式的元素和一个伪元素字符串(例如":hover"),如果不需要伪元素信息,第二个参数可以为 null。

<style>
  div {
    background-color: black;
    width: 100px;
  }
</style>

<div style='background-color:red; height:100px';></div>

<script>
  // document.defaultView 在浏览器中即为 window 对象
  var divStyle = document.defaultView.getComputedStyle(document.querySelector('div'), null);
  console.log(divStyle.width);  // 100px
</script>

getComputedStyle() 方法遵照 CSS 声明优先级(内联 > style > link),同时它所返回的 CSSStyleDeclaration 对象不能设定任何值,因为它是只读的。

IE 不支持 getComputedStyle() 方法,但它有一种类似的概念,在 IE 中,每个具有 style 属性的元素还有一个 currentStyle 属性,这个属性是 CSSStyleDeclaration 的实例,包含当前元素全部计算后的样式,同样只是可读。

<style>
  div {
    background-color: black;
    width: 100px;
  }
</style>

<div id='div'style='background-color:red; height:100px';></div>

<script>
  // 我也不知道为啥要用onload,去掉就报错说找不到对象...
  window.onload = function() {
    var divStyle = document.getElementById('div').currentStyle;
    console.log(divStyle.width);  // 100px
  }
</script>

兼容写法(2016-03-14 add):

function getStyle(ele, type) {
  if (window.getComputedStyle)
    return window.getComputedStyle(ele, null)[type];
  else
    return ele.currentStyle[type];
}

DOM与元素节点内联样式的更多相关文章

  1. Vue学习之路第十二篇:为页面元素设置内联样式

    1.有了上一篇的基础,接下来理解内联样式的设置会更简单一点,先看正常的css内联样式: <dvi id="app"> <p style="font-si ...

  2. v-bind指令动态绑定class和内联样式style

    动态绑定class—概述 数据绑定(v-bind指令)一个常见需求是操作元素的 class 列表.因为class是元素的一个属性,我们可以用 v-bind 处理它们 我们只需要计算出表达式最终的字符串 ...

  3. JavaScript 获取和修改 内联样式

    JavaScript 获取和修改 内联样式 版权声明:未经授权,严禁转载分享! 元素的样式 HTML 元素的 style 属性返回一个 CSSStyleDeclaration 类型的对象. Style ...

  4. 你真的知道css三种存在样式(外联样式、内部样式、内联样式)的区别吗?

    css样式在html中有三种存在形态: 内联样式:<div style="display: none"></div> 内部样式: <style> ...

  5. JS获取内联样式

    JS获取内联样式 //获取内联样式 function getCss(obj,attr){//obj:对象,name:style属性 if(obj.currentStyle) { return obj. ...

  6. CSS文档流与块级元素和内联元素

    CSS文档流与块级元素(block).内联元素(inline),之前翻阅不少书籍,看过不少文章, 看到所多的是零碎的CSS布局基本知识,比较表面.看过O'Reilly的<CSS权威指南>, ...

  7. html块级元素和内联元素小结

    Block element 块级元素 顾名思义就是以块显示的元素,高度宽度都是可以设置的.比如我们常用的<div>.<p>.<ul>默认状态下都是属于块级元素.块级 ...

  8. CSS文档流与块级元素和内联元素(文档)

    CSS文档流与块级元素(block).内联元素(inline),之前翻阅不少书籍,看过不 少文章, 看到所多的是零碎的CSS布局基本知识,比较表面.看过O'Reilly的<CSS权威指 南> ...

  9. (转) html块级元素和内联元素区别详解

    http://blog.csdn.net/chen_zw/article/details/8713205 块级元素(block)特性: 总是独占一行,表现为另起一行开始,而且其后的元素也必须另起一行显 ...

随机推荐

  1. Flex各类型坐标转换(全局、本地、内容坐标间转换)

    Flex包含3种坐标:全局坐标.本地坐标.内容坐标 全局坐标:stage级别,坐标原点为舞台的左上角,如MouseEvent的stageX.stageY坐标. 本地坐标:组件级别的坐标系,相对坐标,坐 ...

  2. English -有感过四六级后的托福单词表-附下载

    好像自从上学期不高不低过了六级之后就没怎么持续接触英语的东西了,欧,除了要debug的时候遇到问题了,去Google到了再用那些仅有的英语知识去看别人的文章.可能是因为看到的都是自己平时接触过的方面的 ...

  3. python基础(一)

    简单的‘Hello World!’ Python命令行 假设你已经安装好了Python, 那么在Linux命令行输入: $python 将直接进入python.然后在命令行提示符>>> ...

  4. WIN32 API编程之 tap顺序

    用CreateWindow 函数创建的控件,如果想使用tap键切换,最简单的做法是:主窗口有WS_EX_CONTROLPARENT扩展属性,控件有WS_TAPSTOP属性. 然后最重要的是,在处理消息 ...

  5. linux面试题

    一.填空题: 1. 在Linux系统中,以 文件 方式访问设备 . 2. Linux内核引导时,从文件 /etc/fstab 中读取uu要加载的文件系统. 3. Linux文件系统中每个文件用 i节点 ...

  6. 嵌入式Linux开发板

    嵌入式Linux开发板开发介绍: iTOP-4412嵌入式Linux开发板搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,独家配备三星S5M8767电源管理,配备Andro ...

  7. eclipse PermGen space解决方案

    转自网上 这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garb ...

  8. VIJOS P1037搭建双塔[DP]

    描述 2001年9月11日,一场突发的灾难将纽约世界贸易中心大厦夷为平地,Mr. F曾亲眼目睹了这次灾难.为了纪念“9?11”事件,Mr. F决定自己用水晶来搭建一座双塔. Mr. F有N块水晶,每块 ...

  9. 网络之Ip地址

    0.0.0.0---255.255.255.255 Ip地址分类(D.E)不对外开放 网络类别 最大网络数 IP地址范围(,唯一的,花钱的) 最大主机数 私有IP地址范围 (做内网ip,不可直接访问公 ...

  10. AC日记——Dividing poj 1014

    Dividing Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 69575   Accepted: 18138 Descri ...