[英]jQuery multiple CSS conflict
我有一個HTML文件,通過使用jQuery的 load()
方法調用其中的外部文件。 但是,主HTML文件中的CSS與外部文件的CSS沖突。 我寫了一個例子。 我該怎樣預防呢?
load.html
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
function ext() {
$('#aaa').load('external.txt');
}
</script>
<body onLoad="ext()">
<style>
h1 {
color:green;
}
</style>
<h1>green</h1>
<div id="aaa"></div>
external.txt
<style>
h1 {
color:red;
}
</style>
<h1>red</h1>
PS:我的目的不是將類放入CSS文件中,例如h1 #red
您可以簡單地將類應用於h1,如下所示: <h1 class="red">Red</h1>
然后只需創建一個類.red { color: red; }
.red { color: red; }
您可以使用!important
來設置正確的樣式,或者查看特異性以及如何在此處使用它。
例如,分配一個class
然后在所需的CSS中調用class
將覆蓋泛型h1
選擇器。
你可以嘗試給你的h1上課或者id
恩。 <h1 id="red"> Red </h1>
h1 #red {
color: red;
}
CSS也適用於最新的給定參數。 所以,如果你在同一個文件中:
h1 {
color: red;
color: green;
}
它會使顏色變綠。
因此,首先使用正文加載ext.txt文件,然后應用該css,然后應用樣式標記css,並優先於之前加載的ext.txt文件。
另一條相關信息。 CSS還將根據您定位代碼的具體程度確定優先級。
防爆。
body div h1 {
color: blue;
}
h1 {
color: red;
}
即使紅色被稱為最后,因為藍色是更具體的目標,它將優先。
編輯:還要確保您的樣式標簽不在身體內部。
<html>
<head>
<style>Style Tags go here!</style>
</head>
<body>
Words and code and stuff
</body>
</html>
讓我感到驚訝
我將body onload更改為Jquery的document.ready,
$(document).ready(function(){
$('#aaa').load('external.txt');
});
</script>
<body >
我在Chrome中看到綠色,在Firefox中看到綠色和紅色,Firebug在源HTML上顯示我。
如果您只需要定位h1的第一個實例,則可能需要使用這些樣式:
h1 { color: green }
h1:first-child { color: red }
以下是一種主導一種風格而非另一種風格的選擇。 這可能是你想要做的,也可能不是。 這有點不清楚。
您可以選擇幾種不同的選擇。 因為你說你不想使用類或ID來完成這個,我會把它們留下來。 否則,你可以只使用一個類或幾個類來支配h1的風格。
稍后加載
如果不了解使用jQuery的load()
來添加CSS文件的情況,如果必須這樣,您可以在樣式標記之后執行此操作。
<body onLoad="ext()">
<style>
h1 {
color:green;
}
</style>
<script>
function ext() {
$('#aaa').load('external.txt');
}
</script>
話雖這么說,除了使用<link.../>
之外,我還能推薦更好的方法嗎? 同樣,我不知道上下文,但如果你必須使用JavaScript來做到這一點......
<body>
<style>
h1 { color: red; }
</style>
<script>
var myStyle = document.createElement('link')
myStyle.rel = "stylesheet"
myStyle.href = "external.css"
document.body.appendChild(myStyle)
</script>
</body>
你可以將它放在任何地方,它會在結束</body>
標記之前自動插入external.css,使其優先於相同的選擇器。
增加特異性
body h1 {
color: green;
}
通過指定h1是您找到的任何父級的子級,您可以有效地使您的選擇器更具體,而無需使用類或ID。
!重要屬性
我討厭使用它,更不用說推薦了,但它用最后一個字段來限制你的CSS。
h1 {
color: green !important;
}
沒有其他CSS可以覆蓋它。 確保!important
在...之前;
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.