0

我有一个位于页面上的 div。问题是它从样式表(样式表 A)中继承全局样式,例如全局 ul 和表格样式,但是,我希望这个单个 div 不这样做。我要求有问题的 div只能从另一个样式表(样式表 B)获取其样式。目前他们正在发生冲突。

有没有办法做到这一点而不必以任何方式接触样式表 A?这是因为样式表 A 控制着我站点的所有主要样式,并且站点足够大,以至于更改可能会破坏某些内容。有问题的 div 包含与站点无关的数据,因此不需要样式表 A。

如果有帮助,我正在使用 javascript Prototype?请不要Jquery :)

使用 iframe 怎么样?这是一个有效的解决方案,它将如何工作?

非常感谢所有帮助。

4

3 回答 3

1

任何重复的样式将始终应用最后一个读取。

假设你有这个样式:.class { background-color: red; }在你的样式表 A 中,这个在 B:.class { background-color: blue; }中。

因此,如果您在 B 之前调用样式表 A:

<link href="sheet_a.css" rel="stylesheet" type="text/css" />
<link href="sheet_b.css" rel="stylesheet" type="text/css" />

然后应用的样式将是.class { background-color: blue; },因为它是浏览器读取的最后一个样式。

现在,如果这不起作用(如果您的样式表以不同的顺序被调用,或者 A 中的样式比 B 中的样式更具体,所以 A 仍在应用中),您可以使用!importanttag

.class { background-color: blue !important; }将覆盖 A 中的样式,只要它在原始样式中也没有 !important。

如果您只想更改一个元素,则不一定需要新的样式表。您可以<style></style>在 html 头中的标签之间使用新样式,也可以在元素 ( <div style="background-color: blue;"></div>) 中内联。内联元素比外部工作表上的相关性更高。

于 2012-10-30T02:59:30.200 回答
1

也许最简单的方法是简单地找出 div 从样式表 A 继承的每个样式属性,然后用样式表 B 手动覆盖这些样式。

如果您想将 div 放入 iframe,那也应该可以。您需要该 div 拥有自己的 HTML 文件,托管在与主页相同的域中(否则您会遇到安全问题)。链接到 div 页面中的 stylesheetB,它会起作用。但是,在为 iframe 设置样式时,您会遇到一些问题。由于您无法从父文档中读取子文档中的 CSS 属性,因此您必须使 iframe 具有固定的宽度和高度,这在许多情况下都会受到限制。我想你可以让 iframe 滚动,但这也可能不是你想要的。

我认为最好的方法是使用 Chrome Inspect Element 或 Firefox 中的 Firebug 来查看 div 正在接收的 CSS 继承,然后

于 2012-10-29T18:42:42.097 回答
0

您可以在 html 结构上使用内联样式,也可以在样式表 b!important上添加您想要的规则以覆盖样式表 a 上的样式

例如,在样式表 b上,您将执行以下操作:

.element {background:red !important}
于 2012-10-31T12:07:21.730 回答