我正在尝试将动画背景与Jquery For Designers的固定浮动滚动效果集成(http://jqueryfordesigners.com/fixed-floating-elements/)。 JFiddle在这里(http://jsfiddle.net/Chadimoglou/pTBCW/1/)。从概念上讲,我想要发生的是当您滚动浏览导航并且它固定到页面顶部时,背景将慢慢淡入。当您向后滚动并且导航停在灰色框下方的原始位置时(图像占位符)背景将逐渐消失。我遇到了3个问题。
有什么想法吗?
答案 0 :(得分:1)
这是我的fiddle。首先,我所做的是将背景放在一个单独的div上,然后只为该div的不透明度设置动画。这样它就可以在没有css3的浏览器上运行。
我还在if语句中添加了更多验证,因此如果标题已经修复,它将不会尝试动画。
HTML:
<div id="header">
<H1>LoremIpsum</H1>
</div>
<div id="content">
<div id="image">
LoremIpsum
</div>
<div id="navWrapper">
<ul id="nav">
<li><a href="http://www.christiancoronato.com/">Home</a></li>
<li><a href="http://www.christiancoronato.com/pictures/">Pictures</a></li>
<li><a href="http://www.christiancoronato.com/contact/">Contact</a></li>
<li><a class='tester1' href="http://www.christiancoronato.com/shows/">Shows</a></li>
<li><a class='tester' href="http://www.christiancoronato.com/about/">Bio</a></li>
</ul>
<div class='navBackground'></div>
</div>
</div>
</div>
JS:
$(document).ready(function () {
var top = $('#nav').offset().top - parseFloat($('#nav').css('marginTop').replace(/auto/, 0));
$(window).scroll(function (event) {
//return false;
// what the y position of the scroll is
var y = $(this).scrollTop();
// whether that's below the form
if (y >= top && !$('#nav').hasClass('fixed') ) {
// if so, ad the fixed class
$('#nav, .navBackground').addClass('fixed');
$('.navBackground').css('margin-top','0');
$('.navBackground').stop().animate({"opacity":1}, "slow");
} else if(y < top && $('#nav').hasClass('fixed')) {
// otherwise remove it
$('.fixed').removeClass('fixed');
$('.navBackground').css('margin-top','-40px');
$('.navBackground').stop().animate({"opacity":0}, "slow");
}
});
});
CSS:
body {
background: url('http://dl.dropbox.com/u/62537/header.jpg') top center repeat;
margin: 0;
display: block;
height: 1500px;
}
#header {
background: url('http://dl.dropbox.com/u/62537/headerBG.jpg') center repeat-x;
font-size:3em;
padding: 20px 0;
height: 40px;
display: block;
overflow: hidden;
margin: 0 0 10px;
-webkit-box-shadow: 0px 0px 4px 0px #000;
-moz-box-shadow: 0px 0px 4px 0px #000;
box-shadow: 0px 0px 4px 0px #000;
}
H1 {
position: relative;
top: -5px;
}
H1, #content {
margin: 0 auto;
width: 720px;
}
#image {
background-color: #555;
height: 180px;
width:720px;
display: block;
overflow: hidden;
}
#plug {
opacity: 0;
background-color: #777;
color: #FFF;
padding: 0.5em;
}
#navWrapper { /* required to avoid jumping */
position: relative;
width: 600px;
}
#nav {
/* just used to show how to include the margin in the effect */
padding: 10px 0;
font-size: 1.25em;
list-style: none outside none;
overflow: auto;
width: 600px;
z-index:1;
/*
position: relative;
*/
}
.navBackground{
background: url('http://dl.dropbox.com/u/62537/fadeBG.png');
width: 600px;
padding: 20px 0;
opacity:0;
filter:alpha(opacity=0);
}
.notfixed{
}
.fixed {
position: fixed;
top: 0;
z-index:-1;
margin-top:0;
}
#nav li {
float: left;
padding-right: .5em;
}