只需在您的滾動功能中進行寬度計算。
$(function() {
// cache selectors
var wrapper = $('.wrapper');
var sidebar = $('.sidebar');
// get some maths
var sidebarTop = sidebar.offset().top;
var sidebarOffset = 25; // is .wrapper padding
// sticky logic
$(window).on('scroll', function() {
var windowTop = $(window).scrollTop();
var sidebarWidth = Math.round(wrapper.width() * 0.3); // is .sidebar width
if (sidebarTop < (windowTop + sidebarOffset)) {
sidebar.css({
position: 'fixed',
top: sidebarOffset,
width: sidebarWidth
})
} else {
sidebar.css({
position: 'static',
width: '30%' // original CSS value
})
}
})
})
這裏有一點點的開銷,因爲它每次滾動時都要計算寬度。另一種方法是將其放入一個$(window).resize()
函數中,以便在調整窗口大小時計算出寬度。
有沒有現場演示? – SaidbakR
我剛更新了他的codepen:http://codepen.io/cmegown/pen/fjqzH –
不過,我使用Chrome對其進行了測試,它工作正常,但是,在不重新加載頁面的情況下調整瀏覽器窗口(最大化,最小化)側欄的大小保持原樣。 – SaidbakR