Javascript高级编程学习笔记(50)—— DOM2和DOM3(2)样式
样式
在HTML中定义元素的方式有以下三种:
1.link标签引入外部样式表
2.style标签定义嵌入样式
3.通过JS中对style特性定义元素样式(行内样式)
“DOM2级样式”围绕上述样式机制提供了一套API
若需要检测CSS2是否可用可以使用以下代码(虽然现在应该是用不着,毕竟CSS4都快普及了emmm)
var supportsDOM2CSS = document.implementation.hasFeature("CSS","2.0");
var suportsDOM2CSS2 = document.implementation.hasFeature("CSS2","2.0");
访问元素样式
任何支持style特性的元素,在JS中都有一个对应的style特性
该style属性是 CSSStyleDeclaration 的实例
但是该属性只包含通过style特性设置的样式信息(行内样式),但不包括外部样式表与层叠样式表引入的样式
至于JS中的style属性,一般来说只需要将其原本短横线的形式改写为驼峰命名即可在JS中对其进行访问
如下所示
background-image style.backgroundImage
color style.color
但是还有一些样式不能通过上面这样简单的转换来获取
比如 float 样式,由于 float 在CSS中属于保留字所以不能用作属性名
而在JS中设置、访问float则需要使用 cssFloat 在IE中则需要使用 styleFloat
有了DOM2对样式API的支持,我们只需要取得一个有效的DOM元素引用,就可以通过JS代码来设置元素的样式
在通过JS修改元素的外观时元素的外观会自动刷新
PS.如果没有为元素设置style特性,那么style对象中则会包含一些默认的值,但是这些默认值并不能准确地反映当前元素的准确信息
DOM样式属性和方法
DOM2为style对象提供了以下属性和方法:
cssText:可以访问到style特性(行内样式)中的CSS代码
length:应用给当前元素的CSS属性数量
parentRule:表示CSS信息的CSSRule对象
getPropertyValue(属性名):返回包含给定属性值的CSSValue对象
getPropertyPriority(属性名):若该属性使用了 !important 则返回 "important" 否则返回空字符串
getPropertyName(属性名):返回指定属性的字符串
item(下标):返回指定位置的CSS属性名称
removeProperty(属性名):从样式中删除给定属性
setProperty(属性名,属性值,优先级):设置属性,优先级传入”important“或空字符串
PS.以上属性中对CSSText的重写将会覆盖原来style特性的值
计算的样式
之前我们提到了,style对象的属性都只包含style特性的值,也就是行内样式
这样可以让我们JS代码对元素样式的修改以较高的优先级覆盖掉外部样式和嵌入样式的影响
但是这样为我们获取元素的样式带来了困难,所以DOM2增强了document.defaultView,新增了getComputedStyle方法用于获取元素的准确样式
getComputedStyle方法传入两个参数:1、要取得样式的元素 2、伪元素字符串(如":after",若不需要伪元素信息则可以传入null)
该方法返回一个 CSSStyleDeclaration对象
该对象包含当前元素所有计算后的样式,也就是呈现在页面上的样式信息
PS.虽然大多数浏览器都支持但是不同浏览器表示值的方式可能有所出入,所以在使用时需要注意
IE中不支持该方法,但是通过 currentStyle属性提供了相同功能的实现
最后要记住的是:不论在哪个浏览器中,计算后的样式都是只读的,不能对其进行修改来改变元素最终的样式呈现
Javascript高级编程学习笔记(50)—— DOM2和DOM3(2)样式的更多相关文章
- Javascript高级编程学习笔记(49)—— DOM2和DOM3(1)DOM变化
DOM变化 我们知道DOM有许多的版本,其中DOM0和DOM2这两个级别以对事件的纳入标准而为人所知 但是呢,这里不讲事件,在后面会有专门和事件有关的部分作为详细讲解 这里就只讲一下DOM2和DOM3 ...
- Javascript高级编程学习笔记(1)—— JS简介
此系列文章,用于记录所学,如有错误欢迎指出. Javascript组成 1.核心(ECMAScript) 2.文档对象模型(DOM) 3.浏览器对象模型(BOM) 1.核心(ECMAScript) E ...
- Javascript高级编程学习笔记(53)—— DOM2和DOM3(5)遍历
遍历 “DOM2级遍历和范围” 定义了两个用于辅助完成顺序遍历的DOM结构类型 NodeIterator 和 TreeWalk 上述两种类型可以基于给定起点的DOM结构执行深度优先的遍历操作 对于检测 ...
- Javascript高级编程学习笔记(54)—— DOM2和DOM3(6)范围选择
范围 为了让开发人员更加方便地控制页面“DOM2级遍历和范围”模块定义了“范围”接口 通过该接口开发人员可以选择文档中的一个区域,而不必考虑元素的界限 在常规操作不能有效地修改文档时,使用范围往往可以 ...
- Javascript高级编程学习笔记(52)—— DOM2和DOM3(4)元素大小
在日常实践中,我们在使用JS的时候难免会需要获取元素的大小及位置 首先要声明的是,这一部分的内容并不属于DOM2样式规范,因为DOM中并没有对我们如何获取元素大小的相关信息做出规范 偏移量 偏移量及元 ...
- Javascript高级编程学习笔记(56)—— DOM2和DOM3(8)低版本IE范围
虽然IE9支持了DOM范围,但是IE8及更早版本并不支持DOM范围 所以IE8以下的更早版本的IE提出了与之类似的概念以供大家使用 也就是 文本范围 var range = document.body ...
- Javascript高级编程学习笔记(55)—— DOM2和DOM3(7)操作范围
操作范围中的内容 在创建范围时,内部会为这个范围创建一个文档片段 范围所属的全部节点都会被添加到这个片段中 虽然选取范围可以不是完整的.良好的DOM结构 但是在这个为范围创建的文档片段中,会自己完缺少 ...
- Javascript高级编程学习笔记(51)—— DOM2和DOM3(3)操作样式表
操作样式表 在JS中样式表用一种类型来表示,以便我们在JS对其进行操作 这一类型就是CSSStyleSheet 即CSS样式表类型,包括了之前 style 对象所不包括的外部样式表以及嵌入样式表 其中 ...
- Javascript高级编程学习笔记(57)—— 事件(1)事件流
事件 JS与HTML的交互是通过事件实现的 而事件指的就是:文档或浏览器窗口特定的交互瞬间 可以通过侦听器来预定事件,以便在事件发生时执行相应的代码 这种模式也是设计模式中的观察者模式 事件流 有了事 ...
随机推荐
- Day2数据结构和算法
2019-02-28,10:23:52 算法效率的度量方法 事后统计方法:为每一个程序编制测试程序 ,比较时间.(很麻烦,没有普遍适用性) 事前分析估算方法:在计算机程序编写前,依据统计方法对算法进行 ...
- UI交互设计关键词:情感化设计与心理
情感化设计,一定有一个关键词.情感,是指人对周围事物和自身以及对自己行为的态度,它是人对客观事物的一种特殊的反映形式,是主体对外界刺激给予肯定或否定的心理反应,也是对客观事物是否符合自己需要的态度或体 ...
- 认识JavaScript Promise
参考: EC前端 - Promise - http://www.ecmaer.com/javascript/nativeObj/promise.html 关于Promise: 什么是 Promise? ...
- Win10下 usart驱动PL2303无法安装的问题
随着系统的 普及,很多小伙伴也放弃了原有的win7系统,加入了win10的行列.但是相对win7的稳定来说,win10还存在很多的不足 . 新买了一个usart的模块,但是在自家的电脑上使用的时候 一 ...
- Listener随笔
[1]监听器简介 > Listener是JavaWeb中三大组件之一.Servlet.Filter.Listener > 三大组件都有的共同特点,都需要实现一个接口,并在web.x ...
- HttpHelpers类普通GET和POST方式,带Cookie和带证书验证模式
HttpHelpers类普通GET和POST方式,带Cookie和带证书验证模式 参考路径:https://www.cnblogs.com/splendidme/archive/2011/09/14/ ...
- (摘录)String是值传递还是引用传递
String应该是一个封装类型,它应该是引用传递,是可以改变值的, 运行的结果应该是”cd”.我们实际运行一下看看, str=ab,这如何解释呢?难道String是基本类型?也说不通呀. 这就要从ja ...
- python的语法小结
break 与continue的区别: 1.break是直接中断全部循环 2.continue则是在只不执行此次所循环的东西,其它循环依旧执行,比方说只是跳过第4次循环,第5次循环照常进行. \n 表 ...
- 88、const、static、extern介绍
一.const与宏的区别 const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编译(编译之前处理)const是编译阶段. 编译检 ...
- CentOS 7 rabbitmq 安装
OS版本:CentOS 7.2Rrlang:19.2RabbitMQ:3.6.6 1.1 erlang安装 1. http://www.erlang.org/下载erlang,解压缩,进入目录,检查环 ...