Flexbox: строка со встроенным изгибом + фиксированная ширина элемента (исправление ошибки в Flex-основе): не работает внутри макета столбца - PullRequest
0 голосов
/ 24 августа 2018

Я хочу получить таблицу в CSS с липким заголовком (только прокрутки тела) на Y и прокруткой всей таблицы на X.

Согласно комментарию Michael_B к моему предыдущему вопросу здесь есть ошибка flexbox, и я должен использовать inline-flex в строке + width в ячейках, чтобы убедиться, что моя строка растет правильно.

Это приводит меня к такому результату:

html, body {
  width: 100%;
  min-height: 100vh;
  margin: 0;
  padding: 0;
}
body {
  display: flex;
  align-items: center;
  justify-content: center;
}

.table {
  border: solid black;
  width: 60vw;
  height: 80vh;
  overflow-x: auto;
  display: flex;
  flex-direction: column;
}

.header {
  border: solid cyan;
  flex: 0;
}

.body {
  flex: 1;
  overflow-y: auto;
  border: solid yellow;
  display: inline-block;
}

.row {
  border: solid red;
  display: inline-flex;
  flex-direction: row;
  align-items: center;
}

.cell {
  border: solid green;
  width: 400px;
  height: 50px;
}
<div class="table">
  <div class="header">
    <div class="row">
      <div class="cell">
        cell 1
      </div>
      <div class="cell">
        cell 2
      </div>
      <div class="cell">
        cell 3
      </div>
    </div>
  </div>
  <div class="body">
    <div class="row">
      <div class="cell">
        cell 1
      </div>
      <div class="cell">
        cell 2
      </div>
      <div class="cell">
        cell 3
      </div>
    </div>
    <div class="row">
      <div class="cell">
        cell 1
      </div>
      <div class="cell">
        cell 2
      </div>
      <div class="cell">
        cell 3
      </div>
    </div>
    <div class="row">
      <div class="cell">
        cell 1
      </div>
      <div class="cell">
        cell 2
      </div>
      <div class="cell">
        cell 3
      </div>
    </div>
  </div>
</div>

JsFiddle

Как видите, это не совсем то, что я хочу.Кажется, что мои строки не растут в соответствии с размером их содержимого даже при использовании inline-flex, и это происходит только при использовании макета столбца flex в таблице.

html, body {
  width: 100%;
  min-height: 100vh;
  margin: 0;
  padding: 0;
}

body {
  display: flex;
  align-items: center;
  justify-content: center;
}

.table {
  border: solid black;
  width: 60vw;
  height: 80vh;
  overflow-x: auto;
}

.header {
  border: solid cyan;
  flex: 0;
  display: inline-block;
  height: 50px;
}

.body {
  flex: 1;
  overflow-y: auto;
  border: solid yellow;
  display: inline-block;
  height: calc(100% - 50px - 16px);
}

.row {
  border: solid red;
  display: inline-flex;
  flex-direction: row;
  align-items: center;
}

.cell {
  border: solid green;
  width: 400px;
  height: 50px;
}



By removing flex column, using inline-block and calc computations, I almost get the behavior I want, except I'd like the scrollY scrollbar to always stay visible
<div class="table">
  <div class="header">
    <div class="row">
      <div class="cell">
        cell 1
      </div>
      <div class="cell">
        cell 2
      </div>
      <div class="cell">
        cell 3
      </div>
    </div>
  </div>
  <div class="body">
    <div class="row">
      <div class="cell">
        cell 1
      </div>
      <div class="cell">
        cell 2
      </div>
      <div class="cell">
        cell 3
      </div>
    </div>
    <div class="row">
      <div class="cell">
        cell 1
      </div>
      <div class="cell">
        cell 2
      </div>
      <div class="cell">
        cell 3
      </div>
    </div>
    <div class="row">
      <div class="cell">
        cell 1
      </div>
      <div class="cell">
        cell 2
      </div>
      <div class="cell">
        cell 3
      </div>
    </div>
  </div>
</div>

JsFiddle

Кто-нибудь знает, как мне добиться нужной раскладки таблицы?Я открыт для решения flexbox, но пока не хочу решения на основе JS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...