2017-02-14 117 views
0

我已经搜索了整个堆,但无法找到工作解决方案。基本上,我的NavBar完美地满足了我的需求。我现在想缩小NavBar,当我的页面向下滚动时,使用平滑过渡(动画)使其更加纤细。使用Bootstrap滚动的动画/缩小导航栏4

这是我对我目前的NavBar HTML标记:

<header> 


     <nav class="navbar fixed-top navbar-toggleable-md navbar-inverse bg-inverse"> 
      <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> 
       <span class="navbar-toggler-icon"></span> 
      </button> 
      <a class="navbar-brand" href="#"><img class="animated bounceIn" src="img/logo-light.png" alt="I Web You &#8211; Perth Website Branding"></a> 

      <div class="collapse navbar-collapse" id="navbarSupportedContent"> 
       <ul class="navbar-nav ml-auto"> 
        <li class="nav-item active"> 
         <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a> 
        </li> 
        <li class="nav-item"> 
         <a class="nav-link" href="#">About</a> 
        </li> 
        <li class="nav-item"> 
         <a class="nav-link" href="#">Portfolio</a> 
        </li> 
        <li class="nav-item"> 
         <a class="nav-link" href="#">Contact</a> 
        </li> 
        <li class="nav-item"> 
         <a class="nav-link" href="#">Blog</a> 
        </li> 
       </ul> 
      </div> 
     </nav> 


    </header> 

任何想法如何,我可以做到这一点?我已经做了搜索的很多,但大多数解决方案都为引导3.

干杯

+0

http://bootsnipp.com/snippets/pjvmD – mlegg

+0

此答案适用于v4 https://stackoverflow.com/a/24765232/253096 – TimoSolo

+0

@TimoSolo - 该答案似乎不适用于Bootstrap 4 – ZimSystem

回答

4

更新2018

大部分的收缩上滚动导航栏实现了3.x的使用做附加组件可以在特定的滚动位置更改导航栏的样式。

然而,词缀has been dropped从引导4 ..

“丢弃词缀jQuery插件,我们建议使用位置:粘 填充工具,而不是看到HTML5请详查和具体 填充工具的建议条目。 “

所以要创建引导4您需要使用位置类似的导航栏效果:粘(在所有的浏览器不支持),或使用jQuery插件如ScrollPos-Styler


您还可以编写自己的jQuery来控制滚动条上的导航栏样式。

自举上滚动的例子 4变化导航栏:
shrink height(α-6)
shrink height(4.0.0)
transparent over background
change color after scroll

工作原理:

data-toggle="affix"固定顶部导航栏:

<div class="navbar navbar-dark bg-dark fixed-top navbar-expand-sm py-3" data-toggle="affix"> 
     <a href="#" class="navbar-brand">Brand</a> 
     <a class="navbar-toggler" data-toggle="collapse" data-target=".navbar-collapse">☰</a> 
     <ul class="nav navbar-nav"> 
      <li class="nav-item"><a href="#" class="nav-link">..</a> 
      </li> 
     </ul> 
</div> 

jQuery来观看滚动位置并有条件地切换.affix类:

var toggleAffix = function(affixElement, scrollElement, wrapper) { 
    var height = affixElement.outerHeight(), 
     top = wrapper.offset().top; 

    if (scrollElement.scrollTop() >= top){ 
     wrapper.height(height); 
     affixElement.addClass("affix"); 
    } 
    else { 
     affixElement.removeClass("affix"); 
     wrapper.height('auto'); 
    } 
}; 

/* use toggleAffix on any data-toggle="affix" elements */ 
$('[data-toggle="affix"]').each(function() { 
    var ele = $(this), 
     wrapper = $('<div></div>'); 

    ele.before(wrapper); 
    $(window).on('scroll resize', function() { 
     toggleAffix(ele, $(this), wrapper); 
    }); 

    // init 
    toggleAffix(ele, $(window), wrapper); 
}); 

CSS操纵词缀风格(填充/高度,颜色等。):

html,body { 
    height:100%; 
    padding-top:56px; /*height of fixed navbar*/ 
} 

.navbar { 
    -webkit-transition:padding 0.2s ease; 
    -moz-transition:padding 0.2s ease; 
    -o-transition:padding 0.2s ease;   
    transition:padding 0.2s ease; 
} 

.affix { 
    padding-top: 0.2em !important; 
    padding-bottom: 0.2em !important; 
    -webkit-transition:padding 0.2s linear; 
    -moz-transition:padding 0.2s linear; 
    -o-transition:padding 0.2s linear;   
    transition:padding 0.2s linear; 
} 

section { 
    min-height:calc(100% - 70px); 
} 

Bootstrap 4.0.0,Navbar ha由于navbar-toggleable-*已更改为navbar-expand-https://www.codeply.com/go/EfianX3H0U(4.0。0)

