TechCrunch最近重新设计了他们的网站,他们有一个甜蜜的标题,当你向下滚动时,它会缩小为品牌的更薄版本。
你可以在这里看到我的意思:http://techcrunch.com/
我如何创造这样的东西?是否在任何地方都有教程,如果没有,你可以帮助我一些关于从哪里开始的提示吗? :)
答案 0 :(得分:35)
这不是太难,只是一个简单的.scroll()
事件。 由于面板的定位方式,我似乎无法做小提琴 检查编辑!。但基本上你所拥有的是div
顶部position: absolute
所以它始终位于顶部,然后使用.scroll()
$("body").scroll( function() {
var top = $(this).scrollTop();
// if statement to do changes
});
scrollTop()
方法用于确定body
滚动了多少。
根据您希望更改标题div的位置,您可以让if
语句做很多事情。对于您提供的示例,它将类似于
if ( top > 147 )
// add the TechCrunch div inside the header
else
// hide the TechCrunch div so that space is transparent and you can see the banner
编辑
耶!我能够让this fiddle来展示这个例子! :)
祝你好运!答案 1 :(得分:4)
老问题,但我最近遇到了这个问题,这里接受的解决方案无法正常工作,因为我的div的高度没有固定,所以简而言之就是我遇到的解决方案。
JSfiddle: http://jsfiddle.net/Lighty_46/27f4k/12/
$(document).ready(function () {
var bluebutton = $('#blue_link').offset().top - parseFloat($('#blue_link').css('marginBottom').replace(/auto/, 0));
var bluebuttonbottom = $('#blue_block_bottom').offset().top - $('#main_nav').height() - parseFloat($('#blue_link').css('marginBottom').replace(/auto/, 0));
$(window).scroll(function (event) {
// what the y position of the scroll is
var y = $(this).scrollTop();
// whether that's below the top of the div
if (y >= bluebutton) {
// if so, ad the fixed class
$('.home_nav').addClass('blue_selected');
}
// whether you have passed the bottom of the div
if (y >= bluebuttonbottom) {
// if so remove the selected class
$('.home_nav').removeClass('blue_selected');
} else {
// otherwise remove it
$('.home_nav').removeClass('blue_selected');
}
});
});
基本上,
因此,当我的标题的底部到达div的顶部时,类“blue_selected”将应用于“.home_nav”.....然后如果div的底部通过标题的底部,则“ blue_selected“已从”.home_nav“中删除。
您需要为每个按钮重复此操作,并使用各自的div
我已经在Chrome,Firefox和IE 10到8中进行过测试(在8中工作,但小提琴稍微突破)。
希望这会有所帮助,它可能不是以诚实的方式做到这一点的最佳方式,它可能在某处有一些错误,但它是我工作的唯一一个。
答案 2 :(得分:2)
您正在寻找的是您需要将Div定义为浮动Div,然后每当您滚动时它始终保留在页面上。在Techcrunch中,他们的标题位于中心顶部,所以它始终保持在那里
答案 3 :(得分:1)
这是一个想法
document.body.onscroll
事件onscroll
检查滚动位置。如果不在顶部,请更换栏中的图像答案 4 :(得分:1)
$(window).on("scroll", function () {
if ($(this).scrollTop() > 100) {
$("#header").addClass("not-transparent");
}
else {
$("#header").removeClass("not-transparent");
}
});
答案 5 :(得分:0)
虽然之前的答案似乎是一个完美的解决方案,但TechCrunch似乎使用z-index和固定定位来实现此滚动效果。
从上图中可以看出,大小标题都在屏幕上,如果不调整jQuery滚动事件就不会发生这种情况。
答案 6 :(得分:0)
将以下代码用于我的工作
<script src='js/jquery-1.9.1.min.js' type="text/javascript"></script>
<script>
$(document).on("mobileinit", function() {
$.mobile.fixedtoolbar.prototype.options.tapToggle = false;
$.mobile.fixedtoolbar.prototype.options.hideDuringFocus = "";
});
</script>
<script src="js/jquery.mobile-1.3.1.min.js"></script>