覆盖css文件中的定义

时间:2009-10-14 12:17:34

标签: html css

我有一个css文件,用于定义所有< p> 标记的样式。

像这样

 p { ......... }

如何在包含默认样式的样式表的页面中编写< p>

6 个答案:

答案 0 :(得分:6)

没有简单的方法可以做到这一点。

虽然有一些常见的技巧可以模拟这种行为。最好的使用方式取决于被覆盖区域的复杂程度,以及您想要执行此操作的频率。

方法1(对于简单覆盖):

在语句中添加一个额外的类定义,类似于清除默认样式的定义(如http://www.wordpress.darfuria.com/blog/clear-css-defaults中所述)。您可能需要仔细安排声明,以防止“正常”样式优先。

.override {/*Your default style overrides, color: white;
 margin: 0; background:none; etc */}


<p class="override">foo</p>

方法2(笨重但对复杂区域有益):

使用iframe从您网站上其他位置托管的单独.html文件中提取整个区域。 iframe内的内容尊重框架内页面的CSS,通常忽略周围页面的CSS。

方法3(适用于一次性覆盖):

使用内联样式,正如其他人在此处所述。

编辑: 不是真正的方法,但可能是最正确的方法

也可能不是你想听到的

重新思考你如何安排课程。

例如:

如果被覆盖的<p>在某种程度上是特殊的,那么它可能值得它自己的类来描述它的目的是什么。 <p class='override'>不会帮助那些在你完成后会看到你的设计的人,因为它没有告诉他们被覆盖的文本是什么或为什么它的样式。

覆盖是否来自特定区域?如果是这样,那么像div.left_nav p {/*styles*/}这样的样式定义可能更合适。

最后,您的默认<p>样式是否真的默认?也许可以使用更松散指定的p样式,稍后会有其他p.foop.bar定义。

这并不能解决您的问题,但在开始下一个项目之前可能值得一试。

答案 1 :(得分:1)

只是为了检查。对于所有关于“默认样式”的讨论,如果你在CSS文件中设置一种元素的样式,例如: -

li {...}

然后,您还包含一个包含类定义的css文件,并将该类应用于该元素类型的单个实例,例如: -

<li class="myLiClass">Some Text</li>

根据我的理解,通过在css类中提供覆盖样式,不可能让类myLiClass覆盖元素的样式规范“li {...}”的任何属性。

因此我断言这意味着: -

“如果在css文件中为任何html元素类型(元素类型,而不是类)指定样式属性,则使用该css文件的所有页面都不能使用任何不同的样式显示该元素类型属性,其中不同的样式被称为css类。“

任何人都可以用绝对的肯定或者为什么这个断言不正确的实例来证实这一点。

答案 2 :(得分:0)

您可以使用内联样式覆盖默认样式。

<p style="background-color: #ffffff">white bg</p>

内联样式具有最高优先级。优先级高于内联样式的唯一样式是读者自己应用的用户样式。

答案 3 :(得分:0)

您可以在样式表中应用代码的样式,如下所示:

<强> CSS

p.first{ color: blue; }
p.second{ color: red; }

<强> HTML

<html>
<body>
<p>This is a normal paragraph.</p>
<p class="first">This is a paragraph that uses the p.first CSS code!</p>
<p class="second">This is a paragraph that uses the p.second CSS code!</p>
</body>
</html>

答案 4 :(得分:0)

我同意标签没有真正的“默认”样式,因为每个浏览器都有很大的自由来显示它。

我认为最简单的答案是重新考虑问题 - 定义一个用于所有 P 标记的类,然后如果你没有使用该类,它将为你提供默认样式。

<style>
       p.all {margin.top:9px;}
</style>
<p>This would be default style</p>
<p class="all">This would have your style</p>

或者,如果您将所有样式化内容包装在div或其他标记中,则可以嵌套这样的样式:

<style>
    div.foo p{border:1px solid black;}
</style>
<p>normal</p>
<div class="foo">
  <p>abnormal</p>
</div>

希望这有帮助。

答案 5 :(得分:0)

这是不可能的,因为没有“默认风格”。

默认样式来自浏览器的内部样式表和用户的首选项。因此,不同的浏览器和不同的用户具有不同的默认值。

您可以假设白色/透明背景,黑色前景和Arial字体将成为大多数人的默认样式,但您无法确定。

所以,就像其他人说的那样,你有一个根本问题,因为你有一个所有P元素的风格,并且没有办法编写一个不继承该风格的P,你只能覆盖 - 使用更具特异性的CSS来驾驭它。

相关问题