相关问题:
Fixing navbar to top on scroll
Affix is not working in Bootstrap 4 alpha

+0

请提供必要的代码。 –

0

$(window).scroll(function() { 
 
    if ($(document).scrollTop() > 50) { 
 
    $('nav').addClass('shrink'); 
 
    } else { 
 
    $('nav').removeClass('shrink'); 
 
    } 
 
});
nav.navbar.shrink { 
 
    width: 100%; 
 
    height: 35px; 
 
    background-color: #111; 
 
    box-shadow: 0 1px 0 0 #dadada; 
 
    position: fixed; 
 
    left: 0px; 
 
    transition: all 1.5s ease; 
 

 
} 
 
nav.navbar.shrink .navbar-brand img{ 
 
    height: 50px; 
 
    width: 120px; 
 
    transition: all 1.5s ease; 
 
} 
 
nav.navbar.shrink a { 
 
    font-size: 14px; 
 
    padding-bottom: 10px !important; 
 
    padding-top: 10px !important; 
 
    transition: all 1.5s ease; 
 
} 
 
nav.navbar.shrink .navbar-toggler { 
 
    margin: 8px 15px 8px 0; 
 
    padding: 4px 5px; 
 
    transition: all 1.5s ease; 
 
} 
 

 
.header{ 
 

 
\t 
 
\t height:100px; 
 
} 
 

 
.navbar-brand{ 
 

 
\t padding-left:30px; 
 
\t padding-top:30px; 
 
\t padding-bottom:30px; 
 

 
} 
 

 
.collapse{ 
 

 
\t padding-right:30px; 
 
} 
 

 
.logo{ 
 

 

 
\t width: 170px; 
 
\t height: 58px; 
 
} 
 

 

 
.hero-container p{ 
 
    color:black; 
 
    text-align: center; 
 
    height:auto; 
 
} 
 

 
.image-container{ 
 
\t text-align:center; 
 
} 
 

 
.banner{ 
 

 
\t background-image: url(../images/banner.jpg); 
 
\t background-repeat: no-repeat; 
 
\t padding-top: 70px; 
 
\t padding-left: 30px; 
 
\t padding-right:30px; 
 
\t padding-bottom: 78px; 
 
\t width:100%; 
 
\t height:auto; 
 
} 
 

 
.banner .row h4,p{ 
 

 
    color: white; 
 
} 
 

 
.client{ 
 

 
\t height: 635px; 
 
\t margin-top:74px; 
 
\t padding-right:10px; 
 
\t padding-left:10px; 
 
} 
 

 
.btn-primary{ 
 

 
\t 
 
\t background: transparent; 
 
\t width:170px; 
 
\t border: 1px solid white; 
 
\t color:white; 
 
} 
 

 

 
form{ 
 
    padding-top:56px; 
 
    padding-bottom:56px; 
 
\t padding-left: 30px; 
 
    height:auto; 
 
\t } 
 

 
form,h2,label{ 
 
\t color:white; 
 
} 
 

 
.above{ 
 
\t margin-bottom:34px; 
 
\t width:100%; 
 
\t height:auto; 
 
\t padding-right: 30px; 
 
} 
 

 
.below{ 
 

 
\t width:100%; 
 
\t height:auto; 
 
    padding-right: 30px; 
 

 
} 
 

 
.heading{ 
 
\t color: black; 
 
\t margin-top: 62px; 
 
} 
 

 
.lead{ 
 
color:black; 
 
} 
 

 
.form_banner{ 
 
    
 
\t background-image: url(../images/form_banner.jpg); 
 
\t background-repeat: no-repeat; 
 
\t 
 
    width: 100%; 
 
    
 
} 
 

 
.contact{ 
 
\t background-image: url(../images/contact.png); 
 
\t background-repeat: no-repeat; 
 
\t margin-bottom: 40px; 
 
\t margin-top:50px; 
 
\t height:auto; 
 
\t width:100%; 
 
\t padding-left: 313px; 
 
\t padding-right:313px; 
 
\t padding-top: 64px; 
 
\t padding-bottom:64px; 
 
\t text-align: center; 
 
} 
 

 
.contact, h5{ 
 

 
\t color:white; 
 
} 
 

 
hr{ 
 
\t display: block; 
 
    margin-top: 0.1em; 
 
    margin-bottom: 0.1em; 
 
    margin-left: auto; 
 
    margin-right: auto; 
 
    border-style: inset; 
 
    border-width: 1px; 
 
} 
 

 
.footer_img{ 
 

 
\t padding-left: 30px; 
 
\t width:170px; 
 
\t height:63px; 
 
} 
 

 
.footer{ 
 
\t margin-bottom: 41px; 
 
}
<!doctype HTML> 
 
<html lang="en"> 
 
