Загрузить Bootstrap 3.0 с шириной списка
Я переношу на bootstrap 3.0.0, и у меня проблемы с прикрепленным меню слева: как только он будет прикреплен (после прокрутки 10px), его ширина изменяется. В эта скрипка становится меньше, на моем реальном сайте она расширяется и расширяется по фактическому контенту.
Он отлично работал с bootstrap v2.3.2. После проверки это выглядит так, что элементы списка плохо воспроизводятся с отображаемым .affix {position: fixed;}
.
Любые идеи?
РЕШЕНИЕ: на основе последних комментариев я наконец добавил эту часть JS, которая исправляет ее, не устанавливая фиксированную ширину прикрепленного элемента:
$(function() {
var $affixElement = $('div[data-spy="affix"]');
$affixElement.width($affixElement.parent().width());
});
Ответы
Ответ 1
У меня была такая же проблема и исправлено с этим:
$(window).resize(function () {
$('#category-nav.affix').width($('#content').width());
});
в основном в случае изменения размера. Я вычисляю ширину div содержимого и устанавливаю для этого ширину прикрепленного элемента.
Ответ 2
$(window).scroll(function () {
$('#secondary .widget-area.affix').width($('#secondary').width());
});
Ответ 3
Здесь другая версия:
$('.sitebar .affix-top').width($('.sitebar .affix-top').width());
$(window).resize(function () {
$('.sitebar .affix').width($('.sitebar .affix-top').width());
});
$(window).scroll(function () {
$('.sitebar .affix').width($('.sitebar .affix-top').width());
});
Ответ 4
Здесь моя версия.
var fixAffixWidth = function() {
$('[data-spy="affix"]').each(function() {
$(this).width( $(this).parent().width() );
});
}
fixAffixWidth();
$(window).resize(fixAffixWidth);
CSS
div.affix {
position: fixed !important;
}
Ответ 5
была одна и та же проблема (только в BS 2.3.2).
Не ответ, больше hack. Я дал прикрепленному элементу ширину. Это сосало, потому что мне нужно было установить ширину для всех разрешений (RWD), и на самом деле значение должно быть стандартной шириной столбца (например .span4).
Да: position: fixed
выводит элемент из заданного контекста (в вашем случае col-md-3
).
Ответ 6
Я использую этот код, чтобы исправить ширину аффикса.
$(document).on('affixed.bs.affix',function(e){
$('.affix').each(function(){
var elem = $(this);
var parentPanel = $(elem).parent();
var resizeFn = function () {
var parentAffixWidth = $(parentPanel).width();
elem.width(parentAffixWidth);
};
resizeFn();
//$(window).resize(resizeFn);
});
});
Аффикс получает ширину своего родителя и проверяет эту ширину на каждом прокрутке веб-страницы. Раскомментируя последнюю строку, выполните также событие изменения размера окна.
Ответ 7
Я использовал $('.affix-element').width($('.affix-element-parent').width()).affix()
Хорошо работает:)
Ответ 8
Мое решение:
$('.menu-card').affix();
$(document).on('affix.bs.affix', '.menu-card', function() {
$(this).width($(this).width());
});
(. menu-card - мой липкий div)
Я добавил это для поддержки изменения размера окна:
Предположим, что аффикс находится в родительском div # menu-card-pane.
$(window).resize(function () {
var parentSize = $('#menu-card-pane').width();
$('.affix').each(function() {
var affixPadding = $(this).innerWidth() - $(this).width();
$(this).width(parentSize - affixPadding);
});
});
Ответ 9
Вот мой HTML
<div class="sidebar-nav">
<div class="navbar navbar-default" role="navigation">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#committees-navbar">
<span class="sr-only"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<span class="visible-xs navbar-brand">Committees</span>
</div>
<div id="committees-navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav nav-stacked" data-spy="affix" data-offset-top="250">
<li class="col-xs-12"><a ng-click="scrollTo('boardCommittee')">BOARD OF DIRECTORS</a></li>
<li class="col-xs-12"><a ng-click="scrollTo('madrasaCommittee')">MADRASATUL JAMALIYAH</a></li>
<li class="col-xs-12"><a ng-click="scrollTo('shababCommittee')">SHABAB</a></li>
<li class="col-xs-12"><a ng-click="scrollTo('bwaCommittee')">BURHANI WOMEN</a></li>
<li class="col-xs-12"><a ng-click="scrollTo('tncCommittee')">TAISEER UN NIKAH</a></li>
<li class="col-xs-12"><a ng-click="scrollTo('fmbCommittee')">FAIZUL MAWAIDUL BURHANIYAH</a></li>
<li class="col-xs-12"><a ng-click="scrollTo('websiteCommittee')">WEBSITE</a></li>
<li class="col-xs-12"><a ng-click="scrollTo('tadfeenCommittee')">TADFEEN</a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
И это мое исправление JS
$(function () {
var resize = function () {
var sidebarNav = $(".sidebar-nav");
var sidebarNavAffix = $(".sidebar-nav .affix");
if (sidebarNavAffix.length && (sidebarNavAffix.width() !== sidebarNav.width())) {
sidebarNavAffix.width(sidebarNav.width());
}
}
$(window).on({"scroll" : resize, "resize" : resize});
});