javascript - 如何更改滚动条上的导航栏 css 样式?

标签 javascript html css bootstrap-4

<分区>

我正在用 Bootstrap 4 做一个网站。导航栏的背景颜色是透明的,但是当用户向下滚动时,我希望它的背景颜色变成白色,并有一个柔和的过渡。相反,当导航栏返回时,我需要它的初始状态。是这样的: https://www.w3schools.com/w3css/tryw3css_templates_parallax.htm

我尝试过使用纯 javascript,但代码不起作用。

提前致谢!

JavaScript:

window.onscroll = function() {myFunction()};

function myFunction() {

    var navbarClass = document.getElementById("myNavbar").className.split(/\s+/);
    for (var i = 0; i < navbarClass.length; i++) {

        if (document.body.scrollTop > 100 || document.documentElement.scrollTop > 100) {
            navbarClass[i].classList.add("border", "animate-top");
        } else if (navbarClass[i].classList.contains("nav")) {
            navbarClases[i].classList.toggle("nav-white");
        }
    }

CSS

.first > div {
    color: #fff;
}
section {
    height: 350px;   
}
.first {
    padding-top: 70px;
    background-image: url('https://picsum.photos/1920/1080/?random');
    height: auto;
    background-attachment: fixed;
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
}
.nav {
    border: 0;
    border-radius: 0;
    background: rgba(255, 255, 255, 0.5);
}
.nav-white {
    border: 0;
    border-radius: 0;
    background: rgba(255, 255, 255, 1);
}
.nav-white .navbar-brand {
    color: black;
}
.nav-white .navbar-nav li a {
    color: black;
}
.nav-white .fa.fa-navicon {
    color: black;
}
.border {
    box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)
}
.animate-top{
    animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}
}

HTML 导航栏

<nav class="navbar navbar-expand-lg fixed-top nav" id="myNavbar">
    <a href="#" class="navbar-brand">Menu</a>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Menu de Navegacion">
        <span class="navbar-toggler-icon">
            <i class="fa fa-navicon"></i>
        </span>
    </button>
    <div class="collapse navbar-collapse" id="navbar">
        <ul class="navbar-nav mr-auto">
            <li class="nav-item">
                <a href="#" class="nav-link">TITLE 1</a>
            </li>                   
            <li class="nav-item">
                <a href="#" class="nav-link">TITLE 2</a>
            </li>
            <li class="nav-item">
                <a href="#" class="nav-link">TITLE 3</a>
            </li>
        </ul>
    </div>
</nav>

HTML

<section class="first row">
    <div class="col">                
        <h2>MAIN</h2>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
    </div>      
</section>    

<section class="row">
    <div class="col">
        <h2>TITLE 1</h2>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
    </div>
</section>

最佳答案

当您使用 Bootstrap 时,您可以利用 jQuery。下面的代码是我所做的:

jQuery 根据位置切换滚动类,滚动类只是改变颜色。

 $(document).scroll(function () {
    $(".fixed-top").toggleClass('scrolled', $(this).scrollTop() >  $(".fixed-top").height());
  });
.fixed-top.scrolled {
		background-color:rgba(255,255,255,1) !important;
		transition: background-color 200ms linear;
}

关于javascript - 如何更改滚动条上的导航栏 css 样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54117575/

上一篇:html - 带垂直列文本的 Bootstrap 表格样式

下一篇:javascript - 如何将 CSS 应用于字符串变量

相关文章:

javascript - 如何使用 timeinterval ionic 3 运行 for 循环

javascript - Google 条形图数据准备——按列分组

javascript - 将 HTML 代码放在 JointJS 链接上

html - 列响应行为和故障。在移动设备上显示 2x3 与 1x6 列(HTML 访问受限)

html - 如何使用 CSS 内联元素

javascript - 为什么 'this' 关键字不能用于使用参数的事件处理函数?

javascript - 在 Javascript 数组上运行递归函数

css - 无法在 CSS 编码中更改文本颜色

html - Div 并排坐成一个正方形

css - Z-Index 在 IE7 中不起作用