从CSS库(Bootstrap)覆盖CSS

5

我使用CSS库时的主要问题是它们往往会覆盖我特别设置的自定义CSS样式。例如,在这里,我有一个存在于Bootstrap expand/collapse菜单中的列表:

<ul class="nav navbar-nav">
   <li>
      <a href="#" style=""><img src="images/arrow.gif" style="width: 20px;">Link A</a>
   </li>
</ul>

我想设置自己的字体颜色,所以我使用以下CSS:

nav li {
  font-size: 16px;
  color: #004687;
}

但是当我在Firefox的检查器中查看时,我发现我选择的颜色被Bootstrap覆盖了。

我自定义的CSS出现在HTML文档的标签中加载Bootstrap文件之后。

如何防止这种情况发生,而不必为每个元素设置style="color: #004687"

编辑:感谢迄今为止提供的建议,但都没有成功。 我将完整的原始代码粘贴下来,以便您更加详细地了解:

<div class="container">
    <header class="navbar navbar-static-top bs-docs-nav">
      <div class="col-md-4 visible-xs" id="mobile-nav-outer">
        <div class="navbar-header">
            <button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".bs-navbar-collapse">
              <span class="sr-only">Toggle navigation</span>
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
            </button>
          <a href="../" class="navbar-brand">Menu</a>
        </div>
        <nav class="collapse navbar-collapse bs-navbar-collapse" id="mobile-nav-inner" role="navigation">
          <ul class="nav navbar-nav">
            <li>
              <a href="#" class="nav-mobile-link"><img src="images/arrow.gif" style="width: 20px;">Link A</a>
            </li>
          </ul>

        </nav>
      </div>
  </header>
</div>

我的CSS是这样包含的:
  <head>
    <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
    <link href="bootstrap/css/docs.min.css" rel="stylesheet">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    <script src="bootstrap/js/bootstrap.min.js"></script>

    <style type="text/css">
        #mobile-nav-outer {
          border: 1px solid #CCC;
          background-color: #FFF;
        }
        #mobile-nav-inner {
          border: 1px solid #CCC;
          background-color: #FFF;
          margin: 3px;
        }
        nav li {
            font-size: 16px;
            color: #004687;
        }
        .nav-mobile-link {
            font-size: 16px;
            color: #004687;        
        }
    </style>
  </head>

编辑3:我发现一个便宜的解决方法,通过使用ID而不是类来实现,由于CSS的特殊性(ID优先于类),这种方法可行。虽然这并不是一个很干净的解决方案,但我仍然想知道为什么不能用自己的样式覆盖Bootstrap的类。


尝试使用 nav li { font-size: 16px !important; color: #004687 !important; } - Vivekh
谢谢您的建议,但问题仍然存在。 - John 'Mark' Smith
3
您需要了解CSS的特异性,这将回答您的问题:http://www.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/。 - Aurélien Grimpard
我猜你可能没有按照我的想法去做,但是你是否使用了你所写的代码呢?因为我们必须声明nav是一个类,所以如果你没有这样写,请尝试一下。.nav li{ font-size: 16px !important; color: #004687 !important; } - Vivekh
2个回答

2

通过将附加类添加到列表中来覆盖它:

<ul class="nav navbar-nav custom-class">
    <li>
        <a href="#" style=""><img src="images/arrow.gif" style="width: 20px;">Link A</a>
    </li>
</ul>

并且在您的自定义样式中:

.nav.custom-class li {
    font-size: 16px;
    color: #004687;
}

0
尝试将自定义 CSS 文件放置在 bootstrap.css 之下。
或者。
nav li {
  font-size: 16px !important;
  color: #004687 !important;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接