css - Bootstrap 4 悬停在导航栏链接上会导致闪烁

标签 css twitter-bootstrap bootstrap-4

我想让我的导航栏链接在我将鼠标悬停在它们上面时具有更深的背景颜色。它工作正常,但是当我更改填充(在这种情况下为 0px)时,它开始闪烁:(全屏查看以获得更好的效果) 此外,图像链接与其他链接的高度不同(折叠时,它有正确的空白区域),使用当前的样式规则我无法将它放在同一行中。

**编辑:这是由 padding:0px!important 引起的,但那是因为我不希望悬停背景占据整个高度。如何让悬停背景的高度变小?

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"/>

<style>       
    .navbar {
        min-height: 80px;
        font-size: 0.8rem;
        font-weight:500;
    }

    .navbar-brand {
        padding: 0 15px;
        height: 80px;
        line-height: 80px;
    }

    .navbar-toggle {
        /* (80px - button height 34px) / 2 = 23px */
        margin-top: 23px;
        padding: 9px 10px !important;
    }

    @media (min-width: 768px) {
        .navbar-nav > li > a {
            /* (80px - line-height of 27px) / 2 = 26.5px */
            padding-top: 26.5px;
            padding-bottom: 26.5px;
            line-height: 27px;
        }
    }
    .bottom-space {
        margin-bottom: 20px;
    }
    #navbar_logged_in > a:link {
        color: white ; 
    }
    #navbar_logged_in > a:hover {
        opacity:0.7 ; 
    }
    #navbar_logged_in > a:visited {
        color: white ;
    }

    #navbar_logged_in > li.nav-link{
        color:white;
    }

    .nav-pills .nav-link.active, .nav-pills .show > .nav-link{
        background-color: #17A2B8;
    }

    body {
        padding-top: 110px;
    }

    .main-nav a:hover {       
        background-color: #0D47A1!important;
        padding: 0px!important;

    }  
</style>
<nav id="navbar_logged_in" class="navbar navbar-expand-lg navbar-light bottom-space fixed-top" style="background: linear-gradient(to right, #3399ff , #1a8cff, #0080ff, #0073e6);">
    <div class="container">
        <a class="navbar-brand mx-auto" href="#">            
            Logo
        </a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarTogglerDemo02" aria-controls="navbarTogglerDemo02" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse text-right" id="navbarTogglerDemo02">         
            <ul class="navbar-nav ml-auto mt-2 mt-lg-0">
                            <li class="nav-item main-nav">
                    <a class="nav-link" href="#" style="color:white;margin-right:25px;">
                        <img class="img-circle" src="Image" alt="Image" width="35" height="35" style="border-radius: 50%!important;">
                    </a>
                </li>
                <li class="nav-item main-nav">
                    <a id="homepage_link" class="nav-link" href="#" style="color:white">Homepage</a>
                </li>

                <li class="nav-item main-nav">
                    <a class="nav-link" href="#" style="color:white">About</a>
                </li>
                <li class="nav-item main-nav">
                    <a class="nav-link" href="#" style="color:white">Log Out</a>
                </li>
            </ul>
        </div>
    </div>
</nav>

是什么原因造成的?我该如何解决?

谢谢

最佳答案

闪烁是因为当您悬停时,您正在移除填充,这会将元素从光标下方拉出。然后,这将停止悬停并重新应用将其放回光标下方的填充,从而触发悬停状态。冲洗并重复。

要停止闪烁,您需要这两种样式一起工作:

@media (min-width: 768px) {
    .navbar-nav > li > a {
        padding-top: 26.5px;
        padding-bottom: 26.5px;
        line-height: 27px;
    }
}

.main-nav a:hover {       
    background-color: #0D47A1!important;
    padding: 0px!important;

}

如果您希望悬停背景占用较少的高度,请将您不希望背景的部分替换为边距。这可能看起来像:

@media (min-width: 768px) {
    .navbar-nav > li > a {
        padding: 6.5px 8px; /* top/bottom, sides */
        margin: 20px 0px;
        line-height: 27px;
    }
}

.main-nav a:hover {       
    background-color: #0D47A1!important;
}

简而言之,不要让你的框大小在悬停时发生变化,如果你不想要背景,请使用 margin 而不是 padding

关于css - Bootstrap 4 悬停在导航栏链接上会导致闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50048633/

相关文章:

css - 在 CSS 分页媒体中创建水印文本

javascript - onclick 和 href 一起不起作用

javascript - 如何折叠所有表格行

css - 媒体查询不起作用,直到我输入!重要

HTML - 导航栏和侧边栏不是全宽

jquery - 如何(正确地)在基础中包含 Reveal?

html - CSS 响应式左右浮动(更改哪个 div 位于顶部)?

html - Bootstrap - 根据方向更改网格

javascript - 使用 bootstrap、jquery 和 javascript 创建动态主页

bootstrap-4 - Bootstrap v4.0 新的列偏移方法