页眉在滚动时发生变化,并一直停留在顶部
Header changes on-scroll and sticks to the top
标题包括一个简单的白色大标题/徽标,下面有一个导航。
然后,滚动经过导航后,标题将变为粉红色半透明条,标题/徽标在左侧,导航在右侧。它也会粘在页面的顶部。
HTML:
<header>
<h2>The</h2>
<h1>Catching Raindrops</h1>
<nav>
<ul>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
<li><a href="#">Music</a></li>
<li><a href="#">Travel</a></li>
<li><a href="#">Quotes</a></li>
</ul>
</nav>
</header>
我该怎么做?我搜索了所有我能想到的地方,但没有找到任何关于如何按照我想要的方式更改它的教程。我确实找到了:http://codepen.io/senff/pen/ayGvD这只会使它变得粘稠。
我不知道JS,所以真的不知道如何更改它,但这个似乎是我想要的,类在哪里更改,所以我只需要在css中添加另一个类,并将所有滚动更改都放在那里,对吗?如果我是,我该如何更改徽标和导航?在这个CodePen示例中,只使用了一个类,它只能更改导航,而不能更改标题,对吧?如果这听起来令人难以置信的困惑,我很抱歉。:/
在这个中,JS代码以选择器为目标并更改颜色,但正如我在上面解释的那样,我的更改更复杂。
这个页面的布局是我想要的样子,只是这个教程让我困惑不已:/
这是我的CSS
header {
font-family:'Steelfish';
color: #FFF;
margin: 10px 0 0 0;
}
header h1 {
font-size: 90px;
text-align: center;
text-transform: uppercase;
}
header h2 {
font-size: 40px;
text-align: center;
text-transform: uppercase
}
nav {
font-size: 30px;
text-align: center;
text-transform: uppercase;
margin-top: 5px;
}
nav ul {
margin:0;
padding: 0;
list-style-type: none;
}
nav ul li {
display: inline-block;
padding: 0 10px 0 10px;
}
nav ul li a {
text-decoration: none;
color: #fff;
}
nav ul li a:hover {
text-decoration: none;
color: #9E9E9E;
-webkit-transition: color 900ms ease;
-moz-transition:color 900ms ease;
-o-transition: color 900ms ease;
transition: color 900ms ease;
}
提前谢谢。
最后一个链接来自我的网站,我的教程是为WordPress和Suffusion主题编写的。这可能是教程看起来令人困惑的原因之一。在WordPress中,jQuery库已经加载,主题有一个标记,该标记在教程中引用。
但是html/javascript/css在WordPress中的工作原理与在任何其他网站中的工作方式完全相同,因此,只要稍作调整,我的网站中的解决方案也适用于您。您只需要做一些小的更改就可以使标记为转换做好准备。
为了使这个解决方案发挥作用,需要在页面的头部链接jQuery库(我还在这里添加了所需的jQuery函数):
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript">
$j=jQuery.noConflict();
$j(document).ready(function() {
var nav = $j('#nav');
$j('#left-header').hide();
$j(window).scroll(function () {
if ($j(this).scrollTop() > 150) {
nav.addClass("scroll-nav");
$j('#header').hide();
$j('#left-header').show();
} else {
nav.removeClass("scroll-nav");
$j('#header').show();
$j('#left-header').hide();
}
});
});
</script>
</head>
然后,您必须在标记中进行一些小的更改,主要是为了命名部分,但也为了添加一个新的div,该div需要包含小徽标(#left headerdiv):
<body>
<header id="header">
<h2>The</h2>
<h1>Catching Raindrops</h1>
</header>
<nav id="nav">
<div id="left-header">The Catching Raindrops</div>
<ul class="menu">
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
<li><a href="#">Music</a></li>
<li><a href="#">Travel</a></li>
<li><a href="#">Quotes</a></li>
</ul>
</nav>
<div id="just-for-testing" style="height:1000px;"> </div>
</body>
添加id为#仅用于测试的div只是为了给页面提供一些高度,否则您无法滚动-用真实内容替换该div。最后,在您的样式表中添加滚动后导航栏的CSS:
.scroll-nav {z-index: 9999; position: fixed; left: 0; top: 0 !important; width: 100%;background:rgba(255,0,0,0.5);}
.scroll-nav ul.menu {float:right;}
#nav #left-header {float:left;font-size:80%;}
#nav #left-header a {background:none;}
#left-header {display:none;border:none;}
#left-header img {border:none !important;}
你可以在下面链接的小提琴中看到、测试和使用所有这些变化
http://jsfiddle.net/drake/bg2S4/
希望它能帮助
- 我是不是一直在为图像标签强制固定图像大小
- React Router一直给我一个警告:你不能更改<路由器路由>
- 使用重定向来启动应用程序,并且仍然停留在asp.net中的同一页面中
- 使用javascript停用/删除iframe
- 使用AngularJS停用引导导航栏按钮
- 我创建了一个jQuery幻灯片,但它一直在重复相同的图像
- 将处理程序留在img.onload上是内存泄漏
- JS似乎停留在Ajax重新加载页面上的DOM
- 余额仍停留在5000
- 理解 d3.js 源代码:停留在 function.call() 和 “=+”
- 选择不会停留在AngularJS多选绑定中
- FB Timeline应用程序高度停留在800px
- 如何获得下一个/上一个链接以停留在CarouFredSel幻灯片的两侧
- document.body.scroll顶端值停留在0
- AudioContext.当前时间在Chromebook上永远停留在0.010666666
- 倒计时停留在1点
- 将鼠标停留在onclick元素上
- 停留在<李>表单提交后的选项卡
- 为什么倒计时停留在“1”
- AngularJS编译后的代码一直“留在”后台