Выровненный столбец Bootstrap4 - PullRequest
0 голосов
/ 08 мая 2020

Моя цель - получить страницу с несколькими строками. Каждая строка имеет столбец меток, столбец управления и дополнительный столбец единиц измерения. Я хотел бы, чтобы столбец меток был одинаковым для каждой строки, соответствующей большей метке. Я использую Bootstrap 4, чтобы облегчить мои немногочисленные знания html. Я уже провел несколько экспериментов, возможно, я нахожусь на неправильном пути, используя классы row и col.

  • Я могу выровнять столбцы, делая это, но затем, когда я изменяю размер окна браузера, все столбцы уменьшаться, даже если справа много белого пространства

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <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://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous">
    </script>
    
    <div class="container-fluid">
      <div class="row">
        <div class="col-sm-1">
          Label
        </div>
        <div class="col-sm-1">
          <input type="number" class="form-control">
        </div>
        <div class="col-sm-1">
          min
        </div>
      </div>
      <div class="row">
        <div class="col-sm-1">
          Longer Label
        </div>
        <div class="col-sm-1">
          <button type="button" class="btn btn-primary">Primary</button>
        </div>
        <div class="col-sm-1">
        </div>
      </div>
    </div>
  • Я могу сделать это с помощью фиксированных столбцов. Теперь размер столбцов не изменяется, но все столбцы меток имеют собственную ширину и не выровнены.

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<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://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous">
</script>

<div class="container-fluid">
  <div class="row">
    <div class="col-auto">
      Label
    </div>
    <div class="col-auto">
      <input type="number" class="form-control">
    </div>
    <div class="col-auto">
      min
    </div>
  </div>
  <div class="row">
    <div class="col-auto">
      Longer Label
    </div>
    <div class="col-auto">
      <button type="button" class="btn btn-primary">Primary</button>
    </div>
    <div class="col-auto">
    </div>
  </div>
</div>

На этом этапе я бы предложил использовать jquery, чтобы установить для всех первых столбцов одинаковый размер, но я не уверен, что это хороший / лучший подход.

1 Ответ

2 голосов
/ 08 мая 2020

Использование jquery для такого макета было бы неправильным использованием. Всегда используйте CSS для макетов, если нет очень уникального варианта использования.

Это идеальный вариант использования CSS flexbox. Bootstrap - это здорово, но изучение CSS flexbox даст вам гораздо больше контроля над макетами.

Создайте гибкую строку, а затем используйте flex: 1 и максимальную ширину на этикетке.

https://codesandbox.io/s/brave-morning-d3nhz

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