元素样式控制

样式的优先级

样式属性通过四种方式可以被添加,他们的优先级从高到低依次为:

1.        Inline Styles;

2.        Style Sheet Rules;

3.        HTML Attributes(比如fill,height, width等);

4.        HTML标签默认定义;

通用

Element.style

Element.style操作的是元素的styleattribute指定的样式(inline styles)。

Window.getComputedStyle()

getComputedStyle方法接受两个参数,第一个是要查询的元素,第二个参数可选,值是表示pseudo-element的字符串。getComputedStyle的优势就是可以获取pseudo元素的样式,而style, currentStyle和runtimeStyle都不行。但getComputedStyle返回的所有样式都是只读的。

IE

Element.currentStyle

currentStyle是由样式表单、inline样式和HTMLattributes决定的,是应用的样式设置的值,但并不能反映获取值时渲染所采用的值。比如样式设置为"color:red; display:none",将返回currentStyle.color为red,尽管元素并没在页面上渲染。也就是说,currentStyle不受渲染与否的约束。

特点:

  • IE元素独有,Firefox和Chrome没有;
  • currentStyle保存的是采用的样式设置,而不是最终值,比如"color:green",currentTyle.color返回的依然是green,而不是#00FF00;
  • currentStyle是异步的,因此页面还在加载的时候获取的值可能是过去的值,最好等body已经load成功之后再获取。

Element.runtimeStyle

Element.runtimeStyle表示的是由全局样式表单、inline样式和HTMLattributes指定的元素级联样式。

特点:

  • IE元素独有,Firefox和Chrome没有;
  • runtimeStyle保存的是采用的样式设置,而不是最终值,比如"color:green",currentTyle.color返回的依然是green,而不是#00FF00;
  • 修改runtimeStyle会影响currentStyle,但不会影响style对象;

Style, runtimeStyle和currentStyle的关系

style和runtimeStyle在功能上是相等的;修改style或runtimeStyle,都会影响currentStyle。但是,单独修改style不会影响runtimeStyle,同理,单独修改runtimeStyle也不会影响style。

虽然MSDN认为runtimeStyle和style等价,优先级相同,经过IE7,IE8,IE9,IE10,IE11实际测试后发现,一旦通过runtimeStyle设置某个样式属性之后,再通过style对象操作这个属性就不再起作用。因此,可以等同认为runtimeStyle的优先级比style高。

Window.getComputedStyle()

在IE中,这个方法其实返回的就是currentStyle。

从IE9开始支持这个方法,IE8和低于IE8的IE都不支持。

Firefox

window.getDefaultComputedStyle()

这是Firefox独有的方法,与getComputedStyle()的主要区别是getDefaultComputedStyle只返回用户代理和用户自定义的原样式,元素渲染之后,用户又重新编辑的样式被忽略。getComputedStyle才是元素现有的样式。

应用

获取元素的当前样式属性

1.        首先判断window有没有getComputedStyle方法,如果有,就用这个方法获取;一般来说,调用方式为document.defaultView.getComputedStyle()。

2.        如果没有getComputedStyle方法,针对IE,应该使用currentStyle。

去掉style所有样式

element.removeAttribute("style")。

同时修改多个样式属性

Element.style.cssText =‘color:red;background-color:blue;border:5px solid black;‘;

这样写的问题是会删除掉style上原有的所有样式。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-11 01:59:18

元素样式控制的相关文章

获取元素样式对象 页面滚出 页面可是大小 添加监听事件 获取事件参数浏览器中位置 的兼容

/** * 获取浏览滚动出去的距离 * @returns {{scrollY: (Number|number), scrollX: (Number|number)}} */function scroll(){ return{ scrollY:window.scrollY||document.body.scrollTop||document.documentElement.scrollTop||0, scrollX:window.scrollX||document.body.scrollLeft|

JavaScript获取元素样式

原生的JavaScript获取写在标签内部的样式很简单: <div class="test" id="test" style="width:100px;">test</div> <script type="text/javascript"> window.onload=function(){ var oTest=document.getElementById("test"

html2canvas根据DOM元素样式实现网页截图

html2canvas根据DOM元素样式实现网页截图 html2canvas是一个相当不错的JavaScript类库,它使用了html5和css3的一些新功能特性,实现了在客户端对网页进行截图的功能.html2canvas通过获取页面的DOM和元素的样式信息,并将其渲染成canvas图片,从而实现给页面截图的功能. 它不需要来自服务器任何渲染,整张图片都是在客户端浏览器创建.当浏览器不支持Canvas时,将采用Flashcanvas或ExplorerCanvas技术代替实现.以下浏览器能够很好的

javascript 获取元素样式的方法

javascript 获取元素样式常用方法. Javascript获取CSS属性值方法:getComputedStyle和currentStyle 1 .对于元素的内联CSS样式(<div style="color:#369">hello</div>),可以直接使用element.style.color来直接获取css属性的值: 2. 但是对于外部定义的css样式使用这种方式就无法获取了,而且IE浏览器和其他标准浏览器(Firefox,Chrome,Opera,

js获取元素样式方法

? 1 2 3 4 5 6 7 8 function getStyle(ojb,attr){       if(obj.currentStyle){             return obj.currentStyle[attr];       }         else{            return getComputedStyle(obj,false)[attr];        } } js获取元素样式方法,布布扣,bubuko.com

原生js获取元素样式值

在学习js初期,就一直有一个疑问,获取元素样式的值,不是直接使用obj.style.left之类的就可以得到了吗?可是使用这样的方式,有的时候能够获取得到,有的时候又不能获取,一直疑惑不已,但是由于以前学习态度的问题,也没有深究,今天专门花了点时间整理了一下这方面的知识. 样式 首先,我们要明确样式的种类有以下三种 内联样式: 也就是行内样式,直接写在DOM元素的style属性中 嵌入样式: 写在html页面中的<style></style>中的样式 外部样式: 由link标签引入

JQuery_元素样式操作

元素样式操作包括了直接设置CSS 样式.增加CSS 类别.类别切换.删除类别这几种操作方法.而在整个jQuery 使用频率上来看,CSS 样式的操作也是极高的,所以需要重点掌握.

原生js获取元素样式

摘要: 我们在开发过程中经常会遇到通过js获取或者改变DOM元素的样式,方法有很多,比如:通过更改DOM元素的class.现在我们讨论原生js来获取DOM元素的CSS样式,注意是获取不是设置 在开始之前先说下获取最终应用在元素上的所有CSS属性对象的意思是,如果没有给元素设置任何样式,也会把浏览器默认的样式返回来. 1.ele.style 在学习DOM的时候就看到通过ele.style来获取元素样式值,但是有时候获取的并非是节点的样式值,而是空值.这是因为ele.style只能获取写在元素标签中

jQuery学习-设置访问元素样式

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>访问与设置元素样式</title> <script src="js/jquery.js"></script> <style> .divstyle{ border: 5px solid black; background-color: silv