码迷,mamicode.com
首页 > Web开发 > 详细

使用原生javascript如何读写css样式?

时间:2017-02-25 10:37:53      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:

一说起操作css样式很多人都会想到jQuerycss方法: $(selector).css(name) ,但是有思考过如何使用原生javascript来实现类似的功能么?本文和大家分享的就是使用原生javascript实现css样式相关内容,一起来看看吧,希望对大家学习javascript有所帮助。
大家最熟悉的原生js操作样式的方法非DOM中的Style对象莫属了,但是这个方法只能获取和修改html文档中的内联样式,无法操作非内联样式(内部样式和外部样式表)。我通过搜索和整理,总结了使用原生jscss样式的读写实现。
获取样式
1. dom style
这个方法只能获取内联样式:
var text = document.getElementById(’text’);var textColor = text.style.color;
// 得到textColor的值为 ’#000’
2. currentStyle
这个方法只适用于IE浏览器,在形式上与element.style相近,区别在于正如currentStyle其名——目前的样式(css加载后的样式),返回的是元素当前最终的CSS属性值,包括了内部style标签里的样式和外部引入的css文件。
用法:元素.currentStyle.属性
比如我们要获取idboxwidth
var boxWidth = document.getElementById(’box’).currentStyle.width;
// 得到boxWidth的值为 ’200px’
3. getComputedStyle
getComputedStyle是一个可以获取当前元素所有最终使用的CSS属性值。返回的是一个CSS样式声明对象([object CSSStyleDeclaration]),并且是只读的。
在兼容性上,基本支持:ChromeFirfoxIE9OperaSafari
用法:getComputedStyle(元素伪类).属性,第二个参数如果不是伪类就设置为null吧。
var el = document.getElementById("box");var style = window.getComputedStyle(el , ":after");
来~封装一个通用的获取样式的函数
为了适用于各大主流浏览器,我们来写一个函数:
// 这个函数需要传递两个参数:元素对象和样式属性名称
function getStyle(el, styleName) {
if( el.currentStyle ) {
// for IE
return el.currentStyle[styleName];
} else {
// for peace
return getComputedStyle(el, false)[styleName];
}
}
接着调用这个函数来获取box的宽度:
var box = document.getElementById("box");
var boxWidth = getStyle(box, ’width’);
这个函数并没有考虑到对伪类的相关操作,可以根据需要自行扩展~
getComputedStylestyle的区别?
既然都是获取样式属性的值,它们有啥区别呢:
1.只读与可写
getComputedStyle方法是只读的,只能获取样式而不能设置,但是element.style既能读也能写。
2.获取的对象范围
getComputedStyle方法获取的是最终应用在元素上的所有CSS属性对象(即使没有CSS代码,也会把默认的祖宗八代都显示出来);而element.style只能获取元素style属性中的CSS样式。因此对于一个光秃秃的元素
getComputedStyle方法返回对象中length属性值(如果有)就是190+(据我测试FF:192, IE9:195, Chrome:253, 不同环境结果可能有差异), element.style就是0
设置样式
1. dom style
这个不用说了吧,比如把元素的背景颜色改为红色:
var el = document.getElementById(’box’);
el.style.backgroundColor = ’red’;
2. cssText属性
cssText 的本质就是设置 HTML 元素的 style 属性值。它是一组样式属性及其值的文本表示。这个文本格式化为一个 CSS 样式表,去掉了包围属性和值的元素选择器的花括号。
它的用法和innerHTML类似: document.getElementById("d1").style.cssText = "color:red; font-size:13px;";

来源:悟空的博客

使用原生javascript如何读写css样式?

标签:

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
jiangjie190
加入时间:2016-02-19
  关注此人  发短消息
文章分类
jiangjie190”关注的人------(0
jiangjie190”的粉丝们------(0
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!