Bootstrap 3 вытягивает правый класс из толчка - PullRequest
0 голосов
/ 27 апреля 2018

Я столкнулся с проблемой макета в Bootstrap 3 и мог бы использовать небольшую помощь.

В моей строке три столбца: [col-xs-1] [col-xs-10] [col-xs-1]

В каждом col-xs-1 есть кнопка действия, использующая великолепный значок шрифта и класс кнопки btn-link. (удалить слева, сохранить справа)

Я не могу понять, почему - особенно , когда область просмотра уменьшена до размера col-xs-* - что крайний правый столбец с моей кнопкой сохранения выталкивается за ряд. Я пытался играть с отступами и полями, но не повезло.

Как мне предотвратить это?

JSFiddle demo

Извиняюсь, если это дурак - я искал и не видел ничего похожего, но уже поздно и я устал.

РЕДАКТИРОВАТЬ: Благодаря Чандракант Deore, вот окончательная рабочая версия 1026 *. Ценить это!

Ответы [ 5 ]

0 голосов
/ 27 апреля 2018

padding:0px для ваших кнопок и добавьте ваши кнопки в row

.btn {
  padding: 0px !important;
}

.vertical-center {
  display: inline-flex;
  min-height: 100%;
  min-height: 250px;
}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" />
<div class="container">
  <div class="row">
    <div class="col-xs-1">
      <div class="row">
        <button class="btn btn-link vertical-center">
          <i class="fa fa-2x fa-trash text-red"></i>
        </button>
      </div>
    </div>

    <div class="col-xs-10">
      <div class="row">
        <div class="col-lg-8 no-padding">
          <label>Some input</label><br>
          <input class="form-control no-padding">
        </div>
        <div class="col-xs-4">
          <label>And</label><br>
          <input type="number" class="form-control">
        </div>
        <div class="col-xs-8">
          <label>More Input</label><br>
          <input class="form-control">
        </div>
        <div class="col-lg-8 no-padding">
          <label>Some input</label><br>
          <input class="form-control no-padding">
        </div>
        <div class="col-xs-4">
          <label>And</label><br>
          <input type="number" class="form-control">
        </div>
        <div class="col-xs-8">
          <label>More Input</label><br>
          <input class="form-control">
        </div>
      </div>
    </div>

    <div class="col-xs-1">
      <div class="row">
        <button class="btn btn-link vertical-center" data-ember-action="1284">
          <i class="fa fa-2x fa-check text-green"></i>
        </button>
      </div>
    </div>
  </div>
</div>
0 голосов
/ 27 апреля 2018

Добавьте правильный контейнер / контейнер-жидкость класс и ряд класс. Когда вы вкладываете столбцы в столбец, добавьте div с row class.

Заполнение вашей кнопки создает проблему, поскольку оно занимает некоторое пространство и сворачивается в маленьком окне просмотра.

Попробуйте использовать col-xs-2, если с вашим требованием нет проблем.

Я внес изменения в ваш код, используя css и mediaqueries. Это поможет вам

JSfiddle Полное решение

<div class="container">

<div class="row">
      <div class="col-xs-1 vertical-center col-padding-left5">
        <button class="btn btn-link padding0 ">
          <i class="fa fa-2x fa-trash text-red small-font"></i>
        </button>
      </div>
      
      <div class="col-xs-10">
        
        <div class="row">
          <div class="col-lg-8 no-padding">
            <label>Some input</label><br>
            <input class="form-control no-padding">
          </div>
          <div class="col-xs-4">
            <label>And</label><br>
            <input type="number" class="form-control">
          </div>
          <div class="col-xs-8">
            <label>More Input</label><br>
            <input class="form-control">
          </div>
          <div class="col-lg-8 no-padding">
            <label>Some input</label><br>
            <input class="form-control no-padding">
          </div>
          <div class="col-xs-4">
            <label>And</label><br>
            <input type="number" class="form-control">
          </div>
          <div class="col-xs-8">
            <label>More Input</label><br>
            <input class="form-control">
          </div>
        </div>
        
      </div>
        
      <div class="col-xs-1 vertical-center col-padding-right5">
        <button class="btn btn-link padding0 " data-ember-action="1284">
          <i class="fa fa-2x fa-check text-green small-font"></i>
        </button>
      </div>
    </div>
