2017-02-14 119 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,我已經把它放在收縮類中。