这是一个非常基本的问题。
如果是<div>
class="oldClass"
。
如果我使用JavaScript(使用.className)将该div的类更改为class="newClass"
。将以前的所有风格都消失了吗?或者,在应用newClass
?
更详细地阐述我的问题。如果oldClass
是
.oldClass
{
border:1px solid red;
background-color:green;
}
和newClass
是
.newClass{
background-color:black;
}
使用javascript(使用.className)应用newClass
后,元素具有哪些样式?
(注意 - 我使用不同的代码进行了几次测试。每次都得到不同的结果。这就是为什么我要问一个非常基本的问题) < / p>
答案 0 :(得分:2)
只会应用newClass background-color:black;
回复您的评论:DEMO HERE
答案 1 :(得分:0)
因此,如果您通过将className
设置为“newClass”来删除“oldClass”,则.oldClass
选择器中定义的样式将不再出现在该元素上,但.newClass
选择器样式将出现。
答案 2 :(得分:0)
在任何时候,所有可以匹配元素的样式规则都将按特定顺序应用于它*。如果用newClass替换class oldClass,则该元素将不再具有oldClass类,因此为oldClass指定的样式规则可能不再适用于它。
一个元素一次可以有多个类。要设置多个类,只需通过空格分隔它们。
*)订单有点难以解释,但最基本的是:
!important
值具有最高优先级#element
).class
和[attr]
)tag
)您可以阅读有关特异性here的更多信息。
示例:
HTML
<div id="el" class="c1 c2 c3" style="color:green">I am text</div>
CSS:
#el { /* matches elements with id=el */
color:red;
background-color:blue;
}
.c1.c2 { /* matches elements with classes c1 and c2 */
height:50px;
}
.c1,
.c2 { /* matches elements with class c1 and elements with class c2 */
height:100px;
}
.c1 { /* matches elements with class c1 */
color:grey;
background-color:purple;
}
.extra { /* matches elements with class extra */
width:50px;
}
在该示例中,div将具有以下样式:
如果您要将c1
换成extra
,它将具有以下样式: