css - flex 盒盒尺寸 : border-box not working

标签 css flexbox border-box box-sizing

<分区>

正如标题所说:

.cnr{
  display: flex;
  height: 100%;
  background-color: grey;
  position: absolute;
  border: 1px red solid;
}
.cnr > div{
  box-sizing: border-box;
  padding: 1em;
  border: 1em solid;
  overflow: hidden;
}
.cnr > .closed{
  width: 0;
  flex-basis: 0;
  flex-shrink: 1;
  flex-grow:   0;
  min-width:   0;
  min-height:  0;
}
<div class="cnr">
  <div>
    open
  </div><div class="closed">
    closed
  </div>
</div>

由于填充和边框,无法使用 width: 0 关闭第二个 div。

做什么?

我不知道我可以添加更多详细信息。它是一个设置为 display: flex 的容器。每个 flex 元素都有边框和填充以及一些(文本)内容。总共有2个。然后其中一些将使用宽度关闭:0,并关闭边框和填充。 box-sizing: border-box 被使用。

但它不起作用。谢谢。

编辑:好的,抱歉没有解释清楚,但宽度需要动画,这就是为什么在播放动画时需要填充的原因,如果可能的话,我不想对填充进行动画处理。

最佳答案

你可以使用:not:

.cnr>div{
  box-sizing: border-box;
  overflow: hidden;
}

.cnr>div:not(.closed) {
  border: 1em solid;
  padding: 1em;
}

$('.cnr').on('click', function(){
  $(this).find('div').toggleClass('closed');
})
.cnr {
  display: flex;
  height: 100%;
  background-color: grey;
  position: absolute;
  border: 1px red solid;
}

.cnr>div{
  box-sizing: border-box;
  overflow: hidden;
}

.cnr>div:not(.closed) {
  border: 1em solid;
  padding: 1em;
}

.cnr>.closed {
  width: 0;
  flex-basis: 0;
  flex-shrink: 1;
  flex-grow: 0;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="cnr">
  <div>
    open
  </div>
  <div class="closed">
    closed
  </div>
</div>

关于css - flex 盒盒尺寸 : border-box not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44169808/

相关文章:

html - CSS3 灵活框布局和溢出 : auto;

css - 使用 box-sizing : border-box 在布局中仍然缺少 2px

javascript - 移动设备上的 HTML/CSS 列表框

css - 将输入字段对齐在 rails 中的同一行

css - 显示:box and display:flexbox有什么区别

internet-explorer - IE 9 中 box-sizing border-box 和 min-width 的问题

css - 具有最小高度和边框框的 IE8 布局

html - 如何在 <button> 标签中垂直居中 <i> 标签?

html - 需要帮助解决一个奇怪的 CSS 问题

html - 如何在不影响flex items元素对齐的情况下减小最后一行的背景色宽度?