DOM与元素节点内联样式
获取、设置及移除单个内联 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与元素节点内联样式的更多相关文章
- Vue学习之路第十二篇:为页面元素设置内联样式
1.有了上一篇的基础,接下来理解内联样式的设置会更简单一点,先看正常的css内联样式: <dvi id="app"> <p style="font-si ...
- v-bind指令动态绑定class和内联样式style
动态绑定class—概述 数据绑定(v-bind指令)一个常见需求是操作元素的 class 列表.因为class是元素的一个属性,我们可以用 v-bind 处理它们 我们只需要计算出表达式最终的字符串 ...
- JavaScript 获取和修改 内联样式
JavaScript 获取和修改 内联样式 版权声明:未经授权,严禁转载分享! 元素的样式 HTML 元素的 style 属性返回一个 CSSStyleDeclaration 类型的对象. Style ...
- 你真的知道css三种存在样式(外联样式、内部样式、内联样式)的区别吗?
css样式在html中有三种存在形态: 内联样式:<div style="display: none"></div> 内部样式: <style> ...
- JS获取内联样式
JS获取内联样式 //获取内联样式 function getCss(obj,attr){//obj:对象,name:style属性 if(obj.currentStyle) { return obj. ...
- CSS文档流与块级元素和内联元素
CSS文档流与块级元素(block).内联元素(inline),之前翻阅不少书籍,看过不少文章, 看到所多的是零碎的CSS布局基本知识,比较表面.看过O'Reilly的<CSS权威指南>, ...
- html块级元素和内联元素小结
Block element 块级元素 顾名思义就是以块显示的元素,高度宽度都是可以设置的.比如我们常用的<div>.<p>.<ul>默认状态下都是属于块级元素.块级 ...
- CSS文档流与块级元素和内联元素(文档)
CSS文档流与块级元素(block).内联元素(inline),之前翻阅不少书籍,看过不 少文章, 看到所多的是零碎的CSS布局基本知识,比较表面.看过O'Reilly的<CSS权威指 南> ...
- (转) html块级元素和内联元素区别详解
http://blog.csdn.net/chen_zw/article/details/8713205 块级元素(block)特性: 总是独占一行,表现为另起一行开始,而且其后的元素也必须另起一行显 ...
随机推荐
- C#语言基础——数组
数组 一.一位数组 数组初始化,创建数组,数组长度为5 int[] array = new int[5]; array[0] = 1; array[1] = 2; array[2] = 3; arra ...
- Mysql查询阻塞初探
第一次值班,报警打电话给我说,数据库复制延时一个多小时,那个时候是半夜啊,但我还是很清醒的起来,开机.vpn.登录.show processlist,结果发现情况是这样的: 红线框表示的是当前每个线程 ...
- mysql截取longblob类型字段内一小块数据的方法
由于longblob类型的字段内容一般都好大,最大限制是4G,所以在数据查询中读取一整块数据的方式是不现实的,这需要要截取的方法来获取需要的数据. 方法如下: hex(substring(A, ind ...
- 理解linux and inode
inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础. 我觉得,理解inode,不仅有助于提高系统操作水平,还有助于体会Unix设计哲学,即如何把底层的复杂性抽象成一个简单概念 ...
- 图灵机器人(问答机器人)API调用示例
问答机器人API文档:https://www.juhe.cn/docs/api/id/112 先上图: 说下大致实现的步骤: 1.首先使用了聚合数据的sdk,这样免费使用的数目可以多一些 2.使用gs ...
- [转]Using Entity Framework (EF) Code-First Migrations in nopCommerce for Fast Customizations
本文转自:https://www.pronopcommerce.com/using-entity-framework-ef-code-first-migrations-in-nopcommerce-f ...
- Qt基础之开发环境部署
将 Qt 5.6 集成至 VS2015 摘要: 由于VS2015不再支持addin,所以要用其他手段. 这里给出64位系统下的安装步骤,32位类似. 一.安装VS2015 过程略.值得注意的是要选择需 ...
- (七)中介者模式-C++实现
用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显示地相互引用,从而使其解耦合松散而且可以独立地改变他们之间的交互. 中介者模式适合于 系统中不希望对象之间直接交互,即不希望类之间相互包含, ...
- Unity3D粒子系统 合集
http://www.cnblogs.com/qinyuanpei/p/3659513.htmlhttp://www.cnblogs.com/qinghuaideren/p/3597666.html
- Linux下mysql新建账号及权限设置
http://www.cnblogs.com/eczhou/archive/2012/07/12/2588187.html 1.权限赋予 说明:mysql部署在服务器A上,内网上主机B通过客户端工具连 ...