как выровнять по горизонтали bootstrap flex-элементов в различных div-контейнерах - PullRequest
1 голос
/ 18 января 2020

Мне было интересно, существует ли эффективный способ выравнивания флекс-элементов в разных (!) div флекс-контейнерах, чтобы у флекс-элементов была такая же ширина, как показано ниже:

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>

<div class="d-flex alert p-0 mb-2">
  <div class="p-1 bg-primary" style="width: 130px">short</div>
  <div class="p-1 bg-secondary" style="width: 110px">mediuuum</div>
  <div class="p-1 bg-info" style="width: 80px">loooooong</div>
</div>
<div class="d-flex alert p-0 mb-2">
  <div class="p-1 bg-primary" style="width: 130px">looooooooooong</div>
  <div class="p-1 bg-secondary" style="width: 110px">short</div>
  <div class="p-1 bg-info" style="width: 80px">mediuuum</div>
</div>
<div class="d-flex alert p-0 mb-2">
  <div class="p-1 bg-primary" style="width: 130px">mediuuum</div>
  <div class="p-1 bg-secondary" style="width: 110px">looooooooong</div>
  <div class="p-1 bg-info" style="width: 80px">short</div>
</div>

примечания:

  • Я должен отобразить flex div (которые являются bootstrap оповещениями) в al oop, 1 на 1 (поэтому только в конце ясно, какую ширину применять для горизонтального выравнивания столбцов)
  • это упрощенный пример. на самом деле гибкие элементы имеют разную длину ...

вот как гибкие элементы будут отображаться без вычисления пользовательской ширины:

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>

<div class="d-flex alert p-0 mb-2">
  <div class="p-1 bg-primary">short</div>
  <div class="p-1 bg-secondary">mediuuum</div>
  <div class="p-1 bg-info">loooooong</div>
</div>
<div class="d-flex alert p-0 mb-2">
  <div class="p-1 bg-primary">looooooooooong</div>
  <div class="p-1 bg-secondary">short</div>
  <div class="p-1 bg-info">mediuuum</div>
</div>
<div class="d-flex alert p-0 mb-2">
  <div class="p-1 bg-primary">mediuuum</div>
  <div class="p-1 bg-secondary">looooooooong</div>
  <div class="p-1 bg-info">short</div>
</div>

может быть, есть функциональность "из коробки", которая обрабатывает это менее "хакерским" способом?

1 Ответ

0 голосов
/ 18 января 2020

Это макет таблицы, а не флексбокс:

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>

<div class="d-table">
<div class="d-table-row">
  <div class="d-table-cell p-1 bg-primary ">short</div>
  <div class="d-table-cell p-1 bg-secondary">mediuuum</div>
  <div class="d-table-cell p-1 bg-info">loooooong</div>
</div>
<div class="d-table-row">
  <div class="d-table-cell p-1 bg-primary">looooooooooong</div>
  <div class="d-table-cell p-1 bg-secondary">short</div>
  <div class="d-table-cell p-1 bg-info">mediuuum</div>
</div>
<div class="d-table-row">
  <div class="d-table-cell p-1 bg-primary">mediuuum</div>
  <div class="d-table-cell p-1 bg-secondary">looooooooong</div>
  <div class="d-table-cell p-1 bg-info">short</div>
</div>
</div>
...