随高度固定位置 fixed

var jQuery = require("jquery");
(function($) {
    jQuery.fn.scrollFix = function(height, dir) {
        height = height || 0;
        height = height == "top" ? 0 : height;
        return this.each(function() {
            if (height == "bottom") {
                height = document.documentElement.clientHeight - this.scrollHeight;
            } else if (height < 0) {
                height = document.documentElement.clientHeight - this.scrollHeight + height;
            }
            var that = $(this),
                oldHeight = false,
                p, r, l = that.offset().left;
            dir = dir == "bottom" ? dir : "top"; //默认滚动方向向下
            if (window.XMLHttpRequest) { //非ie6用fixed

                function getHeight() { //>=0表示上面的滚动高度大于等于目标高度
                    return (document.documentElement.scrollTop || document.body.scrollTop) + height - that.offset().top;
                }
                $(window).scroll(function() {
                    if (oldHeight === false) {
                        if ((getHeight() >= 0 && dir == "top") || (getHeight() <= 0 && dir == "bottom")) {
                            oldHeight = that.offset().top - height;
                            that.css({
                                position: "fixed",
                                top: height,
                                left: l
                            });
                        }
                    } else {
                        if (dir == "top" && (document.documentElement.scrollTop || document.body.scrollTop) < oldHeight) {
                            that.css({
                                position: "static"
                            });
                            oldHeight = false;
                        } else if (dir == "bottom" && (document.documentElement.scrollTop || document.body.scrollTop) > oldHeight) {
                            that.css({
                                position: "static"
                            });
                            oldHeight = false;
                        }
                    }
                });
            } else { //for ie6
                $(window).scroll(function() {
                    if (oldHeight === false) { //恢复前只执行一次,减少reflow
                        if ((getHeight() >= 0 && dir == "top") || (getHeight() <= 0 && dir == "bottom")) {
                            oldHeight = that.offset().top - height;
                            r = document.createElement("span");
                            p = that[0].parentNode;
                            p.replaceChild(r, that[0]);
                            document.body.appendChild(that[0]);
                            that[0].style.position = "absolute";
                        }
                    } else if ((dir == "top" && (document.documentElement.scrollTop || document.body.scrollTop) < oldHeight) || (dir == "bottom" && (document.documentElement.scrollTop || document.body.scrollTop) > oldHeight)) { //结束
                        that[0].style.position = "static";
                        p.replaceChild(that[0], r);
                        r = null;
                        oldHeight = false;
                    } else { //滚动
                        that.css({
                            left: l,
                            top: height + document.documentElement.scrollTop
                        })
                    }
                });
            }
        });
    };
})(jQuery);

调用方法

$("#nav").scrollFix("top");

//不兼容的简洁版

var position = $(‘.pub-banner‘).height() + $(‘.wgt-searchbar‘).outerHeight(); // 它上面元素的位置,
$(window).on(‘scroll‘, function() {
    console.log(position);
    //  console.log($(window).scrollTop());
    if ($(window).scrollTop() > position) {
        //alert(‘1‘);
        $(‘#nav‘).css({
            ‘position‘: ‘fixed‘,
            ‘top‘: ‘0‘
        });
    } else {
        $(‘#nav‘).css({
            ‘position‘: ‘static‘,
        });
    }
});
时间: 2024-10-17 09:39:55

随高度固定位置 fixed的相关文章

css固定元素位置(fixed)

我们经常碰到的需求是希望页面某个元素固定在浏览器的一个位置,无论如何滚动滚动条,位置不变,就例如经常看到的弹出广告.方法一般是使用js控制,或者使用css.这里我写的是css的控制方法. 在IE7以上版本及firefox.opera.safari里,都支持css属性"position:fixed",它的作用就是将元素相对于窗口固定位置.代码如下 #ads{    position:fixed;    right:0;    bottom:0;    border:1px solid r

Fixed固定位置的悬浮div层

固定位置的Js悬浮窗口,为了便于查看效果,测试时用随机函数产生一定的内容,与浮动窗口的控制无关,不想用可以去掉.代码内有注释. <!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

3、第3课CSS块级、行内元素、绝对定位、相对定位、固定位置20150922

1.块级元素 A:特点: A.1默认显示在父标签的左上角 A.2块级元素默认占满一行(占满整个文档流) B:常见的块级元素 P   h1--h6   ul  li    ol  li   div  hr    table 2.行内元素(内联元素) A:常见的=行内元素有 a  span  img   input B:行内元素的特点 B.1 大小受到文字区域影响,不受width  height 影响 B.2 行内元素不会单独占满一行 3. 行内元素和块级元素相互转换 A:  行内元素转换成块级元素

滚动条固定位置

<!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="Content-Typ

固定位置

当滚动条移动到某一位置时,让页面某些内容固定,如导航条,让固定的一直显示,当达到一定条件,再取消固定,达到了固定的目的. <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>固定位置实现</title> <style type="text/css"> *{ padding: 0

固定位置的Js悬浮窗口

<!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="Content-Typ

网易新闻控件的创建,scrollView和viewGroup的学习,和up事件后模拟页面回到固定位置

1.viewGroup可以添加控件,也可以用<include layout="@layout/name">添加xml布局文件,在本次实验中将新闻的menu(scrollView布局文件)和正文(mainnews)加入到继承ViewGroup的控件中,但不明白为什么scrollview的宽度和下滑属性没了.导致不能下滑. 一旦发现空间几部分组成就继承viewgroup ,然后重写onmeasure方法,在里面测量所有的孩子,然后重写layout方法布局这些孩子view的位置.

android百度地图开发之自动定位所在位置与固定位置进行驾车,步行,公交路线搜索

最近跟着百度地图API学地图开发,先是学了路径搜索,对于已知坐标的两点进行驾车.公交.步行三种路径的搜索(公交路径运行没效果,待学习中),后来又 学了定位功能,能够获取到自己所在位置的经纬度,但当将两者合起来先自动获取自己所在位置的经纬度然后与固定地点进行路径搜索时却弄不出来了,因为刚开始 写的两者在两个类中总是取不到经纬度值,后来将两者写到同一个类中去了,终于取到经纬度值了,也运行出来了.需要 在 BDLocationListener的onReceiveLocation里获取到经纬度值,因为已

高度固定,行数不固定的文字垂直居中问题

大家都知道,水平方向上的居中很好做到,text-align:center即可做到:垂直方向上的居中如果文字行数和高度都固定也很好实现,但是如果行数不固定呢? 最近,接到一个需求:高度固定,文字行数可能为一行.两行,但不管多少行,文字都要垂直居中.例如: 对于H5页面来说,CSS3的translate即可做到,其原理是外层div相对定位,里面的元素绝对定位,距离父容器的top值为50%,然后通过translate属性让它相对于自身向上移动50%. 其css为: 对于PC来说,就没这么好糊弄了:低版