3

所以我发现了 flexbox 不尊重box-sizing: border-box;CSS 声明的艰难方式。美好的。但是有没有办法使用 flexbox 布局来获得该功能?

看看这个 JS Fiddle。我们有 3 行,每行有 3 个框。我希望所有的盒子都一样大。中间行的中间框有一些边距和边框属性,使其更大。在盒子模型中,我们会用box-sizing: border-box. flexbox 模型中是否有一些等价物?

现场演示:

$(function() {    
  for(var i = 1; i <= 3; i++) {
    $('<div class="row" id="row' + i + '">').appendTo($('#grid'));
    
    for(var j = 0; j < 3; j++) {
      if(i === 2 && j === 1) {
        $('<div class="box2">').appendTo($('#row' + i));
      } else {
        $('<div class="box">').appendTo($('#row' + i));
      }
    }
  }
});
html {
  padding: 0;
  margin: 0;
  width: 100%;
  height: 300px;
}

body {
  padding: 0;
  margin: 0;
  width: 100%;
  height: 100%;
}

#grid {
  width: 100%;
  height: 100%;
  box-sizing: border-box;
  border: 25px solid cornflowerblue;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
}

.row {
  width: 100%;
  height: auto;
  margin: 10px;
  box-sizing: border-box;
  border: 1px solid red;
  display: flex;
}

.box {
  flex-grow: 1;
  margin: 10px;
  background: pink;
}

.box2 {
  flex-grow: 1;
  margin: 10px;
  box-sizing: border-box;
  border: 25px solid purple;
  background: orange;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
  <div id="grid"></div>
</body>

4

1 回答 1

1

我认为你需要定义height才能box-sizing工作。

我添加height: 25.3%;了以下代码,这意味着(300px-25px*2-10px*6)/((300px-25px*2)*3),并且代码有效。

http://jiayuanpulto.github.io/test/test_box-sizing.html

于 2016-01-24T19:41:14.097 回答