【问题标题】:Bootstrap affix taller than content, scroll fail引导词缀高于内容,滚动失败
【发布时间】:2021-04-07 14:19:16
【问题描述】:

我遇到了this question 的作者带有词缀的相同问题,特别是作者对已接受的答案的评论。回答者提供了第二个解决方案,但这并不令人满意。

当满足以下所有条件时会出现此问题:

  1. 附加的 div 比视口高
  2. 附加的 div 是页面的最高部分
  3. 用户滚动超过 affix-top

在这个 JSFiddle 中演示:https://jsfiddle.net/g1ns9k8o/3/,代码如下:

CSS:

.top-bit { height: 100px; }
.sidebar { width: 200px; padding: 10px; }
.sidebar.affix { top: 10px; }

HTML:

<div class="top-bit">
</div>

<div class="row">
    <div class="col-xs-9">
        <!-- short content -->
    </div>
    <div class="col-xs-3">
        <div class="sidebar" data-spy="affix" data-offset-top="100">
            <!-- long content -->
        </div>
    </div>
</div>

【问题讨论】:

  • 您到底想要发生什么?这似乎是糟糕的设计。
  • 公平的问题,我希望这里表现出的行为准确:jsfiddle.net/Ja3XT/1,但它不会在上述条件下搞砸。我看不出它的设计有多糟糕,但我全神贯注。
  • 附加的重点是让重要内容始终在视口上可见和可访问。如果被附加的元素大于视口(垂直或水平),那么这会破坏附加项目的整个目的。我不是设计师,但如果 UX 对你很重要,我会在这里发布一个关于这个主题的问题 -> ux.stackexchange.com
  • 在我看来,内容的长度或视口的高度应该与网站的功能无关。
  • 每个人都有自己的 ;) 看看 Bootstrap 自己的文档。请注意附加的侧边栏在您滚动时如何展开和折叠,以避免您的确切问题。 getbootstrap.com/css

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


【解决方案1】:

我遇到了这个问题并遇到了生涩的滚动运动。为了解决这个问题,我使用 JavaScript 将附加元素的高度与它旁边的元素进行比较。如果附加高度小于内容高度,则设置附加。否则,就让附加的元素原地不动。

所以,假设它是我在内容元素旁边修复的侧边栏。

// Pseudocode
if (sidebar.height < content.height) {
    $(sidebar).affix({});
}

【讨论】:

  • 可能是唯一可行的解​​决方案。当任何一个的内容无论如何都是动态的(页面加载后)时,它会变得很尴尬。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-23
  • 1970-01-01
  • 2019-11-18
相关资源
最近更新 更多