取消一些 CSS 样式

Posted

技术标签:

【中文标题】取消一些 CSS 样式【英文标题】:Cancel some CSS Style 【发布时间】:2012-08-03 08:38:48 【问题描述】:

对于一个项目,我必须使用已定义的样式表。我无法编辑它,我必须接受它。

但是,有些样式不适用于本网站(例如边距)。

我也创建了自己的 CSS 文件来覆盖其中的一些属性。

举个例子,如果我有这个:

<div id="main-content" class="container">My test text</div>

在一个 css 文件中还有以下 css 指令:

div.containermargin:5px
div#main-contentmargin-left:235px; ...

我想在我的 css 中定义 div#main-content 没有这个边距,但它是默认值。

我该怎么做?我不想做一个margin-left:0px,因为如果我有一个全局样式(说所有div.container 应该有一个5px 的边距,我希望它适用于我以前的div。这些数据可能会改变。

【问题讨论】:

检查!important 【参考方案1】:

没有任何纯 CSS 方法可以删除属性值声明而不将其显式设置为另一个值。

所以如果你有这样的情况:

 <div id="divA" class="class3 class1"></div>
 <div id="divB" class="class3 class2"></div>

 .class1margin:2px;
 .class2margin:3px;
 .class3margin:10px;

...并且您想取消 class3 的效果,以便 divA 的边距为 2px,而 divB 的边距为 5px,您唯一的纯 CSS 资源将涉及显式引用每个案例。 IE。在您的覆盖样式表中,您必须重新声明:

 .class1margin:2px;
 .class2margin:3px;

...等等,但许多类/选择器上下文可能会受到影响。这恐怕是不现实的。

如果您愿意深入研究 javascript,您实际上可以从元素中删除类名。

有关如何执行此操作的直接 JavaScript 示例,请参阅:Remove CSS class from element with JavaScript (no jQuery)

如果你想要更简单的代码,并且愿意使用 JavaScript 库,jQuery 会让你在一行中做到这一点:

$('divA').removeClass('class3');

【讨论】:

【参考方案2】:

您可以添加另一个 css 类,例如 .no-left-margin

<div id="main-content" class="container no-left-margin">My test text</div>

并添加到您的 CSS 中

.no-left-margin
 margin-left: 0px !important;

【讨论】:

有一些由外部库生成的 css 类,我想保留它们的名称。【参考方案3】:

嘿,现在习惯了

.container#main-contentmargin-left:xxxx; ...

【讨论】:

如果我这样做,我将不得不在每次 div.container 更改时更新这个margin-left。而margin是最简单的可能性 暂时没有,还没有发布。但浮士德的回答确实说明了你的回答如何。【参考方案4】:

只要您的样式表在原始样式表之后,您就可以在 css 中使用相同的选择器,它会覆盖它。

然后放

div.containermargin:5px
div#main-contentmargin-left:auto;

【讨论】:

#main-content margin-left 会是 5px 吗?因为我不想覆盖它,所以我想让它不在这里(然后他采用任何其他匹配或继承其值的样式)

以上是关于取消一些 CSS 样式的主要内容,如果未能解决你的问题,请参考以下文章

css 怎么去掉button默认样式

jquery 点击当前添加一个样式,在次点击取消这个样式,

点击之后去取消当前的样式,给选中对象添加样式

取消浏览器默认样式

css学习_css用户界面样式

笔记:JS设置CSS样式的几种方式