Bri*_*ian 36 html javascript css nav twitter-bootstrap
我试图在首次加载网站时创建一个出现在可查看页面底部的导航栏,然后当用户向下滚动时,导航栏向上滚动,最终固定到顶部.我正在使用Bootstrap,就像这个网站一样,但我无法弄清楚这个网站是如何做到的.有帮助吗?
这是我试图效仿的导航栏的网站:http://www.blastprocessor.co.uk/
这是我的导航html和css代码:
HTML:
<div class="navbar navbar-fixed-top" id="navbar">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<div class="nav-collapse">
<ul class="nav nav-pills">
<li class="active"><a href="#home">Home</a></li>
<li><a href="#service-link">Services</a></li>
<li><a href="#contact-link">Contact</a></li>
</ul><!-- /.nav -->
</div><!--/.nav-collapse -->
</div><!-- /.container -->
</div><!-- /.navbar-inner -->
</div><!-- /.navbar -->
Run Code Online (Sandbox Code Playgroud)
这是我的CSS:
.navbar-fixed-top,.navbar-fixed-bottom{position:fixed; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none;}
.navbar .nav > li a{
color:white; background:rgba(0,0,0,0.2); text-shadow:none; font-size:1.7em; font-family: marvel, serif; padding:.5em 1.3em; margin:1em 2em;
}
.navbar .nav > .active a:hover, .navbar .nav > li a:hover, .navbar .nav > .active a {
color:white; ; background:#F90; text-shadow:none; font-size:1.7em; font-family: marvel, serif; padding:.5em 1.3em; margin:1em 2em;
}
.navbar .nav > li {padding:2em;}
.navbar.navbar-fixed-top .navbar-inner{background: rgba(255, 255, 255, 0);}
.navbar .nav, .navbar .nav > li {
float:none;
display:inline-block;
*display:inline; /* ie7 fix */
*zoom:1; /* hasLayout ie7 trigger */
vertical-align: top;
padding:0 2em;
}
.navbar-inner {text-align:center;}
.navbar .navbar-inner, .navbar .navbar-inner {border: none; box-shadow: none; filter: none;}
Run Code Online (Sandbox Code Playgroud)
SoE*_*zPz 34
我正在寻找同样的事情.我曾经读过这个在Bootstrap 3.0中可用,但我实际上没有运气实现它.这就是我提出的,它很有效.非常简单的jQuery和Javascript.
这是JSFiddle玩的... http://jsfiddle.net/CriddleCraddle/Wj9dD/
该解决方案与Web和StackOverflow上的其他解决方案非常相似.如果您没有找到这个有用的,请搜索您需要的内容.祝好运!
这是HTML ...
<div id="banner">
<h2>put what you want here</h2>
<p>just adjust javascript size to match this window</p>
</div>
<nav id='nav_bar'>
<ul class='nav_links'>
<li><a href="url">Sign In</a></li>
<li><a href="url">Blog</a></li>
<li><a href="url">About</a></li>
</ul>
</nav>
<div id='body_div'>
<p style='margin: 0; padding-top: 50px;'>and more stuff to continue scrolling here</p>
</div>
Run Code Online (Sandbox Code Playgroud)
这是CSS ......
html, body {
height: 4000px;
}
.navbar-fixed {
top: 0;
z-index: 100;
position: fixed;
width: 100%;
}
#body_div {
top: 0;
position: relative;
height: 200px;
background-color: green;
}
#banner {
width: 100%;
height: 273px;
background-color: gray;
overflow: hidden;
}
#nav_bar {
border: 0;
background-color: #202020;
border-radius: 0px;
margin-bottom: 0;
height: 30px;
}
//the below css are for the links, not needed for sticky nav
.nav_links {
margin: 0;
}
.nav_links li {
display: inline-block;
margin-top: 4px;
}
.nav_links li a {
padding: 0 15.5px;
color: #3498db;
text-decoration: none;
}
Run Code Online (Sandbox Code Playgroud)
现在,只需添加javacript即可根据滚动位置添加和删除修复类.
$(document).ready(function() {
//change the integers below to match the height of your upper div, which I called
//banner. Just add a 1 to the last number. console.log($(window).scrollTop())
//to figure out what the scroll position is when exactly you want to fix the nav
//bar or div or whatever. I stuck in the console.log for you. Just remove when
//you know the position.
$(window).scroll(function () {
console.log($(window).scrollTop());
if ($(window).scrollTop() > 550) {
$('#nav_bar').addClass('navbar-fixed-top');
}
if ($(window).scrollTop() < 551) {
$('#nav_bar').removeClass('navbar-fixed-top');
}
});
});
Run Code Online (Sandbox Code Playgroud)
Mar*_*ski 24
注意(2015):以下问题和答案都适用于Twitter Bootstrap旧的,已弃用的2.x版本.
制作和元素"粘性"的这个功能内置于Twitter的Bootstrap中,它被称为Affix.您所要做的就是添加:
<div data-spy="affix" data-offset-top="121">
... your navbar ...
</div>
Run Code Online (Sandbox Code Playgroud)
在你的标签周围,不要忘记加载Bootstrap的JS文件,如手册中所述.数据属性offset-top告诉页面多少像素滚动(从顶部),以解决您的菜单组件.通常它只是页面顶部的空间.
注意:修复菜单时,您必须注意丢失的空间.修复意味着将其从页面图层中剪切掉并粘贴到不滚动的不同图层中.我正在做以下事情:
<div style="height: 77px;">
<div data-spy="affix" data-offset-top="121">
<div style="position: relative; height: 0; width: 100%;">
<div style="position: absolute; top: 0; left: 0;">
... my menu ...
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
77px我粘贴组件的高度在哪里.
小智 10
//在html中
<nav class="navbar navbar-default" id="mainnav">
<nav>
Run Code Online (Sandbox Code Playgroud)
//添加jquery
$(document).ready(function() {
var navpos = $('#mainnav').offset();
console.log(navpos.top);
$(window).bind('scroll', function() {
if ($(window).scrollTop() > navpos.top) {
$('#mainnav').addClass('navbar-fixed-top');
}
else {
$('#mainnav').removeClass('navbar-fixed-top');
}
});
});
Run Code Online (Sandbox Code Playgroud)
以下是jsfiddle:http://jsfiddle.net/shubhampatwa/46ovg69z/
编辑:如果您只想为移动设备应用此代码,您可以使用:
var newWindowWidth = $(window).width();
if (newWindowWidth < 481) {
//Place code inside it...
}
Run Code Online (Sandbox Code Playgroud)
这是一个不需要额外jQuery的Bootstrap 3示例..它使用AffixBootstrap 3中包含的插件,但导航栏标记自BS2以来已发生变化...
<!-- Content Above Nav -->
<header class="masthead">
</header>
<!-- Begin Navbar -->
<div id="nav">
<div class="navbar navbar-default navbar-static">
<div class="container">
<!-- .btn-navbar is used as the toggle for collapsed navbar content -->
<a class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="glyphicon glyphicon-bar"></span>
<span class="glyphicon glyphicon-bar"></span>
<span class="glyphicon glyphicon-bar"></span>
</a>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="#">Home</a></li>
<li class="divider"></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
<ul class="nav pull-right navbar-nav">
<li>
..
</li>
<li>
..
</li>
</ul>
</div>
</div>
</div><!-- /.navbar -->
</div>
Run Code Online (Sandbox Code Playgroud)
工作演示/模板:http://bootply.com/69848
这对我很有用.不要忘记在导航栏曾经存在的地方放置一个填充div,否则每次固定/不固定时内容都会跳转.
function setSkrollr(){
var objDistance = $navbar.offset().top;
$(window).scroll(function() {
var myDistance = $(window).scrollTop();
if (myDistance > objDistance){
$navbar.addClass('navbar-fixed-top');
}
if (objDistance > myDistance){
$navbar.removeClass('navbar-fixed-top');
}
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
182133 次 |
| 最近记录: |