外部样式表不会覆盖引导程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了外部样式表不会覆盖引导程序相关的知识,希望对你有一定的参考价值。

我想改变一些受parent元素的bootstrap类影响的元素的样式。 - 我把样式表的链接放在bootstrap之下 - 我甚至将.css文件移到了html的文件夹之外,因为它在类似的主题中得到了提升,但它仍然不起作用(如果我将代码放在内部风格的工作中)

现在我只是想从列表中删除样式

请注意:从代码片段运行此代码将向您显示没有问题,但是在浏览器上它实际上并不起作用

这是代码

ul {
  list-style-type: none;
}
<!doctype html>
<html lang="en-us">

<head>
  <title>Title</title>
  <!-- Required meta tags -->
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

  <!-- Bootstrap CSS -->
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous">
  <link rel="stylesheet" type="text/css" href="../style.css">

  <!--
    <style>
      ul{
        list-style-type:none;
      }
    </style>

      -->
</head>

<body>

  <div class="container-fluid">
    <div class="row">
      <div class="col-sm-8">
        <nav class="navbar navbar-expand-sm">
          <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsibleNavbar">
            <i class="fas fa-bars"></i>
          </button>
          <div class="collapse navbar-collapse" id="collapsibleNavbar">
            <ul>
              <li>
                <a class="active" href="/home.html">Home</a></li>
              <li>
                <a href="/blog.html">Blog</a>
              </li>
              <li>
                <a href="/digitalNomad.html">Digital Nomad</a>
              </li>
              <li>
                <a href="/about.html">About</a>
              </li>
            </ul>
          </div>
        </nav>
      </div>

      <div class="col-sm-4">
        <ul>
          <li>Facebook</li>
          <li>Instagram</li>
          <li>Twitter</li>
        </ul>
      </div>
    </div>
  </div>

  <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.10/css/all.css" integrity="sha384-+d0P83n9kaQMCwj8F4RJB66tzIwOKmrdb46+porD/OvrJ+37WqIM7UoBtwHO6Nlg" crossorigin="anonymous">
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js" integrity="sha384-smHYKdLADwkXOn1EmN1qk/HfnUcbVRZyYmZ4qpPea6sjB/pTJ0euyQp0Mk8ck+5T" crossorigin="anonymous"></script>
</body>

</html>
答案

你需要看看CSS Specificity规则。仅仅因为您定义规则并不会自动意味着它会覆盖之前声明的规则。

特异性计算4个因素abcd

a     (1 if inline, 0 if in a file),
b     number of IDs in CSS rule
c     number of attribute selectors, classes and pseudo-classes,
d     number of element names and pseudo-elements.

具有最大4位数abcd的规则获胜并覆盖较小的声明,因此内联声明将覆盖包含的CSS文件中声明的任何内容。

其他CSS特异性文章

可能的解决方案

改变“基础”样式或直接覆盖Bootstrap样式通常不是一个好主意。

  1. 您可以通过在规则中添加!important来覆盖其他声明,但这通常被认为是一个糟糕的解决方案。
  2. 将您自己的类和/或id添加到您要自定义的元素中。
  3. 如果你希望有一个快速的效果,那么你可以添加自己的特定idclassbody元素,然后声明你的规则依赖于idclass的后代。以这种方式使用id将使您的规则在文件中具有01xx的特异性,这可能足以覆盖Bootstrap规则。

e.g

文件中的CSS:

#mypage ul {
    list-style-type:none;
}

HTML:

<body id="mypage">
...
   <ul>
   </ul>
</ul>
另一答案

你能验证你的外部样式表是否真的被加载了吗?如果在内部样式标记中写入时有效,但在外部文件中没有,则听起来该文件未正确加载。这可能是文件名,文件路径,甚至文件本身的无效结构的问题。

另一答案

在引导链接上方包含您自己的样式表

<link rel"stylesheet" type="text/css" href="../style.css">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous">

我有很多次这个问题,这对我来说每次都适用,因为上面的CSS样式表比下面的那个更受欢迎

另一答案

继我的上一个答案,这在Chrome中运行良好:

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" integrity="sha384-9gVQ4dYFwwWSjIDZnLEWnxCjeSWFphJiwGPXr1jddIhOegiu1FwO5qRGvFXOdJZ4" crossorigin="anonymous">
     <link rel="stylesheet" type="text/css" href="css/myrule.css">
     <meta charset="UTF-8">
     <title>Tests</title>
 </head>
 <body id="mypage">
      <div class="container-fluid">
      <!-- rest of your html here -->

myfile.css只包含:

 #mypage ul {
    list-style-type:none;
 }

以上是关于外部样式表不会覆盖引导程序的主要内容,如果未能解决你的问题,请参考以下文章

覆盖引导样式不起作用

外部样式表声明的样式并不会进入style对象

将样式表限制为一个标签和后代

antd 覆盖样式化组件

添加 Bootstrap 的副本作为自定义的起点

微信小程序覆盖自定义组件样式