3

box-sizing: border-box;それで、フレックスボックスがCSS宣言を尊重しないという難しい方法を見つけました。罰金。しかし、フレックスボックス レイアウトを使用してその機能を取得する方法はありますか?

この JS Fiddleをチェックしてください。3 つの行があり、各行に 3 つのボックスがあります。すべてのボックスを同じサイズにしたいのですが。中央の行の中央のボックスには、マージンとボーダーのプロパティがいくつかあり、大きくなっています。ボックス モデルでは、これを で解決しbox-sizing: border-boxます。フレックスボックスモデルに相当するものはありますか?

ライブデモ:

$(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 に答える