2017-10-01 4 views
1

Hallo Jungs Scrollen so ich versuche, um einen Effekt zu erhalten, arbeiten waren die navbar ist in der Mitte der Seite und der Benutzer wird nach unten scrollen, als er den navbar trifft es an die Spitze haften bleiben sollte Die Seite. Beispiel dafür: here Sie können sehen, wenn der Benutzer scrollt nach unten und trifft die Navbar es Stick und es ist eine schöne langsame Wirkung.Navbar Stick auf Header, wenn

Ich habe meins zu arbeiten, aber es fühlt sich klirrend an, damit meine ich, dass es sofort nach oben geht, im Gegensatz zu dem Beispiel, das sehr glatt ist und glatt an der Spitze klebt, während meins sehr hart ist.

.parallax { 
 
    background-color: Black; 
 
    min-height: 700px; 
 
    background-attachment: fixed; 
 
    background-position: center; 
 
    background-repeat: no-repeat; 
 
    background-size: cover; 
 
} 
 

 
.parallax1 { 
 
    background-color: Red; 
 
    min-height: 700px; 
 
    background-attachment: fixed; 
 
    background-position: center; 
 
    background-repeat: no-repeat; 
 
    background-size: cover; 
 
} 
 

 
.navbar { 
 
    margin-bottom: 0px; 
 
    left: 0; 
 
    top: 0; 
 
    width: 100%; 
 
    list-style: none; 
 
    height: 70px; 
 
    z-index: 1 
 
} 
 

 
.navbar-nav { 
 
    float: none; 
 
    margin: 0; 
 
    text-align: center 
 
} 
 

 
.navbar-nav>li { 
 
    float: none; 
 
    display: inline-block 
 
} 
 

 
.navbar-nav>li>a { 
 
    line-height: 38px 
 
} 
 

 
.navbar-nav>li>a.active { 
 
    background-color: #E7E7E7 
 
} 
 

 
.navbar-default .navbar-nav>li>a:hover, 
 
.navbar-default .navbar-nav>li>a:focus { 
 
    color: #333333; 
 
    background-color: #E7E7E7 
 
} 
 

 
.navbar-toggle { 
 
    background-color: #000000; 
 
    background-image: none; 
 
    border-radius: 4px; 
 
    float: right; 
 
    margin-bottom: 8px; 
 
    margin-right: 15px; 
 
    margin-top: 18px; 
 
    padding: 9px 10px; 
 
    position: relative 
 
} 
 

 
.navbar-inverse .navbar-toggle .icon-bar { 
 
    background-color: #2DCC70 
 
} 
 

 
.navbar-default .navbar-toggle:hover, 
 
.navbar-default .navbar-toggle:focus { 
 
    background-color: #000000 
 
} 
 

 
.navbar-inverse .navbar-collapse, 
 
