Можно ли сделать такой результат сетки, используя flex? - PullRequest
1 голос
/ 26 февраля 2020

Как я могу воспроизвести эту сетку, которая имеет одинаковую ширину и высоту, используя только классы flex?

enter image description here

<div class="row">
    <div class="col-md-3">Test1</div>
    <div class="col-md-3">Test1</div>
    <div class="col-md-3">Test1</div>
    <div class="col-md-3">Test1</div>
</div>

Когда я пытался следовать гибкая документация, я закончил с этим:

enter image description here

<div class="d-flex flex-row flex-wrap">
   <div class="p-2">Google</div>
   <div class="p-2">Apple</div>
   ...
</div>

Простой пример того, чего я хочу достичь, во-первых, это то, что я мог бы сделать с bootstrap сетка, а вторая - это то, что я мог бы сделать, но без равной ширины и высоты

<!doctype html>
<html lang="en">

<head>
  <!-- Required meta tags -->
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

  <!-- Bootstrap CSS -->
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">

  <style></style>

</head>

<body>
  <div class="row">
    <div style="background-color: red" class="col">Google</div>
    <div style="background-color: white" class="col">Apple</div>
    <div style="background-color: red" class="col">Goldman Sachs</div>
    <div style="background-color: white" class="col">Test1</div>
  </div>
  <br>
  <br>
  
  <div class="d-flex flex-row flex-wrap">
    <div style="background-color: red" class="p-2 flex-shrink-0">Google</div>
    <div style="background-color: white" class="p-2 flex-shrink-0">Apple</div>
    <div style="background-color: red" class="p-2 flex-shrink-0">Goldman Sachs</div>
    <div style="background-color: white" class="p-2 flex-shrink-0">Test1</div>
  </div>

  <!-- Optional JavaScript -->
  <!-- jQuery first, then Popper.js, then Bootstrap JS -->
  <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>
</body>

</html>

1 Ответ

2 голосов
/ 26 февраля 2020

Чтобы иметь четыре дочерних элемента одинакового размера в упаковочном гибком контейнере, вы должны применить
flex-shrink: 0; flex-grow: 0; flex-basis: 25% к каждому дочернему элементу. Или в сокращенном виде:

flex: 0 0 25%;

Рекомендуемое руководство: Полное руководство по Flexbox .

...