flex-box с box-sizing: border-box не работает, потому что граница (очевидно)

Я пытаюсь создать таблицу с нуля с помощью flexbox и хочу реализовать rowspan и colspan со свойством flex. Но это не работает, я потому, что граница, даже когда установлена ​​граница

Мой результат:

введите здесь описание изображения

/* Styles go here */

*{
  box-sizing: border-box;
}

.table{
  display: flex;
  flex-direction: column;
  width: 100%;
}
.table > caption{
  align-self: flex-end;
}
.row, .header{
  display: flex;
  flex-direction: row;
  width: 100%;
  flex: 1;
}

.header{
  font-weight: bold;

}

.header > .col{
  justify-content: center;
}

.col{
  display: flex;
  width: 100%;
  border: 1px solid black;
  flex: 1;
}

.row > .col{
  justify-content: flex-end;
}
    <div class="table">
  <caption>Im a title</caption>
  <div class="header">
    <div class="col">Number 1</div>
    <div class="col">Number 2</div>
    <div class="col">Number 3</div>
  </div>
  <div class="row">
    <div class="col" style="flex:2;">1</div>
    <div class="col" style="flex:0.5;">2</div>
    <div class="col" style="flex:0.5;">3</div>
  </div>

  <div class="row">
    <div class="col">Yep should be</div>
    <div class="col">5</div>
    <div class="col">6</div>
  </div>

  <div class="row">
    <div class="col">7</div>
    <div class="col">this is a different</div>
    <div class="col">9</div>
  </div>
</div>

Ответ на мою проблему

Я видел этот вопрос и этот (и многие другие), но это не совсем моя проблема. (На всякий случай это компонент на angular не имеет значения, но может).


person Me the scripter    schedule 10.08.2017    source источник
comment
почему вы не используете тег таблицы?   -  person kyun    schedule 10.08.2017
comment
@YoungKyunJin У меня проблемы со стилем с angular, stackoverflow.com/questions/45595659/   -  person Me the scripter    schedule 10.08.2017
comment
‹div class=col style=flex:2;›1‹/div› ‹div class=col style=flex:0.49;›2‹/div› ‹div class=col style=flex:0.495;›3‹/div ›   -  person Vega    schedule 10.08.2017
comment
@Vega, такого не должно быть. Если у item1 flex:2, а у остальных flex:1. Он должен распределяться пропорционально. Зарубить могу и под конкретный случай, но если граница изменится. Взлом сломается. Итак, я попробовал бордербокс, но, похоже, он не работает. По крайней мере в хроме.   -  person Me the scripter    schedule 10.08.2017
comment
@Vega при редактировании имел пробел впереди. Исправлено сейчас   -  person Me the scripter    schedule 10.08.2017
comment
:border-box не поможет, это для отдельных ячеек, а не для строки, и я совершенно уверен, что у вас нет другого решения, кроме как установить поле для исправления ширины границы   -  person Vega    schedule 10.08.2017
comment
Проблема в том, что вы используете flex-grow. Вам нужно использовать flex-basis. plnkr.co/edit/okYkmEbGoRSDrwLXs3QR?p=preview   -  person Michael Benjamin    schedule 10.08.2017
comment
@Michael_B Я считаю, что это не та же проблема, я бы не стал отмечать как дубликат. Потому что, если вы посмотрите на ответ с большим количеством голосов и полный ответ, вы предположите, что если маржа равна 0, это решит проблему. Что-то здесь не так. Вы можете попробовать в plnkr. А что касается вашего plnkr, значения должны быть 66,7 и 16,65 для остальных. Потому что сумма должна быть 100%. Измените плнкр. в любом случае я считаю, что должно существовать лучшее решение (ширина может сделать то же самое исправление)   -  person titusfx    schedule 11.08.2017


Ответы (1)


.col{
 ...
       margin: 0 -2px -2px 0;
...
}

Где 2px — это двойная ширина вашей границы. Планкер

person Vega    schedule 10.08.2017