css - Bootstrap 4 Flexbox 侧边栏在使用位置 :fixed 时变薄

标签 css twitter-bootstrap flexbox css-position

我正在使用 Bootstrap 4 中的网格系统和 Flexbox 实用程序构建侧边栏。在大多数情况下,我让它工作,除了我想让侧边栏是“静态的”,也就是说,当用户在它旁边的页面上滚动时它不应该移动。

我试图通过添加 position:fixed 来做到这一点,但是当我这样做时,侧边栏所在的列的大小减小到那里最长字符串的长度。

如何使侧边栏保持固定,同时保持列宽?

这是我的代码:(这是一个 React 应用程序,所以“class”被替换为“className”)

父组件:

{ this.state.isLoggedIn ?
   <div className="row h-100">
      <div className="col-2 no-padding-right">
         <Sidebar />
      </div>
      <div className="col-10 no-padding-left">
         <Main />
      </div>
   </div> :
   <Main />
}

侧边栏本身:

<div className="d-flex h-100 align-items-start sidebar-left flex-column sidebar-background sidebar-text">
                <div className="p-2">
                    Week 11
                </div>
                <div className="mb-auto align-self-stretch h-100 p-2">Leagues/Teams</div>
                <div className="p-2">Current Features</div>
                <div className="p-2">Feature Request</div>
                <div className="p-2">Settings</div>
                <div className="p-2">Billing</div>
                <div className="p-2">Log Out</div>
            </div>

以及相关的 CSS 片段:

.sidebar-left {
    padding-top: 83px;
    position: fixed;
}

谢谢!

最佳答案

max-width 应用到 sidebar-left 等于你的 col 有多少。

.sidebar-left {
  max-width: 16.666667%;
}

堆栈片段

body {
  margin: 0;
}

.sidebar-left {
  font: 13px Verdana;
  padding-top: 83px;
  position: fixed;
  background: red;
  max-width: 16.666667%;
  left: 0;
  top: 0;
  overflow: auto;
}

.p-2 {
  word-break: break-word;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Zug+QiDoJOrZ5t4lssLdxGhVrurbmBWopoEl+M6BdEfwnCJZtKxi1KgxUyJq13dy" crossorigin="anonymous">
<div class="row h-100">
  <div class="col-2 no-padding-right">
    <div class="d-flex h-100 align-items-start sidebar-left flex-column sidebar-background sidebar-text">
      <div class="p-2">
        Week 11
      </div>
      <div class="mb-auto align-self-stretch h-100 p-2">Leagues/Teams</div>
      <div class="p-2">Current Features</div>
      <div class="p-2">Feature Request</div>
      <div class="p-2">Settings</div>
      <div class="p-2">Billing</div>
      <div class="p-2">Log Out</div>
    </div>
  </div>
  <div class="col-10 no-padding-left">
    <div class="main"></div>
  </div>
</div>

关于css - Bootstrap 4 Flexbox 侧边栏在使用位置 :fixed 时变薄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48274087/

相关文章:

html - Twitter Bootstrap 3 自定义单选按钮被 fastclick.js 崩溃

twitter-bootstrap - Bootstrap 模式不会阻止下面的内容

html - Flexbox - 在列中分配元素

html - 不使用 CSS float 复制 html 定位

html - 我怎样才能让 LIs 把他们的 sibling 推到同样的高度?

HtML 脚注出现在元素后面

css - 如何在 css 中将另一个背景图像添加到现有背景

javascript - 如何在网页中使用 div 模拟窗口之间的 alt-tab 键?

css - Bootstrap 3 响应式类更改显示属性

javascript - 使用 javascript 更改 flexbox 中的 CSS 样式