[英]`font` by itself seems to make `font-style` unchangeable
在下面的代碼中,當我將font-size
和font-family
合並為font
,然后使用JS更改new-style
類時,將行font-style: italic;
行被忽略:
<!DOCTYPE html>
<html lang="en-US">
<head>
<title>Chapter 9, Example 5</title>
<style>
#divAdvert {
font: 12pt Arial;
}
.new-style {
text-decoration: underline;
font-style: italic;
}
</style>
</head>
<body>
<div id="divAdvert">
Here is an advertisement. Why doesn't this italicize?
</div>
<br><button onclick="clickMeh();">Click Meh</button>
<script>
function clickMeh() {
var divAdvert = document.getElementById("divAdvert");
divAdvert.className = "new-style";
}
</script>
</body>
</html>
但是當我將它們分開時,該行將按預期斜體顯示:
<!DOCTYPE html>
<html lang="en-US">
<head>
<title>Chapter 9, Example 5</title>
<style>
#divAdvert {
font-size: 12pt;
font-family: Arial;
}
.new-style {
text-decoration: underline;
font-style: italic;
}
</style>
</head>
<body>
<div id="divAdvert">
Here is an advertisement.
</div>
<br><button onclick="clickMeh();">Click Meh</button>
<script>
function clickMeh() {
var divAdvert = document.getElementById("divAdvert");
divAdvert.className = "new-style";
}
</script>
</body>
</html>
為什么???????
更新:感謝來自Evgeny和Michael的意見,我設法通過在.new-style
(在CSS中)添加#divAdvert
使其簡單地工作,我認為這是最正確的答案。 這樣可以保留ID,並可以識別出new-style
類完全依賴於ID的事實。 Codepen在這里 。
這是CSS的特殊性問題。 font
上#divAdvert
將覆蓋由具有較低特異性的規則定義的所有字體屬性,和一類具有比一個id特異性較低。 您只需匹配或使用更高的特異性進行更改。
我可以使用一個類作為選擇器來設置#divAdvert
樣式(我在下面做了什么)並追加新類而不是覆蓋它,或者可以在選擇器中使用#divAdvert.new-style
而不是.new-style
。 通常,盡管這樣會遇到類似問題,但我還是盡量避免使用ID來設置樣式。
<!DOCTYPE html> <html lang="en-US"> <head> <title>Chapter 9, Example 5</title> <style> .divAdvert { font: 12pt Arial; } .new-style { text-decoration: underline; font-style: italic; } </style> </head> <body> <div id="divAdvert" class="divAdvert"> Here is an advertisement. Why doesn't this italicize? </div> <br><button onclick="clickMeh();">Click Meh</button> <script> function clickMeh() { var divAdvert = document.getElementById("divAdvert"); divAdvert.classList.add('new-style'); } </script> </body> </html>
因為#ID
在層次結構中比.class
高,並且font
本身包含其所有子屬性,所以即使您不編寫它們,它們也將被視為默認值。
您還可以使用font-style: italic !important;
在.class
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.