工作根據我已添加下列屬性到一個導航欄引導3文檔:詞綴未在自舉4阿爾法
<nav class="navbar no-margin-bottom" data-spy="affix" data-offset-top="90" >
...
</nav>
向下滾動引導4不加入類的Navbar是詞綴頁面後。誰能告訴我如何解決這個問題? Bootstrap.js和jQuery.js正在工作。
工作根據我已添加下列屬性到一個導航欄引導3文檔:詞綴未在自舉4阿爾法
<nav class="navbar no-margin-bottom" data-spy="affix" data-offset-top="90" >
...
</nav>
向下滾動引導4不加入類的Navbar是詞綴頁面後。誰能告訴我如何解決這個問題? Bootstrap.js和jQuery.js正在工作。
雖然詞綴從引導版本4.刪除但是,您可以通過這個jQuery代碼實現自己的目標:
$(window).on('scroll', function(event) {
var scrollValue = $(window).scrollTop();
if (scrollValue == settings.scrollTopPx || scrollValue > 70) {
$('.navbar').addClass('navbar');
}
});
我假設'$('。navbar')。addClass('navbar');'應該是'$('。navbar')。addClass('fixed-top');'?我不知道如何添加一個已經擁有的類將做任何事情,否則。 –
From the bootstrap v4 documentation:
掉落詞綴jQuery插件。我們建議使用
position: sticky
填充。 See the HTML5 Please entry瞭解詳細信息和特定的填充建議。如果您使用Affix來應用其他非
position
樣式,則polyfills可能不支持您的用例。這種用途的一個選擇是第三方庫。
重要:'位置:sticky'在chrome中不起作用,但它導致它自推出以來只有4年了... – clankill3r
這一切都在[link](http://html5please.com/#sticky)中說過。 – Vucko
@ clankill3r只有... :-P FYI它曾經在Chrome中工作,直到他們破產。 – TylerH
更新引導4
該文檔推薦粘性polyfill和推薦的ScrollPos-Styler並沒有真正幫助滾動位置(您可以輕鬆定義偏移量)。
我認爲這是容易使用jQuery相應觀看窗口滾動和更改CSS固定...
var toggleAffix = function(affixElement, wrapper, scrollElement) {
var height = affixElement.outerHeight(),
top = wrapper.offset().top;
if (scrollElement.scrollTop() >= top){
wrapper.height(height);
affixElement.addClass("affix");
}
else {
affixElement.removeClass("affix");
wrapper.height('auto');
}
};
$('[data-toggle="affix"]').each(function() {
var ele = $(this),
wrapper = $('<div></div>');
ele.before(wrapper);
$(window).on('scroll resize', function() {
toggleAffix(ele, wrapper, $(this));
});
// init
toggleAffix(ele, wrapper, $(window));
});
Bootstrap 4 affix (sticky navbar)
編輯:另一個解決方案是使用port of the 3.x Affix plugin作爲Bootstrap 4的替代品..
根據Muckgation文檔中Vucko的報價,ScrollPos-Styler庫適合我很好。
.js ScrollPos-Styler
(scrollPosStyler.js
)文件到您的頁面。<div>
'粘性'<nav class="navbar navbar-toggleable-md">
sps sps--abv
類<nav class="navbar navbar-toggleable-md sps sps--abv">
.css
您希望的款式在元素變粘時引發觸發(按照demo page。/**
* 'Shared Styles'
**/
.sps {
}
/**
* 'Sticky Above'
*
* Styles you wish to apply
* Once stick has not yet been applied
**/
.sps--abv {
padding: 10px
}
/**
* 'Sticky Below'
*
* Styles you wish to apply
* Once stick has been applied
**/
.sps--blw {
padding: 2px
}
要建立在安瓦爾·侯賽因的回答。我發現這個成功:
$(window).on('scroll', function (event) {
var scrollValue = $(window).scrollTop();
if (scrollValue > 120) {
$('.navbar').addClass('affix');
} else{
$('.navbar').removeClass('affix');
}
});
向下滾動時,這將類應用到導航欄,但滾動備份時也會刪除類。以前,當滾動備份時,應用的類將保持應用於導航欄。
$(window).on('scroll', function (event) {
var scrollValue = $(window).scrollTop();
var offset = $('[data-spy="affix"]').attr('data-offset-top');
if (scrollValue > offset) {
$('[data-spy="affix"]').addClass('affix-top');
var width = $('[data-spy="affix"]').parent().width();
$('.affix-top').css('width', width);
} else{
$('[data-spy="affix"]').removeClass('affix-top');
}
});
爲您的答案添加一些解釋 –
exp bootstrap 3,attr data-spy =「affix」和data-offset-top =「number」。 –
嘗試每一個解決方案,我可以找到(並且是意識到詞綴從引導4刪除)後,我能得到我所需要的所需粘結果的唯一方法是使用sticky-kit。
這是一個非常簡單的jQuery插件,易於設置。
只包含的代碼在您的項目,然後分配要堅持
$("#sidebar").stick_in_parent();
如果這可以通過使用8行完成,那麼爲什麼我會使用插件? –
關鍵是我無法得到建議的8行工作。我不完全是JS或CSS的noob。此外,最少8行,還有其他因素需要考慮,例如不同類型的滾動事件。 – DazBaldwin
我檢查了這個插件,並有很多功能。 –
對於誰是尋找在純JavaScript回答用戶的元素,這是你如何通過使用純做Javascript:
window.onscroll = (e) => {
let scrollValue = window.scrollY;
if (scrollValue > 120) {
document.querySelector('.navbar').add('affix');
} else{
document.querySelector('.navbar').remove('affix');
}
}
你讀過Bootstrap 4文檔了嗎?如果你這樣做,並且這是在Bootstrap 4文檔中指定的,那麼你可以在這裏創建一個問題(https://github.com/twbs/bootstrap/tree/v4-dev) – Jamie
@jamie你的意思是說詞綴插件被刪除? –
@ jamie如果詞綴被放棄我們如何能像詞綴那樣做事? –