可能大家一说起操作css样式,很多人都会想到jQuery的css方法:<代码>(选择)美元。css(名字)> 代码,但是有思考过如何使用原生js来实现类似的功能么?
大家最熟悉的原生js操作样式的方法非DOM中的风格对象莫属了,但是这个方法只能获取和修改html文档中的内联样式,无法操作非内联样式(内部样式和外部样式表)。
我通过搜索和整理,总结了使用原生js对css样式的读写实现。下面话不多说,来看看详细的介绍吧。
<强> 1。dom风格强>
这个方法只能获取内联样式:
var文本=. getelementbyid('文本'); 输入textColor=text.style.color var;//得到输入textColor的值为“# 000”
<强> 2。currentStyle 强>
这个方法只适用于IE浏览器,在形式上与<代码> element.style> 代码相近,区别在于正如currentStyle其名——目前的样式(css加载后的样式),返回的是元素当前最终的css属性值,包括了内部风格标签里的样式和外部引入的css文件。
用法:元素.currentStyle。属性
比如我们要获取id为盒子的宽度:
var boxWidth=. getelementbyid(箱).currentStyle.width;//得到boxWidth的值为“200 px”
<强> 3。getComputedStyle 强>
getComputedStyle是一个可以获取当前元素所有最终使用的CSS属性值。返回的是一个CSS样式声明对象([对象CSSStyleDeclaration]),并且是只读的。
在兼容性上,基本支持:Chrome, Firfox, IE9,歌剧,Safari
用法:getComputedStyle(元素,伪类)。属性,第二个参数如果不是伪类就设置为零吧。
var el=. getelementbyid(“盒”); var=窗口风格。getComputedStyle (el,“:”);
来~封装一个通用的获取样式的函数
为了适用于各大主流浏览器,我们来写一个函数:
//这个函数需要传递两个参数:元素对象和样式属性名称 styleName属性函数getStyle (el) { 如果(el)。currentStyle) {//即 返回el.currentStyle [styleName属性]; 其他}{//为和平 假返回getComputedStyle (el) [styleName属性]; } }
接着调用这个函数来获取箱子的宽度:
var盒=. getelementbyid(“盒”); var boxWidth=getStyle(盒子,“宽度”);
这个函数并没有考虑到对伪类的相关操作,可以根据需要自行扩展~
既然都是获取样式属性的值,它们有啥区别呢:
<强>只读与可写强>
getComputedStyle方法是只读的,只能获取样式而不能设置,但是<代码> element.style> 代码既能读也能写。
<强>获取的对象范围强>
getComputedStyle方法获取的是最终应用在元素上的所有CSS属性对象(即使没有CSS代码,也会把默认的祖宗八代都显示出来);而<代码> element.style> 代码只能获取元素风格属性中的CSS样式。因此对于一个光秃秃的元素& lt; p>, getComputedStyle方法返回对象中长度属性值(如果有)就是190 +(据我测试FF: 192年,IE9:195, Chrome: 253年,不同环境结果可能有差异),而<代码> element.style> 代码就是0。
引用自——张鑫旭博客文章
<强> 1。dom风格强>
这个不用说了吧,比如把元素的背景颜色改为红色:
var el=. getelementbyid(盒); el.style。写成backgroundColor=焐?
<强> 2。cssText属性强>
cssText的本质就是设置HTML元素的风格属性值。它是一组样式属性及其值的文本表示。这个文本格式化为一个CSS样式表,去掉了包围属性和值的元素选择器的花括号。
它的用法和innerHTML类似:<代码> . getelementbyid (d1) .style。cssText="颜色:红色;字体大小:13 px;”; 代码>
详细请参考:CSSRule。cssText - Web api | MDN
以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用Javascript能带来一定的帮助,如果有疑问大家可以留言交流。谢谢大家对的支持。