【问题标题】:Bootstrap 3.0 affix with list changes width带有列表更改宽度的 Bootstrap 3.0 词缀
【发布时间】:2013-09-12 01:27:33
【问题描述】:

我正在迁移到 bootstrap 3.0.0,但左侧的附加菜单出现问题:一旦被附加(滚动 10 像素后),其宽度就会发生变化。在this fiddle 中它变得更小,在我的真实站点中它变得更宽并扩展了实际内容。

它与 bootstrap v2.3.2 完美配合。检查后,列表项似乎与出现的.affix {position: fixed;} 不兼容。

有什么想法吗?

解决方案:基于最新的 cmets,我终于添加了这个 JS 片段,它很好地修复了它,而无需为附加元素设置固定宽度:

$(function() {
    var $affixElement = $('div[data-spy="affix"]');
    $affixElement.width($affixElement.parent().width());
});

【问题讨论】:

  • 其实没有列表也一样(比如表单元素)
  • Affix width issue and some fixes 如果有人感兴趣的话。
  • @Sisir 非常酷,谢谢!我终于可以从我的代码中删除 hack 并有一个适当的解决方案(希望他们会将它添加到 v3.1)

标签: css twitter-bootstrap twitter-bootstrap-3 affix


【解决方案1】:

曾经遇到过同样的问题(仅在 BS 2.3.2 中)。

不是一个答案,更像是一个hack:我给附加的元素一个宽度。这很糟糕,因为我必须为所有分辨率(RWD)设置宽度,实际上该值应该是标准列宽(例如 .span4)。

是的:position: fixed 将元素从给定的上下文中取出(在您的情况下为 col-md-3)。

【讨论】:

  • 谢谢 - 它确实有效,但相当可怕的 hack 有很多媒体查询,使其响应式...希望 Bootstrap 在某个时候修补它!
【解决方案2】:

我遇到了同样的问题并解决了这个问题:

 $(window).resize(function () {
                $('#category-nav.affix').width($('#content').width());
            });

基本上在调整大小的情况下,我会计算内容 div 的宽度并将附加元素的宽度设置为此。

【讨论】:

  • 只有调整大小事件对我不起作用(Primefaces/Bootsfaces)。但是使用滚动事件(下面的解决方案)就可以了。
【解决方案3】:
$(window).scroll(function () {
    $('#secondary .widget-area.affix').width($('#secondary').width());
});

【讨论】:

    【解决方案4】:

    这是另一个版本:

    $('.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());
    });
    

    【讨论】:

      【解决方案5】:

      这是我的版本。

      var fixAffixWidth = function() {
        $('[data-spy="affix"]').each(function() {
          $(this).width( $(this).parent().width() );
        });
      }
      fixAffixWidth();
      $(window).resize(fixAffixWidth);
      

      CSS

      div.affix {
          position: fixed !important;
      }
      

      【讨论】:

        【解决方案6】:

        这是我的 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});
        });
        

        【讨论】:

          【解决方案7】:

          我用这段代码来固定词缀的宽度。

          $(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);
              });
          });
          

          词缀获取其父级的宽度,并在每次滚动网页时检查该宽度。取消最后一行的注释,在 resize window 事件上也执行。

          【讨论】:

            【解决方案8】:

            我用$('.affix-element').width($('.affix-element-parent').width()).affix()

            效果很好:)

            【讨论】:

              【解决方案9】:

              我的解决方案也是:

              $('.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);
                  });
              });
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2017-07-16
                • 2018-09-14
                • 1970-01-01
                • 2013-09-06
                • 2014-07-15
                相关资源
                最近更新 更多