</div>
0 голосов
/ 27 апреля 2018
  • Вы сталкиваетесь с проблемами в основном из-за неправильной семантики используемой вами сетки Bootstrap. Найдите ниже исправленный код, это точно поможет.

<!DOCTYPE html>
<html>

<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <meta name="author" content="Akash Kumar">
  <meta name="url" content="http://akashshivanand.com">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" type="text/css" href="https://stackpath.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <link rel="stylesheet" type="text/css" href="https://stackpath.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css">
  <style type="text/css">
    .vertical-center {
      display: inline-flex;
      min-height: 100%;
      min-height: 250px;
    }
  </style>
  <title>Bootstrap Grid</title>
</head>

<body>
  <div class="container">
    <div class="row">
      <div class="col-xs-2 vertical-center">
        <button class="btn btn-link">
          <i class="fa fa-2x fa-trash text-red"></i>
        </button>
      </div>
      <div class="col-xs-8">
        <div class="row">
          <div class="col-lg-8 col-xs-8 no-padding">
            <label>Some input</label><br>
            <input class="form-control no-padding">
          </div>
          <div class="col-xs-4">
            <label>And</label><br>
            <input type="number" class="form-control">
          </div>
          <div class="col-xs-8">
            <label>More Input</label><br>
            <input class="form-control">
          </div>
          <div class="col-lg-8 col-xs-8 no-padding">
            <label>Some input</label><br>
            <input class="form-control no-padding">
          </div>
          <div class="col-xs-4">
            <label>And</label><br>
            <input type="number" class="form-control">
          </div>
          <div class="col-xs-8">
            <label>More Input</label><br>
            <input class="form-control">
          </div>
        </div>
      </div>
      <div class="col-xs-2 vertical-center">
        <button class="btn btn-link" data-ember-action="1284">
          <i class="fa fa-2x fa-check text-green"></i>
        </button>
      </div>
    </div>
  </div>
</body>

</html>
  • Поскольку вы используете fa-2x, я бы предложил использовать col-xs-2 вместо col-xs-1, поскольку последним будет трудно разместить значки в уменьшенных версиях экранов xs.
0 голосов
/ 27 апреля 2018

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

Например, в вашем случае, если размер строки равен 300px, размер столбца идеально должен быть:

  • col-xs-1 = 25px (т.е. 300px * 8,33333333%)
  • col-xs-10 = 250px (т. Е. 300px * 83,3333333%)
  • col-xs-1 = 25px (т. Е. 300px * 8,33333333%)

А общая ширина будет в идеале будет 300px
НО, поскольку минимальная ширина столбца равна 30px (как padding-left: 15px; padding-right: 15px), следовательно, общая ширина составляет 310px, и поэтому ваш последний столбец попадает в следующую строку

0 голосов
/ 27 апреля 2018

Одной из ошибок является то, что вы не добавляете контейнер с жидкостью вокруг вашего ряда. Также на маленьких экранах вы не переносите свой контент (так как вы используете классы col-xs- *), из-за которого ширина, доступная на небольших устройствах, не может отображать данные внутри него, и, следовательно, ваши данные (значки) переполняются .

Добавьте container-fluid div вокруг строки и уменьшите размер значков на маленьких экранах

Попробуйте этот CSS

.vertical-center {
    display: inline-flex;
    min-height: 100%;
    min-height: 250px;
}
@media only screen and (max-width: 600px) {
.col-xs-1 .btn.btn-link {
  padding: 0;
}
.col-xs-1 .btn.btn-link i {
  font-size: 1em;
}
}
...