使用CSS樣式position:fixed水平滾動的方法
更新時間:2014年02月19日 16:23:12 作者:
這篇文章主要介紹了使用CSS樣式position:fixed水平滾動的方法,需要的朋友可以參考下
使用CSS樣式"position:fixed"可以使div塊固定在一個固定位置,即使有滾動條也不會改變其位置。position:fixed給很多開發(fā)者帶來了驚艷的效果,然而當出現(xiàn)水平滾動條時,效果就不那么容易接受了。有時候我們希望當出現(xiàn)水平滾動條時,div塊可以隨滾動條左右移動,實現(xiàn)垂直固定定位(fixed),水平相對定位(absolute)。本文提供一個解決方法,附j(luò)query擴展源碼。
本文的實現(xiàn)方式是使用js來控制div塊隨滾動條水平滾動,原理就是當window對象發(fā)生scroll事件和resize事件使,更新div塊的left或right的值,使其相對瀏覽器左邊或右邊的位置實時改變。div塊需要時position:fixed樣式修飾。
當div塊在水平方向上是相對瀏覽器右邊固定的,那么當window對象發(fā)生scroll或resize事件時,就更新其right樣式值,其值應(yīng)該是:
var new_right = ($(window).scrollLeft() + $(window).width() - $(document).width() + original_right) + 'px'
當div塊在水平方向上是相對瀏覽器左邊固定的,那么當window對象發(fā)生scroll或resize事件時,就更新其left樣式值,其值應(yīng)該是:
var new_left = (original_left - $(window).scrollLeft()) + 'px'
上面代碼中出現(xiàn)的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'});
本文的實現(xiàn)方式是使用js來控制div塊隨滾動條水平滾動,原理就是當window對象發(fā)生scroll事件和resize事件使,更新div塊的left或right的值,使其相對瀏覽器左邊或右邊的位置實時改變。div塊需要時position:fixed樣式修飾。
當div塊在水平方向上是相對瀏覽器右邊固定的,那么當window對象發(fā)生scroll或resize事件時,就更新其right樣式值,其值應(yīng)該是:
復(fù)制代碼 代碼如下:
var new_right = ($(window).scrollLeft() + $(window).width() - $(document).width() + original_right) + 'px'
當div塊在水平方向上是相對瀏覽器左邊固定的,那么當window對象發(fā)生scroll或resize事件時,就更新其left樣式值,其值應(yīng)該是:
復(fù)制代碼 代碼如下:
var new_left = (original_left - $(window).scrollLeft()) + 'px'
上面代碼中出現(xiàn)的original_left和original_right是最初div塊的left和right值。完整的jquery擴展代碼如下:
復(fù)制代碼 代碼如下:
(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);
使用實例:
復(fù)制代碼 代碼如下:
$('#leftsider').scrollFixed({fixed:'left'});
$('#rightsider').scrollFixed({fixed:'right'});
相關(guān)文章
使用jQuery實現(xiàn)dropdownlist的聯(lián)動效果(sharepoint 2007)
在sharepoint 2007網(wǎng)站中,使用jQuery實現(xiàn)dropdownlist的聯(lián)動效果.2011-03-03
Jquery和JS獲取ul中l(wèi)i標簽的實現(xiàn)方法
下面小編就為大家?guī)硪黄狫query和JS獲取ul中l(wèi)i標簽的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06
JQuery 確定css方框模型(盒模型Box Model)
做過前臺設(shè)置的都知道css存在兩種盒模型,W3C標準的方框模型和IE瀏覽器的方框模型。除IE以外的大多數(shù)瀏覽器只支持W3C方框模型。IE瀏覽器能夠根據(jù)頁面的呈現(xiàn)模式的定義而是用對性的方框模式。已用哪中呈現(xiàn)的模式取決于頁面上的DOCTYPE的聲明。2010-01-01
jquery實現(xiàn)鼠標點擊后展開列表內(nèi)容的導(dǎo)航欄效果
這篇文章主要介紹了jquery實現(xiàn)鼠標點擊后展開列表內(nèi)容的導(dǎo)航欄效果,通過簡單的jQuery鏈式操作實現(xiàn)針對頁面元素的遍歷及樣式動態(tài)變換功能,需要的朋友可以參考下2015-09-09

