使用CSS樣式position:fixed水平滾動的方法

來源:互聯網
上載者:User

使用CSS樣式position:fixed水平滾動的方法

 這篇文章主要介紹了使用CSS樣式position:fixed水平滾動的方法,需要的朋友可以參考下

使用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'}); 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.