.navbar-inverse .navbar-form { 
 
    border-color: transparent 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> 
 
<div class="parallax"></div> 
 

 
<nav class="navbar navbar-default" data-spy="affix" data-offset-top="700"> 
 
    <div class="container"> 
 
    <div class="navbar-header"> 
 
     <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> 
 
      <span class="sr-only">Toggle navigation</span> 
 
      <span class="icon-bar"></span> 
 
      <span class="icon-bar"></span> 
 
      <span class="icon-bar"></span> 
 
     </button> 
 
    </div> 
 
    <div id="navbar" class="navbar-collapse collapse"> 
 
     <ul class="nav navbar-nav"> 
 
     <li class="active"><a href="#hometab">Home</a></li> 
 
     <li><a href="#section1">About Me</a></li> 
 
     <li><a href="#section2">My Skills</a></li> 
 
     <li><a href="#section3">Portfolio</a></li> 
 
     <li><a href="#section4">Contact Me</a></li> 
 
     </ul> 
 
    </div> 
 
    <!--/.nav-collapse --> 
 
    </div> 
 
</nav>1> 
 

 
<div class="parallax1"></div>

Jede mögliche Hilfe würde groß sein.

+0

Ich überprüfe meine Antwort aktualisiert, wenn jede Frage kommentieren die Antwort. –

Antwort

1

Sie müssen nur hinzufügen, auf Ihr Stil:

.affix + .parallax1 { 
    margin-top: 70px; 
} 

Die Klasse .affix zeigt an, dass das Nav an der Spitze klebt. Wenn also .affix auf nav vorhanden ist, müssen Sie den Rand oder Abstand auf parallax1 setzen, damit sich der HALLO THERE-Text nicht hinter dem Nav versteckt.

Bearbeiten der Geige:

.parallax { 
 
    background-color: Black; 
 
    min-height: 700px; 
 
    background-attachment: fixed; 
 
    background-position: center; 
 
    background-repeat: no-repeat; 
 
    background-size: cover; 
 
} 
 

 
.parallax1 { 
 
    background-color: Red; 
 
    min-height: 700px; 
 
    background-attachment: fixed; 
 
    background-position: center; 
 
    background-repeat: no-repeat; 
 
    background-size: cover; 
 
} 
 

 
/* Add this */ 
 
.affix + .parallax1 { 
 
    margin-top: 70px; 
 
} 
 

 
.navbar { 
 
    margin-bottom: 0px; 
 
    left: 0; 
 
    top: 0; 
 
    width: 100%; 
 
    list-style: none; 
 
    height: 70px; 
 
    z-index: 1 
 
} 
 

 
.navbar-nav { 
 
    float: none; 
 
    margin: 0; 
 
    text-align: center 
 
} 
 

 
.navbar-nav>li { 
 
    float: none; 
 
    display: inline-block 
 
} 
 

 
.navbar-nav>li>a { 
 
    line-height: 38px 
 
} 
 

 
.navbar-nav>li>a.active { 
 
    background-color: #E7E7E7 
 
} 
 

 
.navbar-default .navbar-nav>li>a:hover, 
 
.navbar-default .navbar-nav>li>a:focus { 
 
    color: #333333; 
 
    background-color: #E7E7E7 
 
} 
 

 
.navbar-toggle { 
 
    background-color: #000000; 
 
    background-image: none; 
 
    border-radius: 4px; 
 
    float: right; 
 
    margin-bottom: 8px; 
 
    margin-right: 15px; 
 
    margin-top: 18px; 
 
    padding: 9px 10px; 
 
    position: relative 
 
} 
 

 
.navbar-inverse .navbar-toggle .icon-bar { 
 
    background-color: #2DCC70 
 
} 
 

 
.navbar-default .navbar-toggle:hover, 
 
.navbar-default .navbar-toggle:focus { 
 
    background-color: #000000 
 
} 
 

 
.navbar-inverse .navbar-collapse, 
 
.navbar-inverse .navbar-form { 
 
    border-color: transparent 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet"/> 
 
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script> 
 
<div class="parallax"> 
 

 
</div> 
 

 

 

 
<nav class="navbar navbar-default" data-spy="affix" data-offset-top="700"> 
 
    <div class="container"> 
 
    <div class="navbar-header"> 
 
     <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> 
 
     <span class="sr-only">Toggle navigation</span> 
 
     <span class="icon-bar"></span> 
 
     <span class="icon-bar"></span> 
 
     <span class="icon-bar"></span> 
 
     </button> 
 
    </div> 
 
    <div id="navbar" class="navbar-collapse collapse"> 
 
     <ul class="nav navbar-nav"> 
 
     <li class="active"><a href="#hometab">Home</a></li> 
 
     <li><a href="#section1">About Me</a></li> 
 
     <li><a href="#section2">My Skills</a></li> 
 
     <li><a href="#section3">Portfolio</a></li> 
 
     <li><a href="#section4">Contact Me</a></li> 
 
     </ul> 
 
    </div> 
 
    <!--/.nav-collapse --> 
 
    </div> 
 
</nav> 
 

 
<div class="parallax1"> 
 
    <h1> 
 
HELLO THERE 
 
</h1> 
 

 
</div>

+1

Sehr einfach und arbeitete wie ein Charme, dank x – RonTheOld

+0

Diese Beispiel sieht einfach aus, aber ich sah einen Sprung in diesem ein gut das ist, warum ich Jquery mein Beispiel verwendet, zeigt keinen Sprung sehr glatt. –

0

Verwenden Bootstrap-Klasse "navbar-Festplatte" diesen Code

<nav class="navbar navbar-default navbar-fixed-top" data-spy="affix" data-offset-top="700"> 
+0

Leider ich glaube nicht, u die Frage zu verstehen, ich bin für das gleiche Aussehen wie das Beispiel gehen gab i, so dass, wenn der Benutzer blättert und trifft die navbar es Flicks nach oben – RonTheOld

0

Folgen, setzen Affix Wert zur Navigation Lücke von oben

<!DOCTYPE html> 
    <html> 
    <head> 
     <title>Bootstrap Example</title> 
     <meta charset="utf-8"> 
     <meta name="viewport" content="width=device-width, initial-scale=1"> 
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
     <style> 
     .affix { 
      top: 0; 
      width: 100%; 
     } 

     .affix + .container-fluid { 
      padding-top: 70px; 
     } 
     </style> 
    </head> 
    <body> 

    <div class="container-fluid" style="background-color:#000;color:#fff;height:200px;"> 
     Section 1.10.32 of "de Finibus Bonorum et Malorum", written by Cicero in 45 BC 

    "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?" 
    </div> 

    <nav class="navbar navbar-inverse" data-spy="affix" data-offset-top="197"> 
     <ul class="nav navbar-nav"> 
     <li class="active"><a href="#">Basic Topnav</a></li> 
     <li><a href="#">Page 1</a></li> 
     <li><a href="#">Page 2</a></li> 
     <li><a href="#">Page 3</a></li> 
     </ul> 
    </nav> 

    <div class="container-fluid" style="height:1000px"> 
     <p> 
     "Lorem ipsum dolor sit amet, consectetur adipiscing 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> 
     <p> 
     "Lorem ipsum dolor sit amet, consectetur adipiscing 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> 

    </body> 
    </html> 
1

Der Grund für das gewünschte Beispiel so glatt funktioniert, ist, weil es eine smoothScroll Bibliothek nutzt. Ich habe es einfach in die Beispielgeige eingefügt, die Sie zur Verfügung gestellt haben, und es funktioniert viel mehr wie die Demo-Seite, die Sie gezeigt haben, überprüfen Sie es here. Sie brauchen keinen Code auf Ihrer Seite hinzuzufügen, da die Bibliothek bereits initialisiert wird, sobald die Seite fertig geladen:

addEvent(wheelEvent, wheel); 
addEvent('mousedown', mousedown); 
addEvent('load', init); 

Lassen Sie mich wissen, wenn Sie Fragen haben:)

1

Glatte klebrige navbar Es benutzt jquery 2. Hoffe das funktioniert für Ihre Tests. Verfolgt Navbar auf allen Bildschirmgrößen.

var navOffset, scrollPos = 0; 
 

 
function sticky() { 
 
    if (!$(".navbar").hasClass("fixed")) { 
 
    navOffset = $(".navbar").offset().top; 
 
    } 
 
} 
 

 
sticky(); 
 

 
$(window).scroll(function() { 
 
    scrollPos = $(window).scrollTop(); 
 
    if (scrollPos >= navOffset) { 
 
    var ht = $(".navbar").outerHeight() + 10; 
 
    $(".navbar").addClass("navbar-fixed-top"); 
 
    $(".nav-placeholder").css({ 
 
     'height': ht + "px", 
 
     'display': 'block' 
 
    }); 
 
    } else { 
 
    $(".navbar").removeClass("navbar-fixed-top"); 
 
    $(".nav-placeholder").css({ 
 
     'height': 0, 
 
     'display': 'none' 
 
    }); 
 
    } 
 
});
.parallax { 
 
    background-color: Black; 
 
    min-height: 700px; 
 
    background-attachment: fixed; 
 
    background-position: center; 
 
    background-repeat: no-repeat; 
 
    background-size: cover; 
 
} 
 

 
.parallax1 { 
 
    background-color: Red; 
 
    min-height: 700px; 
 
    background-attachment: fixed; 
 
    background-position: center; 
 
    background-repeat: no-repeat; 
 
    background-size: cover; 
 
} 
 

 
.navbar { 
 
    margin-bottom: 0px; 
 
    left: 0; 
 
    top: 0; 
 
    width: 100%; 
 
    list-style: none; 
 
    height: 70px; 
 
    z-index: 1 
 
} 
 

 
.navbar-nav { 
 
    float: none; 
 
    margin: 0; 
 
    text-align: center 
 
} 
 

 
.navbar-nav>li { 
 
    float: none; 
 
    display: inline-block 
 
} 
 

 
.navbar-nav>li>a { 
 
    line-height: 38px 
 
} 
 

 
.navbar-nav>li>a.active { 
 
    background-color: #E7E7E7 
 
} 
 

 
.navbar-default .navbar-nav>li>a:hover, 
 
.navbar-default .navbar-nav>li>a:focus { 
 
    color: #333333; 
 
    background-color: #E7E7E7 
 
} 
 

 
.navbar-toggle { 
 
    background-color: #000000; 
 
    background-image: none; 
 
    border-radius: 4px; 
 
    float: right; 
 
    margin-bottom: 8px; 
 
    margin-right: 15px; 
 
    margin-top: 18px; 
 
    padding: 9px 10px; 
 
    position: relative 
 
} 
 

 
.navbar-inverse .navbar-toggle .icon-bar { 
 
    background-color: #2DCC70 
 
} 
 

 
.navbar-default .navbar-toggle:hover, 
 
.navbar-default .navbar-toggle:focus { 
 
    background-color: #000000 
 
} 
 

 
.navbar-inverse .navbar-collapse, 
 
.navbar-inverse .navbar-form { 
 
    border-color: transparent 
 
} 
 

 
.nav-placeholder { 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" /> 
 
<div class="parallax"></div> 
 
<nav class="navbar navbar-default"> 
 
    <div class="container"> 
 
    <div class="navbar-header"> 
 
     <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> 
 
      <span class="sr-only">Toggle navigation</span> 
 
      <span class="icon-bar"></span> 
 
      <span class="icon-bar"></span> 
 
      <span class="icon-bar"></span> 
 
     </button> 
 
    </div> 
 
    <div id="navbar" class="navbar-collapse collapse"> 
 
     <ul class="nav navbar-nav"> 
 
     <li class="active"><a href="#hometab">Home</a></li> 
 
     <li><a href="#section1">About Me</a></li> 
 
     <li><a href="#section2">My Skills</a></li> 
 
     <li><a href="#section3">Portfolio</a></li> 
 
     <li><a href="#section4">Contact Me</a></li> 
 
     </ul> 
 
    </div> 
 
    <!--/.nav-collapse --> 
 
    </div> 
 
</nav> 
 
<div class="nav-placeholder"></div> 
 
<p>Some text for test</p> 
 
<div class="parallax1"></div>

+0

OP: Bitte beachten Sie stattdessen meine Antwort.Diese Antwort fügt die Komplexität von jQuery dem Projekt + einer anderen Third-Party-Bibliothek hinzu, um zu erreichen, was Bootstrap bereits für Sie tut (mit Ihrer bestehenden Haftfähigkeit). Alles, was für das ursprüngliche Beispiel, @RonTheOld, notwendig ist, ist, eine kleine, smooth scroll-lib (jede davon wird funktionieren) zu Ihrer Site hinzuzufügen. – Kano

+0

Jquery ist eine Abhängigkeit von Bootstrap, also habe ich nie zusätzliche Dateien hinzugefügt FYI –

+1

Mein schlechtes @RajendranNadar, habe ich vergessen. – Kano

Verwandte Themen