今天做了个固定定位的效果。比如对导航需要进行固定定位效果:
当没有滚动到导航下面,导航正常显示。
当滚动到导航下面,导航就固定到顶部。
这个效果使用了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:;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>

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

  1. Bootstrap 固定定位(Affix)

    来自:慕课网 http://www.imooc.com/code/5396 Affix 效果常见的有以下三种: ☑ 顶部固定 ☑ 侧边栏固定 ☑ 底部固定 固定定位--声明式触发固定定位 Affix ...

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

    × 目录 [1]相对定位 [2]固定定位 前面的话 一般地,说起定位元素是指position不为static的元素,包括relative.absolute和fixed.前面已经详细介绍过absolut ...

  3. position之fixed固定定位、absolute绝对定位和relative相对定位

    什么是层模型? 什么是层布局模型?层布局模型就像是图像软件PhotoShop中非常流行的图层编辑功能一样,每个图层能够精确定位操作,但在网页设计领域,由于网页大小的活动性,层布局没能受到热捧.但是在网 ...

  4. 解决ie6下不支持fix属性,模拟固定定位

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  5. JavaScript Table行定位效果

    作者:cloudgamer 时间: 2009-09-17 文档类型:原创 来自:蓝色理想 第 1 页 JavaScript Table行定位效果 [1] 第 2 页 JavaScript Table行 ...

  6. input固定定位后,当input框获取到焦点时,会离开手机软键盘的解决方法

    前些天做页面时候遇到这样一个问题,将input框用position:fixed固定定位在最底部的时候,当Input获取焦点的时候,input框离开了手机软键盘,而不是吸附在软键盘上,效果如下图: 找了 ...

  7. 【CSS3】---层模型position之fixed固定定位、absolute绝对定位和relative相对定位

    什么是层模型? 什么是层布局模型?层布局模型就像是图像软件PhotoShop中非常流行的图层编辑功能一样,每个图层能够精确定位操作,但在网页设计领域,由于网页大小的活动性,层布局没能受到热捧.但是在网 ...

  8. JS仿淘宝详情页菜单条智能定位效果

    类似于淘宝详情页菜单条智能定位 对于每个人来说并不陌生!如下截图所示:红色框的那部分! 基本原理: 是用JS侦听滚动事件,当页面的滚动距离(页面滚动的高度)大于或者等于 "对象"( ...

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

    fixed:表示固定定位,与absolute定位类型类似,但它的相对移动的坐标是视图(屏幕内的网页窗口)本身. 由于视图本身是固定的,它不会随浏览器窗口的滚动条滚动而变化,除非你在屏幕中移动浏览器窗口 ...

随机推荐

  1. Struts2 执行流程

    struts2执行原理(执行流程) 一个请求在Struts2框架中的处理大概分为以下几个步骤: 1 客户端发送请求:(HttpServletRequest)2 这个请求经过一系列的过滤器(Filter ...

  2. 从prototype beandefinition 谈 spring 的关闭流程和 prototype 的特性

    背景介绍: 服务端期望使用 面向对象编程, 和 spring 结合的话只能是通过 prototype 的 bean 定义,并通过 getBean 获取. 优雅停机探究: 代码说明: 1. 类关系 Si ...

  3. Luogu P3727 曼哈顿计划E 点分治+hash

    题目: P3727曼哈顿计划E 分析: 大长题面容易给人一种不可做的错觉,但是这题考的知识点都是我们熟悉的. 稍加分析我们可以得到,我们可以把每个点当成一个单独的游戏,如果k=1,就是简单的nim游戏 ...

  4. 单机简单搭建一个kafka集群(没有进行内核参数和JVM的调优)

    1.JDK安装 在我的部署单节点kafka的博客里有相关的方法.(https://www.cnblogs.com/ToBeExpert/p/9789486.html )zookeeper和kafka的 ...

  5. 【支付宝支付】扫码付和app支付,回调验证签名失败问题

    在检查了参数排序,编码解码,文件编码等问题后,发现还是签名失败,最后找出原因: 扫码付和app支付采用的支付宝公钥不一样   Pid和公钥管理里面:   开放平台密钥界面和开放平台应用界面的密钥应该一 ...

  6. PAT Basic 1062

    1062 最简分数 一个分数一般写成两个整数相除的形式:N/M,其中 M 不为0.最简分数是指分子和分母没有公约数的分数表示形式. 现给定两个不相等的正分数 N​1​​/M​1​​ 和 N​2​​/M ...

  7. js 秒杀

    秒杀活动页面 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" ...

  8. mac finder中添加自定义边栏

    想在finder中添加自定义边栏,操作如图所示: 选中边栏中任意边栏项,右键-在上层文件夹中显示,然后创建新的文件夹,将该文件夹拖到边栏中即可.

  9. 【LeetCode】Integer to Roman(整数转罗马数字)

    这道题是LeetCode里的第12道题. 吐了,刚做完"罗马数字转整数",现在又做这个.这个没什么想法,只能想到使用if语句嵌套,或者使用哈希表.但哈希表我还不熟练啊.先拿if嵌套 ...

  10. POJ 2643 Election

    Election Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3558   Accepted: 1692 Descript ...