jquery的固定定位效果

今天做了个固定定位的效果。比如对导航需要进行固定定位效果:

当没有滚动到导航下面,导航正常显示。

当滚动到导航下面,导航就固定到顶部。

这个效果使用了jquery的方法实现,具体思路为:

1)首先获取导航相对与文档的偏移量top(使用offset().top)

2)定义滚动事件,获取滚动元素的scrollTop,对scrollTop及top进行比较

3)若scrollTop超过了top,则对导航进行position:fixed设置,若没有超过,则对导航设置默认的position:static.

另外针对跳转到固定位置,很多处理是通过锚点实现,location.href=#id或者location.hash=#id这种形式实现。其实也可以利用jquery的offset().top来达到同样的效果,具体可以看下面代码中针对固定定位元素的click事件的处理。

这里写了个demo:

<!doctype html>
<html>
<head>
<meta charset="utf8">
<title>jquery固定定位demo</title>
<style type="text/css">
    body{margin:0;padding-top:100px;background-color:#fff;}
    .content{width:500px;height:300px;background-color:#ccc;}
    h2{padding:10px;background-color:#000;color:#fff;}
</style>
<script type="text/javascript" src="jquery.js"></script>
</head>
<body>
    <div class="floor">
        <h2 class="fixed">第一楼</h2>
        <div class="content">ddddd</div>
    </div>
    <div class="floor">
        <h2>第二楼</h2>
        <div class="content">ffff</div>
    </div>
    <div class="floor">
        <h2>第三楼</h2>
        <div class="content">sdfsf</div>
    </div>
    <div class="floor">
        <h2>第四楼</h2>
        <div class="content">aaaaaa</div>
    </div>
    <script type="text/javascript">
        var fixed = $(".fixed");
        var position = fixed.css("position");
        var offsetTop = fixed.offset().top;
        //定义滚动事件,判断scrollTop及offsetTop
        $(window).scroll(function(){
            var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
            if(scrollTop > offsetTop){
                fixed.css({"position":"fixed","width":"100%","top":"0"});
            }else{
                fixed.removeAttr("style").css({"position":position,"width":"100%"});
                
            }
        });
        //点击固定元素,回到最初的位置
        fixed.bind("click",function(){
            if($(this).css("position") == "fixed"){
                $(this).removeAttr("style").css({"position":"static","width":"100%"});    
                $(document).scrollTop(offsetTop);
            }
            
        });
    
    </script>
</body>

</html>

---------------------------------------分割线----------------------------------------------------------

对clientWidth,offsetWidth,offsetTop,jquery的offset().top的解释,因为本人对它们一直有点疑问:

clientWidth:元素的宽度,不包括border和scrollBar的宽度

offsetWidth:元素的宽度+ border+scrollBar的宽度

offsetTop:元素距离最近的一个设置了position不为static的父级元素的距离

jquery中的offset().top:元素距离文档的距离。

时间: 2024-08-01 17:55:58

jquery的固定定位效果的相关文章

绝对定位模拟固定定位效果...

今天下班,突然发现同学在群里求救解决固定定位在移动端偏移的问题,本屌丝猛地一颤:那一天,我终于回想起来了,曾经一度被ios固定定位失效所支配的恐怖,还有被市场妹子一脸嘲讽的看着的那份屈辱...(本屌意淫一下巨人). 真是情况就是,ios对固定定位的支持有点奇葩,当固定定位的层里有input一类的能调动虚拟键盘的元素时,一旦用户聚焦这些元素,固定定位的层级中的元素会发生位移,也就是俗称的页面错乱了,本屌当时寻遍网上各种方案,试了大半天时间(其实,就是因为没钱穷屌丝一枚,没有水果手机,每次测试都要厚

jQuery实现固定顶部 定位滚动导航效果代码

jQuery实现固定顶部 定位滚动导航效果代码,很常见的效果,非常实用:滚动滚动条时,导航固定顶部,并且滚动到对应的板块时,当前导航高亮显示:点击导航文字时平滑跳转到对应的板块. $(function(){          var subNav_active = $(".adv_active");         var subNav_scroll = function(target){             subNav_active.removeClass   ("a

jQuery 随滚动条滚动效果 (固定版)

//侧栏随动 var rollStart = $('.feed-mail'), //滚动到此区块的时候开始随动 rollSet = $('.search,.weibo,.group,.feed-mail,.tags'); //添加rollStart之前的随动区块 rollStart.before('<div class="da_rollbox" style="position:fixed;background-color:#fff;width:inherit;"

jQuery层动画定位滑动效果代码

<!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><title>jQuery层动画定位滑动</title&

table的滚动和行定位效果

tabel的表头信息固定 而内容滚动:实现:当div的内容超过样式设置的width .height时会出现相应的横向.纵向滚动条.利用这个让table的内容超过规定值时,自动出现滚动条. 而设置两个table;一个为表头信息.一个为内容.内容用一个div,包起来.连个table对齐即可. 定位效果:scrollTop()可以获取设设置当前滚动条距离顶层的高度,offset()获取匹配元素到当前窗口的相对位移,而top顾名思义:而最终得到元素到当前窗口的高度相对偏移量; offset()根据当前行

需求:页面content分为左右两栏,左侧固定定位,滚动显示,右侧亦可滚动查看

如题,content宽度为1200px,代码初版如下所示: <script type="text/javascript" >     function menuFixed(id){         $('#rightanswer').css('height', document.documentElement.clientHeight*0.86+'px');         $('#viewerPlaceHolder').css('height', document.doc

理解CSS相对定位和固定定位

× 目录 [1]相对定位 [2]固定定位 前面的话 一般地,说起定位元素是指position不为static的元素,包括relative.absolute和fixed.前面已经详细介绍过absolute绝对定位的基础和应用,这篇博客介绍和梳理相对定位relative和固定定位fixed的相关知识 相对定位 定义 可能理解起来最简单的定位机制就是相对定位了.采用这种机制时,通过使用偏移属性移动定位元素.当元素相对定位时,它会从其正常位置移走,不过,原来所占的空间并不会因此消失.相对定位元素,会为其

层模型--固定定位(position:fixed)

fixed:表示固定定位,与absolute定位类型类似,但它的相对移动的坐标是视图(屏幕内的网页窗口)本身. 由于视图本身是固定的,它不会随浏览器窗口的滚动条滚动而变化,除非你在屏幕中移动浏览器窗口的屏幕位置,或改变浏览器窗口的显示大小, 因此固定定位的元素会始终位于浏览器窗口内视图的某个位置,不会受文档流动影响,这与background-attachment:fixed?属性功能相同. 以下代码可以实现相对于浏览器视图向右移动100px,向下移动50px.并且拖动滚动条时位置固定不变. <!

webbasic之相对定位、绝对定位、固定定位

1.相对定位 -以自己为目标 -较小的偏移 -不脱离队伍(流)//位置不会释放   position:relative   left:值   right:值 <!doctype html> <html>   <head>      <meta charset="utf-8"/>      <title>照片墙</title>      <style>         /*先刷墙*/         bo