html - 带有过渡边框的 Twitter Bootstrap 导航栏 - 背景颜色未覆盖整个事件元素

标签 html css twitter-bootstrap

请参阅我的工作示例。 正如您所看到的,背景颜色并未覆盖整个事件元素。 当我删除过渡 CSS 时,它将像本示例一样工作(请将浏览器大小调整为移动版本)

https://getbootstrap.com/examples/navbar-fixed-top/#

如何解决这个问题?

/* Navbar */
.navbar-fixed-top{
    top: 80px;
}
.navbar-default{ /* assigning the top bar to the entire navbar div element */
    background-color: #4F4F4F;
}
nav.navbar {
    box-shadow: 0 0 2px 0 #ccc;
}
nav.navbar a {
    color: #FF7D36;
}
nav.navbar ul.navbar-nav a {
    color: #FF7D36;
    border-style: solid;
    border-width: 0 0 2px 0;
    border-color: #000;
}
nav.navbar ul.navbar-nav a:hover,
nav.navbar ul.navbar-nav a:visited,
nav.navbar ul.navbar-nav a:focus,
nav.navbar ul.navbar-nav a:active {
    background: #000;
}

nav.navbar ul.navbar-nav a {
    text-decoration: none;
    position: relative;
    display: inline-block;
}
nav.navbar ul.navbar-nav a::after {
    content: '';
    width: 80%;
    position: absolute;
    top: 100%;
    left: 10%;
    height: 2px;
    background-color: #FF7D36;
    transform: scaleX(0);
    transition: transform .35s ease;
}
nav.navbar ul.navbar-nav a:hover::after {
    transform: scaleX(1);
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Basic Bootstrap Template</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Optional Bootstrap theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
</head>
<body>
    <nav class="navbar navbar-inverse navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Navigation ein-/ausblenden</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="#">Projekt-Titel</a>
        </div>
        <div id="navbar" class="collapse navbar-collapse">
          <ul class="nav navbar-nav">
            <li class="active"><a href="#">Start</a></li>
            <li><a href="#ueber">Über</a></li>
            <li><a href="#kontakt">Kontakt</a></li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </nav>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
</body>
</html>                                		

最佳答案

我在你的代码片段中评论了一行:

nav.navbar ul.navbar-nav a {
    text-decoration: none;
    position: relative;
    /* display: inline-block; */
}

使用该行,您覆盖了此 Bootstrap 规则:

.nav > li > a {
    position: relative;
    display: block;
    padding: 10px 15px;
}

您遇到了 CSS specificity 的问题.

这里是更正的代码片段:

/* Navbar */
.navbar-fixed-top{
    top: 80px;
}
.navbar-default{ /* assigning the top bar to the entire navbar div element */
    background-color: #4F4F4F;
}
nav.navbar {
    box-shadow: 0 0 2px 0 #ccc;
}
nav.navbar a {
    color: #FF7D36;
}
nav.navbar ul.navbar-nav a {
    color: #FF7D36;
    border-style: solid;
    border-width: 0 0 2px 0;
    border-color: #000;
}
nav.navbar ul.navbar-nav a:hover,
nav.navbar ul.navbar-nav a:visited,
nav.navbar ul.navbar-nav a:focus,
nav.navbar ul.navbar-nav a:active {
    background: #000;
}

nav.navbar ul.navbar-nav a {
    text-decoration: none;
    position: relative;
    /* display: inline-block; */
}
nav.navbar ul.navbar-nav a::after {
    content: '';
    width: 80%;
    position: absolute;
    top: 100%;
    left: 10%;
    height: 2px;
    background-color: #FF7D36;
    transform: scaleX(0);
    transition: transform .35s ease;
}
nav.navbar ul.navbar-nav a:hover::after {
    transform: scaleX(1);
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Basic Bootstrap Template</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Optional Bootstrap theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
</head>
<body>
    <nav class="navbar navbar-inverse navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Navigation ein-/ausblenden</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="#">Projekt-Titel</a>
        </div>
        <div id="navbar" class="collapse navbar-collapse">
          <ul class="nav navbar-nav">
            <li class="active"><a href="#">Start</a></li>
            <li><a href="#ueber">Über</a></li>
            <li><a href="#kontakt">Kontakt</a></li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </nav>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
</body>
</html>                                		

关于html - 带有过渡边框的 Twitter Bootstrap 导航栏 - 背景颜色未覆盖整个事件元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38719708/

相关文章:

php - PHP 验证后将表单数据发布到另一个页面

javascript - 使用 Javascript 设置元素的宽度会产生意想不到的结果

css - 如何在 PostCSS 中支持内联注释?

ruby-on-rails - Rails 中的 f.select 不应用 Bootstrap

jquery - 如何使单选按钮看起来像切换按钮

html - 如何使用播放按钮在网页上为youtube视频创建缩略图

css - 去除网页上冒号符号的跳跃

css - 如何为文本区域指定首选宽度/高度,但允许用户变大或变小?

html - 如何让 <div> 居中?

html - 使用 HTML 5 Mobile Boilerplate 构建的站点