<head> 
 
    <title>Home</title> 
 
    <meta charset="utf-8"> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
 
    
 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"> 
 
    <link rel="stylesheet" href="css/styles.css"> 
 

 
    
 
    
 
</head> 
 

 
<body> 
 

 
<div class="container-fluid"> 
 

 
<div class="header container"> 
 
<div class="row"> 
 
    <nav class="navbar navbar-expand-md navbar-light bg-light fixed-top"> 
 
     <a class="navbar-brand" href="#">HeRo</a> 
 
     <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault" aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation"> 
 
     <span class="navbar-toggler-icon"></span> 
 
     </button> 
 

 
     <div class="collapse navbar-collapse" id="navbarsExampleDefault"> 
 
     <ul class="navbar-nav ml-auto"> 
 
      <li class="nav-item active"> 
 
      <a class="nav-link" href="#">Company<span class="sr-only">(current)</span></a> 
 
      </li> 
 
      <li class="nav-item"> 
 
      <a class="nav-link" href="#">Capabilities</a> 
 
      </li> 
 
      <li class="nav-item"> 
 
      <a class="nav-link" href="#">Customers</a> 
 
      </li> 
 
      <li class="nav-item"> 
 
      <a class="nav-link" href="#">Innovation</a> 
 
      </li> 
 
     <li class="nav-item"> 
 
      <a class="nav-link" href="#">Contact Us</a> 
 
      </li> 
 
      
 
      
 
     </ul> 
 
     
 
     </div> 
 
    </nav> 
 
</div> 
 
</div> 
 
</div> 
 
    
 
<div class="hero-container container"> 
 
<div class="row"> 
 
    <div class="col"> 
 
    
 
    <p>Commerce</p> 
 
    <p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna.</p> 
 
    <p><a class="btn btn-secondary" href="#" role="button">View details &raquo;</a></p> 
 
    </div> 
 

 
    <div class="col"> 
 
    
 
      <p>Interactive</p> 
 
      <p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna.</p> 
 
      <p><a class="btn btn-secondary" href="#" role="button">View details &raquo;</a></p></div> 
 
    <div class="col"> 
 
    
 

 
      <p>Analytics</p> 
 
      <p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna.</p> 
 
      <p><a class="btn btn-secondary" href="#" role="button">View details &raquo;</a></p></div> 
 
    <div class="col"> 
 
    
 
      <p>Integration</p> 
 
      <p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna.</p> 
 
      <p><a class="btn btn-secondary" href="#" role="button">View details &raquo;</a></p></div> 
 
    <div class="col"> 
 
    
 
      <p>Cloud & Management Services</p> 
 
      <p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna.</p> 
 
      <p><a class="btn btn-secondary" href="#" role="button">View details &raquo;</a></p></div> 
 
</div> 
 
</div> 
 
    
 
<div class="banner container-fluid"> 
 
    <div class="row"> 
 
     <h4>Dedicated, Experience, Innovative</h4> 
 
     <p>For over a decade our experienced team has been delivering Digital Commerce solutions that change the way consumers research, interact and purchase. As mobility and pervasive connectivity continue to transform buying habits, we are focused on helping businesses discover and maximise new opportunities – be it direct to consumers, via resellers, or by other innovative models.</p> 
 

 
      <p>Our expertise is centred on the Digital Commerce solution that excels in delivering best-in-class Scalability and User Experience. From our global headquarters in India, we have expanded to empower Clients across four continents, with offices located in Singapore, USA, Australia and the UK.</p> 
 
     <h4>BUSINESS</h4> 
 
     <p>Our approach is to listen to you as the experts in your market. We look to complement your insight with a project team capable of understanding your business and delivering better digital experience. Our in-country Advisors will help assess your requirements and collaboratively design a service that meets your strategic goals.</p> 
 

 
     <h4>TECHNOLOGY</h4> 
 
     <p>With a specialised team of Creative Designers, Developers, Engineers and Architects we have substantial experience across many leading enterprise and open source platforms. Beyond our core expertise in Digital Commerce, we also offer Mobility, Integration, Digital Analytics, Development and other custom Web and applications development services.</p> 
 
    </div> 
 
</div> 
 

 

 

 
<!-- FOOTER --> 
 
<div class="footer container"> 
 
     
 
    <div class="clearfix"> 
 
    <span class="float-left"><a href="#"><img class="footer_img" src="images/ibm_logo.png"></a></span> 
 
    <span class="float-right">&copy; AbcXyZ Inc and Affiliates.All Rights Reserved</span> 
 
</div> 
 

 
</div> 
 

 

 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script> 
 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script> 
 

 

 
    
 
</body> 
 
</html>

使用此code.It的简单和容易。我希望你能理解。我制作了一个缩小的类,一旦它跨越50个像素,就会添加到导航栏中。剩下的都是css,我已经把它放在收缩类中。