造型两个单独的NAVS

发布于 2025-02-09 07:57:27 字数 3340 浏览 1 评论 0原文

我正在学习Bootstrap 4,并通过此链接找到了一个N​​avbar: https://carrabbasatlanticcanada.com/

为Bootstrap4找到可滚动的滚动导航,该导航在滚动时更改了样式(在移动视图上没有徽标和位置)。

我创建了一个像链接中使用的Navbar一样,它使用了2个样式的SEPERATE NAVS,以相同的方式工作:可见的NAV和徽标,然后是无徽标的可滚动导航,以及在移动设备上固定的NAV和固定NAV。

我觉得这是BS4的最小代码解决方案,并且可能会出现问题的问题,而在Internet Explorer中不起作用的位置粘性?

我仍然是编码的新手。这个代码还可以吗? 可以使用2个单独的NAVS,还是可以使用1个NAV和一些JavaScript进行造型?

最受欢迎的任何反馈或可能的改进!

HTML:

 <nav class="navbar navbar-expand-md  mynav">
      <!-- Brand -->
      <a class="navbar-brand" href="#">Navbar</a>
    
      <!-- Toggler/collapsibe Button -->
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-       target="#collapsibleNavbar">
        <span class="navbar-toggler-icon"></span>
      </button>
    
      <!-- Navbar links -->
      <div class="collapse navbar-collapse" id="collapsibleNavbar">
        <ul class="navbar-nav text-center">
          <li class="nav-item">
            <a class="nav-link" href="#home">Home</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#news">News</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#contact">Contact</a>
          </li>
        </ul>
      </div>
    </nav> 
<div id="navbar2">
  <a href="#home">Home</a>
  <a href="#news">News</a>
  <a href="#contact">Contact</a>
</div> 

<!--Javascript for scrollable nav-->
<script type="text/javascript">

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

function scrollFunction() {
  if (document.body.scrollTop > 120 || document.documentElement.scrollTop > 120) {
    document.getElementById("navbar2").style.top = "0";
  } else {
    document.getElementById("navbar2").style.top = "-50px";
  }
} 
</script>

CSS: /固定navbar /

.mynav{
    background-color: black;
}

.navbar .navbar-nav li a, .navbar-brand{
    color: white;
}

.navbar-toggler{
    background-color: green;
}

/*Scrollable navbar*/
  #navbar2 {
  background-color: #333; /* Black background color */
  position: fixed; /* Make it stick/fixed */
  top: -450px; /* Hide the navbar 50 px outside of the top view */
  width: 100%; /* Full width */
  transition: top 0.3s; /* Transition effect when sliding down (and up) */
}

/* Style the navbar links */
#navbar2 a {
  float: left;
  display: block;
  color: white;
  text-align: center;
  padding: 15px;
  text-decoration: none;
}

#navbar2 a:hover {
  background-color: #ddd;
  color: black;
}

/media queries to make the pop down nav disappear on small screens and the hambrger to be fixed/   
@media screen and (max-width: 600px){

  #navbar2{
    display: none;
  }

  .mynav{
    position: fixed;
    width: 100%;

  }

  .top-bar{
    display: none;
  }


.header-area{
  background-color: #000;
  height: 20px;
}

}

@media screen and (min-width: 600px){

  #navbar2{
    visibility: visible;
  }

  .navbar-toggler{
    visibility: hidden;
  }
}

I am learning bootstrap 4 and found a navbar via this link: https://carrabbasatlanticcanada.com/

Have really struggled to find a scrollable nav for bootstrap4 that has styles changed on scroll (no logo and position fixed on mobile view).

I have created a navbar like the one in the link that uses 2 seperate navs that are styled so it works the same way: a visible nav and logo, then a scrollable nav with no logo, and fixed nav and logo on mobile devices.

I feel this is quite of a minimal code solution for bs4 and may get around problems with position sticky not working in internet explorer?

I am still fairly new to coding. Is this code OK?
Is it OK to use 2 seperate navs or is there a better solution using 1 nav and some javascript for styling?

Any feedback or possible improvement most welcomed!

HTML:

 <nav class="navbar navbar-expand-md  mynav">
      <!-- Brand -->
      <a class="navbar-brand" href="#">Navbar</a>
    
      <!-- Toggler/collapsibe Button -->
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-       target="#collapsibleNavbar">
        <span class="navbar-toggler-icon"></span>
      </button>
    
      <!-- Navbar links -->
      <div class="collapse navbar-collapse" id="collapsibleNavbar">
        <ul class="navbar-nav text-center">
          <li class="nav-item">
            <a class="nav-link" href="#home">Home</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#news">News</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#contact">Contact</a>
          </li>
        </ul>
      </div>
    </nav> 
<div id="navbar2">
  <a href="#home">Home</a>
  <a href="#news">News</a>
  <a href="#contact">Contact</a>
</div> 

<!--Javascript for scrollable nav-->
<script type="text/javascript">

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

function scrollFunction() {
  if (document.body.scrollTop > 120 || document.documentElement.scrollTop > 120) {
    document.getElementById("navbar2").style.top = "0";
  } else {
    document.getElementById("navbar2").style.top = "-50px";
  }
} 
</script>

CSS:
/Fixed navbar/

.mynav{
    background-color: black;
}

.navbar .navbar-nav li a, .navbar-brand{
    color: white;
}

.navbar-toggler{
    background-color: green;
}

/*Scrollable navbar*/
  #navbar2 {
  background-color: #333; /* Black background color */
  position: fixed; /* Make it stick/fixed */
  top: -450px; /* Hide the navbar 50 px outside of the top view */
  width: 100%; /* Full width */
  transition: top 0.3s; /* Transition effect when sliding down (and up) */
}

/* Style the navbar links */
#navbar2 a {
  float: left;
  display: block;
  color: white;
  text-align: center;
  padding: 15px;
  text-decoration: none;
}

#navbar2 a:hover {
  background-color: #ddd;
  color: black;
}

/media queries to make the pop down nav disappear on small screens and the hambrger to be fixed/   
@media screen and (max-width: 600px){

  #navbar2{
    display: none;
  }

  .mynav{
    position: fixed;
    width: 100%;

  }

  .top-bar{
    display: none;
  }


.header-area{
  background-color: #000;
  height: 20px;
}

}

@media screen and (min-width: 600px){

  #navbar2{
    visibility: visible;
  }

  .navbar-toggler{
    visibility: hidden;
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文