【问题标题】:How to override CSS in joomla template如何在 joomla 模板中覆盖 CSS
【发布时间】:2015-06-01 22:18:42
【问题描述】:

在我的 Joomla 模板中,我想覆盖一些样式,所以我创建了自己的 CSS 并添加了样式,还有媒体查询。 最重要的是只有当我使用 !important 关键字并且某些东西根本不起作用时才有效。例如:

<div id="content_right" class="span3">

在这个 div 中,我有 class 和 id。我无法修改类,因为它会影响模板中的其他 div,所以我想通过 id 添加一些样式。我已经添加了它,但它不起作用。我已经用 Firebug 进行了检查,并且 css 已正确加载。可能是什么问题?

【问题讨论】:

  • 您能否提供更多信息。即您是否正在修改任何 joomla 插件?
  • 不,我没有修改任何插件

标签: css joomla overriding


【解决方案1】:

您面临的问题称为CSS specificity。

是的,!important 规则将覆盖所有其他样式,但不应因此而使用。

首先,您需要在Joomla 样式表之后调用样式表。

然后,您需要在样式表中使用与 Joomla 样式表中使用的相同(或更好)的特性。

为了澄清,请考虑以下示例代码:

<div id="content">
   <div id="subcontent"> ... </div>
</div>

结合这个 CSS:

#content #subcontent {
    background: yellow;
}
#subcontent {
    background: red;
}

#content #subcontent {
  background: yellow;
}
#subcontent {
  background: red;
}
<div id="content">
  <div id="subcontent">...</div>
</div>

第一个选择器显然比第二个更具体。因此,背景是黄色的,而不是红色的。

您也面临同样的问题。第一个选择器是 Joomla 样式表。因此,您需要将第二个选择器指定为相同(或更好)以覆盖它:

#content #subcontent {
  background: yellow;
}
#content #subcontent {
  background: red;
}

#content #subcontent {
  background: yellow;
}
#content #subcontent {
  background: red;
}
<div id="content">
  <div id="subcontent">...</div>
</div>

【讨论】:

  • 你的回答真的很清楚,但我还有一个问题:span3 是一个影响页面中多个元素的类,但我只想在包含其他类的情况下更改它,例如在一个 class=span3 的 div 里面我有一个 class=innerdiv 的 div...我怎样才能只更改具有 span3 类的外部 div 而不是所有 class=span3 的 div?
  • 这取决于结构。你能用一个例子做一个 JSFiddle 吗?
  • 我自己解决了……div有class和id,所以我使用id和specificity来正确更改css
猜你喜欢
  • 1970-01-01
  • 2014-11-27
  • 2012-12-23
  • 2012-06-14
  • 2014-01-28
  • 2014-12-09
  • 2014-02-06
  • 1970-01-01
  • 2012-05-18
相关资源
最近更新 更多