在很多情况下,都需要对网页上元素的样式进行动态的修改。在javascript中提供几种方式动态的修改样式,下面将介绍方法的使用、效果、以及缺陷。
1、使用obj.className来修改样式表的类名。
2、使用obj.style.cssTest来修改嵌入式的css。
3、使用obj.className来修改样式表的类名。
4、使用更改外联的css文件,从而改变元素的css
下面是一段html代码和css代码用来解释上面方法的区别的。
CSS
1
2
3
4
5
6
7
|
.style 1 { margin : 10px auto ; background-color : #9999FF ; display : block ; color :White; border : 1px solid white ; padding : 10px 25px ; font-size : 18px ; }
.style 1: hover{ background-color : #66B3FF ; cursor : pointer ;}
.style 2 { margin : 10px auto ; background-color : gray ; display : block ; color : black ; border : 1px solid white ; padding : 10px 25px ; font-size : 18px ; }
.style 2: hover{ background-color : black ; color :White; cursor : pointer }
|
HTML
1
2
3
4
5
6
7
8
9
|
< div >
< input id = "btnB" type = "button" name = "btnLogin" value = "登录" class = "style1" />
< div id = "tool" >
< input type = "button" value = "【obj.style.className】更改样式" onclick = "changeBackgroundColor()" />
< input type = "button" value = "【obj.style.cssText】更改样式" onclick = "changeFontSize()" />
< input type = "button" value = "【obj.className】更改样式" onclick = "addRadius()" />
< input type = "button" value = "更改外联css样式" onclick = "recover()" />
</ div >
</ div >
|
方法一、使用obj.className来修改样式表的类名
从下面的代码可以看出ob.style.cssTest是如何来btnB的样式的。
1
2
3
4
5
|
function changeStyle1() {
var obj = document.getElementById( "btnB" );
obj.style.backgroundColor= "black" ;
}
|
该段代码修改btB的文字的颜色,在浏览器中打开调试工具,可以发现btB标签中多了一个属性【style="内联式>外联式。而btB的hove伪类的background-color样式写在内联式中,所以嵌入式的background-color覆盖了伪类中,这就使得鼠标放入btB上感觉不到背景颜色的变化。
方法二、使用obj.style.cssTest来修改嵌入式的css
直接上JavaScript代码:
1
2
3
4
5
|
function changeStyle2() {
var obj = document.getElementById( "btnB" );
obj.style.cssText = " display:block;color:White;
}
|
该段代码和【一】中的效果是一样的,缺陷也是一样。
方法三、使用obj.className来修改样式表的类名
使用代码来修改btB引用样式的类名,如下段代码:
1
2
3
4
5
|
function changeStyle3() {
var obj = document.getElementById( "btnB" );
obj.setAttribute( "class" , "style2" );
}
|
通过更改btB的css的类名的方式来更改样式,更改样式类名有两种方式。1、obj.className = "style2"; 2、 obj.setAttribute("class", "style2");都是一样的效果。
用这种方式来修改css比上面的效果要好很多。
方法四、使用更改外联的css文件,从而改变元素的css
通过更改外联的css文件引用从而来更改btB的样式,操作很简单。代码如下:
首先得引用外联的css文件,代码如下:
1
2
3
4
5
6
|
<link href= "css1.css" rel= "stylesheet" type= "text/css" id= "css" />
function changeStyle4() {
var obj = document.getElementById( "css" );
obj.setAttribute( "href" , "css2.css" );
}
|
这样也能方便的更改btB的样式,个人觉得这种方式是最好用的,是实现整体页面换肤的最佳方案。
以上是关于Javascript_动态修改css样式方法汇总的主要内容,如果未能解决你的问题,请参考以下文章
javascript 动态修改css样式
使用 JavaScript 动态应用 CSS
利用javascript实现css操作
超实用!JavaScript修改CSS变量,达到动态修改样式的目的
JS 动态修改CSS 样式方法/全局
使用JavaScript修改伪类样式的方法