Кнопка Bootstrap Twitter и окно оповещения внутри сетки?

У меня есть несколько мест в моей системе, где я хотел бы показать сообщение рядом с кнопкой отправки. В зависимости от активности пользователя это сообщение обычно является общим для системы, например 'Records successfully saved' или 'Invalid access' или 'Invalid data entered in the form field'. Со стандартами сегодняшнего дня я вижу, что сообщение обычно должно отображаться рядом с кнопкой отправки. Когда я впервые попытался реализовать это в бутстрапе, у меня возникла проблема, когда высота окна предупреждения больше, чем высота кнопки отправки. Я смог решить эту проблему, перезаписав отступы в div окна предупреждения. Вот пример:

$('#frm_myform').on('click', function() {
  $('#my-message').show().addClass('alert-success').html('Record successfully saved.').delay(10000).fadeOut('slow').queue(function() {
    $(this).removeClass('alert-success').dequeue();
  });
});
.alert-Submit {
  padding: 5px 15px !important;
}
<script language="javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script language="javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

<div class="panel panel-default">
  <div class="panel-heading"><span class="glyphicon glyphicon-home"></span> <b>Home Page</b></div>
  <div class="panel-body">
    <form name="frm_myform" id="frm_myform" class="frm-Submit" autocomplete="off">
      <div class="form-group">
        <label class="control-label" for="answer">Answer</label>
        <input type="text" class="form-control" name="frm_answer" id="frm_answer">
      </div>
      <div class="row">
        <div class="col-md-1">
          <button type="submit" class="btn btn-primary">Submit</button>
        </div>
        <div class="col-md-11">
          <div id="my-message" class="alert alert-Submit"></div>
        </div>
      </div>
    </form>
  </div>
</div>

В примере вы можете видеть, что я попытался использовать две сетки, чтобы разместить кнопку отправки и окно предупреждения рядом друг с другом. Единственное, что я хотел бы изменить, это отступы между двумя сетками, когда окно предупреждения не помещается рядом с кнопкой. В примере вы можете видеть, что между ними нет пробела. На маленьком экране это кажется уродливым, и мне интересно, как лучше всего разместить немного места? Также мне интересно, есть ли лучший подход для отображения сообщения в окне предупреждения рядом с кнопкой в ​​форме начальной загрузки?


person espresso_coffee    schedule 03.04.2018    source источник


Ответы (1)


Чтобы показать предупреждение рядом с кнопкой, вы можете использовать простой CSS, чтобы выровнять их вместе:

CSS:

.align-left { float: left; }
.align-right { float: right; }

HTML:

<div class="row">
  <div class="col-md-1">
    <button type="submit" class="btn btn-primary align-left">Submit</button>
  </div>
  <div class="col-md-11">
    <div id="my-message" class="alert alert-Submit align-left"></div>
  </div>
  <div style="clear: both;"></div>
</div>

"clear: both;" должен располагаться снаружи двух выравниваемых div и внутри div, внутри которых находятся выравниваемые элементы.

С кодом align и clear вы можете размещать предметы рядом друг с другом, слева или справа от div в зависимости от вашего class. Для работы этого кода не требуется начальная загрузка.

person Jake    schedule 03.04.2018
comment
Я предполагаю, что должно быть выравнивание по левому краю для первого элемента div и выравнивание по правому краю для другого элемента. Я все еще немного путаю div со стилем clear:both. - person espresso_coffee; 03.04.2018
comment
Я не уверен, что clear действительно необходим. Можете поиграться с ним, может получится. Мой ответ что-то решил? У вас остались еще вопросы? - person Jake; 04.04.2018
comment
Я попробовал ваш пример, и окно предупреждения по-прежнему имеет большую высоту, чем кнопка. Кроме этого выглядит хорошо. - person espresso_coffee; 04.04.2018
comment
Ницца! Чтобы исправить это, вам может понадобиться использовать пользовательский CSS для настройки высоты каждого из них. Вы также можете использовать класс btn-lg, btn-sm или btn-xs для настройки размера кнопки. (в дополнение к классу btn) - person Jake; 04.04.2018
comment
Я только что обнаружил, что clear:both используется для предотвращения заполнения div-зазора между двумя выровненными элементами. (играл с моим кодом, и позиционирование было испорчено без clear div. - person Jake; 06.04.2018