【问题标题】:DIV to take the height of its parentDIV 取其父级的高度
【发布时间】:2020-07-30 17:49:57
【问题描述】:

我有以下 HTML 可以正常工作。但我希望 div 采用选项卡的高度,而不必说它的 200px。如果我给 100% 它不起作用。请忽略 draggable 作为它的第 3 方

<b-tab title="TAB">
  <div class="table-wrapper-scroll-y custom-scrollbar">
    <table class="table table-sm table-bordered table-striped table-hover">
      <draggable :list="myLoop" :options="dragOptions" :element="'tbody'" class="rows">
        <tr class="cursor-ns-resize" v-for="(row, index) in myLoop" :key="index">
          <td>
            <b-form-checkbox type="checkbox" v-model="row.checked" />
          </td>
          <td>
            <span>{{ row.label }}</span>
          </td>
        </tr>
      </draggable>
    </table>
  </div>
</b-tab>

CSS

.custom-scrollbar {
  position: relative;
  height: 200px;
  overflow: auto;
}

.table-wrapper-scroll-y {
  display: block;
}

【问题讨论】:

标签: css vue.js


【解决方案1】:

如果您给父级 (b-tab) 弹性,那么子级 div 将继承高度(只要没有为 div 分配隐式高度)。您需要将div 设置为将flex-grow 和flex-shrink 设置为1(或将它们组合成单个flex 属性-flex: 1 1)。

为了演示目的,我为这两个元素添加了一些彩色边框:

b-tab {
  border: 1px solid red;
  height: 200px;
  display: flex;
}

.custom-scrollbar {
  position: relative;
  overflow: auto;
  border: 1px solid blue;
  flex: 1 1;
}

.table-wrapper-scroll-y {
  display: block;
}
<b-tab title="TAB">
  <div class="table-wrapper-scroll-y custom-scrollbar">
    <table class="table table-sm table-bordered table-striped table-hover">
      <draggable :list="myLoop" :options="dragOptions" :element="'tbody'" class="rows">
        <tr class="cursor-ns-resize" v-for="(row, index) in myLoop" :key="index">
          <td>
            <b-form-checkbox type="checkbox" v-model="row.checked" />
          </td>
          <td>
            <span>{{ row.label }}</span>
          </td>
        </tr>
      </draggable>
    </table>
  </div>
</b-tab>

【讨论】:

  • 我也不想在标签中指定 200px。我的表单已经有了高度。
  • b-tab 没有高度,所以我必须指定一个高度进行测试。您可以删除此属性。您需要查看的唯一属性是父级上的display:flex 和子级上的flex: 1 1。
  • 还是不行。我改变了溢出:滚动;在 div 上,但滚动条永远不会出现,标签变得非常大
  • 我认为您想在选项卡或 div 上指定一些最大高度。
  • 如果我必须给出最大高度,那么我的原始代码运行良好。谢谢
【解决方案2】:

也许你需要添加

*{//this effects every element
margin:0;
padding:0;
}

大多数浏览器在您的 CSS 中添加 x 边距和内边距

【讨论】:

    猜你喜欢
    • 2014-02-21
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 2010-11-10
    • 2019-09-09
    相关资源
    最近更新 更多