`

用javascript getComputedStyle获取和设置style的原理

 
阅读更多

DOM标准引入了覆盖样式表的概念,当我们用document.getElementById("id").style.backgroundColor 获取样式时 获取的只是id中style属性中设置的背景色,如果id中的style属性中没有设置background-color那么就会返回空,也就是说如果 id用class属性引用了一个外部样式表,在这个外部样式表中设置的背景色,那么不好意思 document.getElementById("id").style.backgroundColor 这种写法不好使 ,如果要获取外部样式表中的设置,需要用到window对象的getComputedStyle()方法,代码这样写 window.getComputedStyle(id,null).backgroundColor
但是兼容问题又来了,这么写在firefox中好使,但在IE中不好使
两者兼容的方式写成

window.getComputedStyle?window.getComputedStyle(id,null).backgroundColor:id.currentStyle["backgroundColor"];
 


如果是获取背景色,这种方法在firefox和IE中的返回值还是不一样的,IE中是返回"#ffff99"样子的,而firefox中返回"rgb(238, 44, 34) "
值得注意的是:window.getComputedStyle(id,null)这种方式不能设置样式,只能获取,要设置还得写成类似这样id.style.background="#EE2C21";

 

首先我们先说一下样式表属性
1. 内联样式即元素style属性里面设置的,级别最高
2. 页面样式表定义即页面<style></style>里面定义的,级别次之
3.外部链接样式表文件
JavaScript获取和设置文档元素的css属性:
1.获取元素Style属性里面设置的样式属性,
document.getElementById(id).style.height;
有,则返回属性值;没有则返回空
IE和火狐皆然,只是有的属性值返回可能不一样,比如像颜色火狐返回rgb,而IE是返回十六进制数字
测试代码:

<script type="text/javascript">
function getCss(){
alert(document.getElementById("aaa").style.height);
alert(document.getElementById("aaa").style.backgroundColor);
alert(document.getElementById("aaa").style.width);
document.getElementById("aaa").style.backgroundColor = ‘#dbdbdb';
//alert(myWidth);
}
</script>
 

 

<div id="aaa" class="bbb" style="height:20px; background-color:#FF0000;">
asdfasdfas
</div>
<input type="button" value="点击" onclick="getCss();" />
 


2.有时候我们的样式可能有多个地方设置了,我们也不知道它到底是外部样式表属性起作品,还是在内联样式里面起作用,所以我们就需要获取当前页面渲染的属性值。这个在IE和FF里面有些不同:
示例代码片断:
IE:document.getElementById('aaa').currentStyle.height
FF标准:document.defaultView.getComputedStyle(aaa,null).getPropertyValue('height')
这两个属性是只读的,若要改变元素样式还得使用style,它直接写在元素style属性里面级别最高起作用
3.写一个兼容IE和FF的函数来调用
复制代码 代码如下:

function getRealStyle(id,styleName) {
var element = document.getElementById(id);
var realStyle = null;
if (element.currentStyle)
realStyle = element.currentStyle[styleName];
else if (window.getComputedStyle)
realStyle = window.getComputedStyle(element,null)[styleName];
return realStyle;
}

 

调用:cur_height = parseInt(getRealStyle(CON_ID,'height'));
P.S:返回值通常会带有单位,需要使用parseInt函数提取数字,以方便后面的操作

分享到:
评论

相关推荐

    JS中的getComputedStyle1

    2. **处理动画和过渡**:在实现JavaScript驱动的动画时,可以通过`getComputedStyle`获取当前时刻的元素位置、大小等属性。 3. **浏览器兼容性处理**:在处理CSS3的新特性时,可以使用`getComputedStyle`来检测...

    JavaScript备课

    例如,`element.style.property`可直接修改元素的样式,或者使用`getComputedStyle`获取元素的计算样式。 6. **XHTML和HTML5**:虽然JavaScript主要处理逻辑,但它与HTML(尤其是HTML5)的结合紧密。理解XHTML的...

    JavaScript特效实例

    JavaScript可以通过`getComputedStyle`获取元素的实时样式,或者通过`style`对象直接修改CSS属性。这使得JavaScript能动态地改变元素的样式,实现各种视觉效果。例如,渐变动画、轮播图、悬浮按钮等特效都离不开对...

    浅谈javascript获取元素transform参数

    当使用`document.body.style.webkitTransform`时,可以获取到通过`style`属性设置的原始值,因为这是元素自身的属性。 然而,如果通过CSS文件设置`transform`,浏览器会将其转换为一个矩阵形式,这是因为矩阵运算...

    JavaScript特效

    - 使用`getComputedStyle`或`style`对象可以获取和设置元素的实时样式。 3. **动画原理** - 常用的动画实现方式包括:`requestAnimationFrame`、`setTimeout`和`setInterval`。 - `requestAnimationFrame`是...

    JavaScript特效(新)

    例如,可以使用`element.style.property = value`设置样式,或者使用`getComputedStyle`获取元素的计算样式。CSS3引入的许多动画属性,如`transition`和`animation`,也可以通过JavaScript进行控制。 五、定时器和...

    JavaScript DOM 编程艺术源代码

    7. **CSS操作**:JavaScript可以用来更改元素的样式,如`element.style.property`用于设置内联样式,或者使用`getComputedStyle`获取元素的实际样式。 8. **动画效果**:通过定时器(如`setTimeout`和`setInterval`...

    利用原生JavaScript获取元素样式只是获取而已

    JavaScript获取元素样式的原理和限制 在原生JavaScript中,获取元素样式与设置元素样式是完全不同的操作。获取样式意味着我们只能获取到当前元素的样式信息,并不能直接影响到元素的样式表现。特别需要注意的是,...

    javaScript 读取和设置文档元素的样式属性

    1. 直接获取和设置元素的内联样式,通过使用element.style.propertyName的方式来访问和修改样式。这种方式直接作用于元素的style属性,因此具有较高的优先级。例如,要设置一个元素的背景颜色,可以使用document....

    javascript特效

    通过JavaScript,我们可以动态地修改CSS类,或者使用`getComputedStyle()`方法获取元素的计算样式,以实现动态的视觉变化。 常见的JavaScript特效包括但不限于: 1. 图片轮播:通过改变图片的显示顺序或使用CSS...

    javascript特效集锦

    例如,使用`style`对象直接操作元素样式,或者通过`getComputedStyle`获取元素的计算样式。 4. **定时器与动画**:`setTimeout`和`setInterval`函数用于设置延迟执行或周期性执行的代码,常用于创建动画。例如,...

    JavaScript网页特效

    3. **CSS操作**:JavaScript可以直接修改元素的CSS样式,如`style.backgroundColor`改变背景色,`style.fontSize`调整字体大小,或者使用`getComputedStyle()`获取元素的实际计算样式。 4. **动画效果**:通过...

    网站开发JavaScript特效代码

    例如,使用`style`属性直接修改元素样式,或者通过`getComputedStyle`获取元素的实时样式。 4. **事件处理**:JavaScript特效通常基于用户交互,如点击、滚动、悬停等事件。学习这些特效代码能帮助理解如何使用`...

    1500个前端开发常用JavaScript特效

    通过`getComputedStyle`获取元素的实时样式,使用`setInterval`或`requestAnimationFrame`创建平滑的动画。`classList`对象允许方便地添加、移除和切换CSS类。 4. **动画原理**:了解如何使用JavaScript创建各种...

    IE及firefox下获取及设置样式值的代码

    总结来说,这篇文章揭示了在IE和Firefox下获取和设置样式值的不同方法,以及处理像`float`这样的特殊属性的方法。理解这些差异对于编写兼容多种浏览器的JavaScript代码至关重要。在实际开发中,通常会使用库如jQuery...

    JavaScript特效超级大集合

    例如,`document.getElementById()`、`querySelector()`和`querySelectorAll()`等方法用于获取元素,而`innerHTML`、`style`属性则用于修改元素内容和样式。 3. **CSS操作**:JavaScript可以直接操作CSS样式,改变...

    JavaScript使用技巧大全

    19. **CSS与JavaScript交互**:通过`getComputedStyle()`, `style.property`等方法读取和修改元素的样式。 20. **性能优化**:了解`requestAnimationFrame()`在动画中的应用,以及如何通过`setInterval()`和`...

    老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)

    本文将深入探讨如何使用 JavaScript 兼容性地获取CSS样式,无论是在 Internet Explorer (IE) 还是非 IE 浏览器(如 Google Chrome 和 Firefox)。 首先,我们需要了解CSS样式的三种基本类型: 1. 行内样式:直接在...

Global site tag (gtag.js) - Google Analytics