用jquery设定始终显示(随页面滚动)的元素

标题比较让人费解,大概效果就是现在越来越多的看到网站里添加的随页面滚动的模块。比如我这里的头部就是,当然有时候,效果会更好一些,比如一般时候固定在某处,页面滚动使这个元素滚出显示边界之后,为了方便读者(或者展示广告),就把这个模块变成随页面滚动的。测试了一下效果还不错(当然IE6去死)。

很久没写过代码分享文章了。这里先说一下方法:获取元素(这里定位元素A)距离顶部的高度,接着设定scroll滚动的事件,比如超过那个高度,把A的位置设定为fixed,小于该高度,修改回relative。这里借zww大叔个图,如下(当然大叔不是这么弄的,不过效果类似):

下面是代码。

var scroller_anchor = jQuery(".scroller").offset().top;
jQuery(window).scroll(function() {
  if (jQuery(this).scrollTop() >= scroller_anchor && jQuery('.scroller').css('position') != 'fixed') {
   jQuery('.scroller').css({
    'position': 'fixed',
    'margin-top': '0'
   });
  } else if (jQuery(this).scrollTop() < scroller_anchor && jQuery('.scroller').css('position') != 'relative') {
   jQuery(".scroller").css({
    'margin-top': '10px',
    'position': 'relative'
   });
  }
});

但是,有时候这样的方式会有问题,比如元素A上面有动态增长(缩短)的元素(比如突然js写入了一个东东),这样第一次获取的高度就不再合适。这样就需要设定一个锚点(这里设定为class id为scroller_anchor的div元素)(经zww大叔提醒将class改为ID)。代码如下:

jQuery(window).scroll(function() {
 if(jQuery("#content").find("#scroller_anchor").length > 0){
  var scroller_anchor = jQuery("#scroller_anchor").offset().top;
  if (jQuery(this).scrollTop() >= scroller_anchor && jQuery('.scroller').css('position') != 'fixed') {
   jQuery('.scroller').css({
    'position': 'fixed',
    'margin-top': '0'
   });
  jQuery("#scroller_anchor").css('height', '36px');
  } else if (jQuery(this).scrollTop() < scroller_anchor && jQuery('.scroller').css('position') != 'relative') {
   jQuery("#scroller_anchor").css('height', '0px');
   jQuery(".scroller").css({
    'margin-top': '10px',
    'position': 'relative'
   });
  }
 }
});

上面用到的完整的html代码如下:

<div id="main-content">
 <div id="scroller_anchor" style="height: 0px; "></div>
 <div class="scroller">
  ......
 </div>
</div>

至于具体的css,请自己根据需要设定吧。

文章来源:Axiu’s blog

时间: 2024-11-05 14:47:38

用jquery设定始终显示(随页面滚动)的元素的相关文章

jQuery结合AJAX之在页面滚动时从服务器加载数据

  这篇文章主要介绍了jQuery结合AJAX之在页面滚动时从服务器加载数据,文中示例服务器端为C#程序,需要的朋友可以参考下 简介 文本将演示怎么在滚动滚动条时从服务器端下载数据.用AJAX技术从服务器端加载数据有助于改善任何web应用的性能表现,因为在打开页面时,只有一屏的数据从服务器端加载了,需要更多的数据时,可以随着用户滚动滚动条再从服务器端加载. 背景 是Facebook促使我写出了在滚动条滚动时再从服务器加载数据的代码.浏览facebook时,我很惊讶的发现当我滚动页面时,新的来自服

jQuery使用hide方法隐藏页面上指定元素的方法

 这篇文章主要介绍了jQuery使用hide方法隐藏页面上指定元素的方法,涉及jQuery使用hide隐藏元素的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了jQuery使用hide方法隐藏页面上指定元素的方法.分享给大家供大家参考.具体如下: 下面的JS代码隐藏了网页中所有<p>标签的内容 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <!DOCTYPE html> <html> &

jQuery使用hide方法隐藏页面上指定元素的方法_jquery

本文实例讲述了jQuery使用hide方法隐藏页面上指定元素的方法.分享给大家供大家参考.具体如下: 下面的JS代码隐藏了网页中所有<p>标签的内容 <!DOCTYPE html> <html> <head> <script src="js/jquery.min.js"> </script> <script> $(document).ready(function(){ $("button&qu

jQuery结合AJAX之在页面滚动时从服务器加载数据_jquery

 简介 文本将演示怎么在滚动滚动条时从服务器端下载数据.用AJAX技术从服务器端加载数据有助于改善任何web应用的性能表现,因为在打开页面时,只有一屏的数据从服务器端加载了,需要更多的数据时,可以随着用户滚动滚动条再从服务器端加载.背景 是Facebook促使我写出了在滚动条滚动时再从服务器加载数据的代码.浏览facebook时,我很惊讶的发现当我滚动页面时,新的来自服务器的数据开始插入到此现存的数据中.然后,对于用c#实现同样的功能,我在互联网上了查找了相关信息,但没有发现任何关于用c#实现这

jQuery实现div浮动层跟随页面滚动效果

 这篇文章主要介绍了jQuery实现div浮动层跟随页面滚动效果,需要的朋友可以参考下  代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml"

jQuery实现div浮动层跟随页面滚动效果_javascript技巧

复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=&qu

jquery页面滚动事件的使用

在现在更加追加页面加载速度和用户体验的情况下,页面的滚动事件使用的越来越多.通常我们使用滚动事件主要做的事情主要有: ajax异步加载,加快页面首次加载的速度 懒加载(或延迟加载):先把HTML元素放到textarea标签中,或把img的链接先放到一个字段里,页面滚动到某个位置时才进行开始加载 顶部导航或侧边导航的焦点跟踪 侧边数字导航的跟踪(例如百度经验) "回到顶部"功能 这两天做了一个demo,大家可以参考一下:页面滚动效果   上图中指出了用滚动事件实现的功能,不过demo中没

js页面滚动时层智能浮动定位实现(jQuery/MooTools)_jquery

一.应用展示 关于层的智能浮动效果早在几年前我就在国外的一些个人网站的垂直导航上见到了,现在似乎在国内一些商业网站上也屡见此效果,例如淘宝网的搜索结果页的排序水平条,在默认状态下,滚动条跟随页面滚动,如下: 随着页面向下滚动,当此水平条接触浏览器的上边缘时,水平条独立出来,不跟随滚动条滚动了,如下图所示: 类似的效果在新浪微博上也有: 当页面滚动,新动态提示开始要淡出浏览器窗口的时候,其浮动于浏览器窗口的最上沿显示,如下图所示: 此效果实现原理其实很简单,本文就将展示其实现.  二.实现原理 默

jQuery弹出窗口居中,随页面滚动而滚动

方法一,自定弹出层 弹出层,我们常用到,这里分享一个别人的弹出层插件,页面滚动,弹出层用于居中于窗口中间位置. 假如HTML代码如下     代码如下 复制代码   <!DOCTYPE HTML>     <html>     <head>     <meta charset="utf-8">     <title>弹出层</title>     </head>     <body>