使用CSS样式position:fixed水平滚动的方法_jquery

使用CSS样式"position:fixed"可以使div块固定在一个固定位置,即使有滚动条也不会改变其位置。position:fixed给很多开发者带来了惊艳的效果,然而当出现水平滚动条时,效果就不那么容易接受了。有时候我们希望当出现水平滚动条时,div块可以随滚动条左右移动,实现垂直固定定位(fixed),水平相对定位(absolute)。本文提供一个解决方法,附jquery扩展源码。

本文的实现方式是使用js来控制div块随滚动条水平滚动,原理就是当window对象发生scroll事件和resize事件使,更新div块的left或right的值,使其相对浏览器左边或右边的位置实时改变。div块需要时position:fixed样式修饰。

当div块在水平方向上是相对浏览器右边固定的,那么当window对象发生scroll或resize事件时,就更新其right样式值,其值应该是:

复制代码 代码如下:

var new_right = ($(window).scrollLeft() + $(window).width() - $(document).width() + original_right) + 'px'

当div块在水平方向上是相对浏览器左边固定的,那么当window对象发生scroll或resize事件时,就更新其left样式值,其值应该是:

复制代码 代码如下:

var new_left = (original_left - $(window).scrollLeft()) + 'px'

上面代码中出现的original_left和original_right是最初div块的left和right值。完整的jquery扩展代码如下:

复制代码 代码如下:

(function($){
$.ScrollFixed = function(el, options){
var base = this;
base.$el = $(el);
base.el = el;
var target = base.$el;
var original_left = parseInt(target.css('left'));
var original_right = parseInt(target.css('right'));

var _fix_position = function(){
if(base.options.fixed == 'right'){
target.css('right', ($(window).scrollLeft() + $(window).width() - $(document).width() + original_right) + 'px');
} else if(base.options.fixed == 'left'){
target.css('left', (original_left - $(window).scrollLeft()) + 'px');
}
};

var windowResize = function(){
_fix_position();
};

var windowScroll = function(){
_fix_position();
};

base.init = function(){
base.options = $.extend({}, $.ScrollFixed.defaultOptions, options);
$(window).resize(windowResize);
$(window).scroll(windowScroll);
_fix_position();
console.log(base.options.fixed);
};

base.init();
};

$.ScrollFixed.defaultOptions = {
fixed:'left'
};

$.fn.scrollFixed = function(options){
return this.each(function(){
(new $.ScrollFixed(this, options));
});
};
})(jQuery);

使用实例:

复制代码 代码如下:

$('#leftsider').scrollFixed({fixed:'left'});
$('#rightsider').scrollFixed({fixed:'right'});

时间: 2025-01-20 07:46:05

使用CSS样式position:fixed水平滚动的方法_jquery的相关文章

使用CSS样式position:fixed水平滚动的方法

 这篇文章主要介绍了使用CSS样式position:fixed水平滚动的方法,需要的朋友可以参考下 使用CSS样式"position:fixed"可以使div块固定在一个固定位置,即使有滚动条也不会改变其位置.position:fixed给很多开发者带来了惊艳的效果,然而当出现水平滚动条时,效果就不那么容易接受了.有时候我们希望当出现水平滚动条时,div块可以随滚动条左右移动,实现垂直固定定位(fixed),水平相对定位(absolute).本文提供一个解决方法,附jquery扩展源码

css ie6 position:fixed无效的解决方法

我用到了css教程的一个属性position:fixed,但遗憾的是在IE6下这个属性不起作用,悲剧的IE6,于是便找解决方案,现把最佳的解决方案拿出来与大家分享,或许不久的将来你能用上. 1.要实现的效果如下图: 这时弹出提示在浏览器最右上角可见区   这时浏览器向下滚动了一下,但要让弹出层保持在浏览器最右上角可见区   2.兼容的解决方案代码如下:   .loading_tip {  position: fixed; _position: absolute; top: 10px;  righ

css中position:fixed实现div居中

上下左右 居中  代码如下 复制代码 div{     position:fixed;     margin:auto;     left:0;     right:0;     top:0;     bottom:0;     width:200px;     height:150px; } 如果只需要左右居中,那么把 bottom:0; 或者 top:0; 删掉即可 如果只需要上下居中,那么把 left:0; 或者 right:0; 即可 下面附一个DIV 元素在浏览器窗口居中 其实,实现这

js获取页面引用的css样式表中的属性值方法(推荐)_javascript技巧

如下所示: function getStyle(node, property){ if (node.style[property]) { return node.style[property]; } else if (node.currentStyle) { return node.currentStyle[property]; } else if (document.defaultView && document.defaultView.getComputedStyle) { var s

css样式导入网页的三种方法

css样式导入网页的三种方法, 仔细一点的朋友都会发现很多大的门户站他们是直接把css写在了文档里面,页也有很多站有link链接也有一些站用import像taobao等.那么他们有什么优点与缺点呢?下面我们来看看吧.  一:直接写在页面里面css 与页面同时被加载,这样的好处可以减少服务器的链接线程这就是为什么大型站都直接写在了文档里面了,因为流量大处处要考虑的. 二:link是导入外部的这样自然要等页面内容加载完之后才加载link的样式了,这样就容易出现网速慢时加载中断,页面显示乱乱的哦我想各

CSS position:fixed for IE

css  position:fixed; 是fixed的用法,配合overflow实现将一个元素固定定位到网页的一个位置上面Main CSShtml {background:#ccc;}body {margin:0; padding:0 10px 0 10px; border:0; height:100%; overflow:auto; background:#ccc;}body {font-family: georgia, serif; font-size:12px;} #menu {disp

css IE6 position:fixed (固定定位)通过position:absolute的解决方案

css教程 ie6 position:fixed (固定定位)通过position:absolute的解决方案,完全使用position:absolute来解决固定定位问题.因为其他的浏览器都支持绝对定位,在ie6,7,8,9,ff,chrome中均测试通过.注意一点:不能给外包含的元素mod-test设置高度,不然的话,是没有滚动条的.而应该在里面设置一个容器,它设置一个高度  <!doctype html public "-//w3c//dtd xhtml 1.0 transition

CSS中position:fixed的使用笔记

做开发几年了,在前端开发中,竟然没有留意position:fixed的用法. 我们都知道CSS中定位属性position的值,除了默认的值外,还有absolute,relative和fixed.我平时比较常用absolute和relative,而position:fixed却没多关注.或许是因为当初在CSS中文手册中看到position:fixed旁边有说明"IE5.5及NS6尚不支持此属性"吧. 昨天,在做一个项目时需要使一个层相对于浏览器边框固定,那时用position:absol

css中position fixed固定指定位置

们都知道CSS中定位属性position的值,除了默认的值外,还有absolute,relative和fixed.我平时比较常用absolute和relative,而position:fixed却没多关注.或许是因为当初在CSS中文手册中看到position:fixed旁边有说明"IE5.5及NS6尚不支持此属性"吧. 前段时间,在做一个项目时需要使一个层相对于浏览器边框固定,那时用position:absolute试了下,发觉absolute是对网页边框而言的.后来,上网查了一些根据