[英]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.