使元素遇顶固定

今天有人问我遇顶固定怎么做,这位朋友是刚入门,所以个人感觉非常简单的特效对刚入门的朋友还是有点阻碍,然后呢,我就在博客里写下了这个简单的小特效,先看一下效果图吧:

这个特效在网站中,还是比较常用到的,我就不写很多代码了,图方便,直接上div了

HTML:

<header>
    <div></div>
    <nav></nav>   
</header>
    <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br><br>

这么多的<br>是为了有滚动条

CSS:

*{margin:0;padding:0;}
div{width:100%;height:90px;background-color:#000;}
nav{width:100%;height:60px;background-color:red;}

JS:

 var height;
        $(window).scroll(function(){
            height=$(window).scrollTop();//获取距离顶部的距离
            if(height>90){
                $("nav").css({"position":"fixed","top":"0","left":"0"});//让元素固定

            }else{
                $("nav").css("position","static");//取消固定
            }
        })

对了,需要用到jquery

下载一个引入就可以了

原理就是使用fixed固定定位,在网页中引入的时候,一定要考虑固定定位不在页面的问题,所以,在需要遇顶固定的元素下加一个div,当元素变成固定时,这个div的高度变成元素的高度,就可以解决这个问题,直接可以在if里写这行代码就行了

一、固定的例子 我一直以为是某个div或层随屏幕滚动,固定,离开浏览器部又还原这样的例子其实不少,其实它的名字叫“层的智能浮动效果”。目前我们在国内的商业网站上就常常看到这样的效果了。例如淘宝网的搜索结果页的排序水平条,在默认状态,该工具条是跟随页面滚动的,如下图: 而当我们下拉滚动条,随着页面向下滚动,当此工具条接到浏览器的上边缘,这就会独立出来固定部,不跟随页面滚动而滚动了,如下图: 类似的例子效果我们在别的网站上都有看到过,例如腾讯微博首页上,当我们下拉屏幕浏览新微博,工具条也会出现这个效果,如下图: 这个效果看上去方便,贴心,也许还带推动广告的促销呢。原理其实很简单,本文展示两种方法。 二、智能浮动效果的实现原理 它分两种状态,一是默认状态,二是浮动固状态。 默认状态就是默认状态,什么也不用做,保持原有的CSS就好。无论有没有对它做定位,做了absolute也好,没做也好,都行。 关键是当浏览器屏幕滚动,该对象div层要移除浏览器界面视区的候,是要修改它的position属性,让它浮动在窗口的上沿显示就行了。好的position属性是fixed,可以在IE6+和其他浏览器浮动层平滑的固定定位,由于IE6老大哥不支持fixed属性,所以可以另外赋予它absolute属性。当然也会产生副作用——滚动不平滑。不过也无所谓了,在微软公布不再修补更新XP漏洞,在中国360安全卫士的帮助下虽然大家仍然使用XP,但IE的用户已经是少之又少了。 那接下来,如何判断当前div层与浏览器窗口的上边缘接了呢?到浏览器部了呢? 当浮动层div与浏览器窗口上边缘接的一瞬间,其页面垂直偏移值与页面的滚动高度是一致的,所以我们就用这个进行判断。那如何获得页面上元素距离页面的垂直距离呢? 这里则是使用javaScript库实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值