Bootstrap 3 "btn-group" неадаптивное поведение на небольших экранах



Существует ли способ bootstrap 3 для обработки небольших размеров экрана для "btn-group"?



Группа кнопок помещается в <td> и оборачивается в <div class="btn-group">:



btn-group



Выглядит нормально, пока вы не измените его размер до


Введите описание изображения здесь



Как сделать их стойкими? Я попытался добавить класс btn-group-justified. Но это дает в результате кнопки полной ширины и выглядит еще хуже при перенастройке до небольшого размера экрана.



P. S> у меня есть идея, как ее реализовать добавив полный набор кастомов занятия. Мой вопрос касается Bootstrap 3 way. Может быть, я что-то упустил.

570   8  

8 ответов:

Я хочу предложить вам версию с иконами из FontAwesome. При минимальном разрешении экрана текст скрывают, оставляя только значки.

Извините за мой английский.

<div class="btn-group">
    <button class="btn btn-default" title="View"><i class="fa fa-eye"></i><span class="hidden-xs"> View</span></button>
    <button class="btn btn-default" title="Delete"><i class="fa fa-times"></i><span class="hidden-xs"> Delete</span></button>
</div>  

Обновление по Вишал Кумар: Добавить технологии glyphicons предварительный просмотр

Проверьте эту скрипку: http://jsfiddle.net/Jeen/w33GD/4/

Вы можете создать две группы кнопок с одинаковыми кнопками и сделать одну из них btn-group-vertical. Затем после применения hidden-xs и visible-xs к ним вы можете скрыть и показать вертикальную группу на соответствующем размере экрана.

<div class="btn-group hidden-xs">
    <button class="btn btn-default">View</button>
    <button class="btn btn-default">Delete</button>
</div>
<div class="btn-group-vertical visible-xs">
    <button class="btn btn-default">View</button>
    <button class="btn btn-default">Delete</button>
</div>

К сожалению, это требование повторяет разметку кнопок, но это не должно быть проблемой, если вы используете любой инструмент создания шаблонов (определите разметку один раз и включите ее дважды).

Широкий экран:

Широкие экранные кнопки

Узкий экран:

Узкие экранные кнопки

См. JSFiddle .

Вот альтернатива ответу @fracz, который вы можете попробовать, который не будет дублировать HTML-контент. Просто скопировал css из btn-vertical-group и btn-group и использовал медиа-запрос.

Все, что вам нужно сделать, это добавить btn-toolbar-responsive к классам панели инструментов div.

Он находится в scss для простоты, хотя вы можете легко конвертировать его в интернете. Вот JS Bin: демо

SCSS:

.btn-toolbar.btn-toolbar-responsive{
  text-align: center;
  margin: 0;
  .btn-group{
    float: none;
  }

  @media (max-width: 767px){
    .btn + .btn,
    .btn + .btn-group,
    .btn-group + .btn,
    .btn-group + .btn-group {
      margin-top: -1px;
      margin-left: 0;
    }


    .btn-group{
      position: relative;
      display: block;
      vertical-align: middle;
      margin: 0;
      .btn {
        display: block;
        float: none;
        max-width: 100%;

      }
      .btn:not(:first-child):not(:last-child) {
        border-radius: 0;
      }
      .btn:first-child:not(:last-child) {
        border-top-right-radius: 4px;
        border-top-left-radius: 4px;
        border-bottom-right-radius: 0;
        border-bottom-left-radius: 0;
      }
      .btn:last-child:not(:first-child) {
        border-top-right-radius: 0;
        border-top-left-radius: 0;
        border-bottom-right-radius: 4px;
        border-bottom-left-radius: 4px;
      }

    }
    .btn-group:not(:first-child):not(:last-child) {
      .btn {
        border-radius: 0;
      }
    }

    .btn-group:first-child:not(:last-child) {
      .btn:last-child, .dropdown-toggle {
        border-bottom-right-radius: 0;
        border-bottom-left-radius: 0;
      }
    }

    .btn-group:last-child:not(:first-child) {
      .btn:first-child {
        border-top-right-radius: 0;
        border-top-left-radius: 0;
      }
    }
  }

}

Хорошо, это сработало на тестовой странице, которую я сделал:

<div class='btn-group'>
    <button class='btn btn-default col-xs-6'>View</button>
    <button class='btn btn-default col-xs-6'>Delete</button>
</div>

Заставляя каждую кнопку быть на 50% с помощью col-xs-6, я не смог обернуть ее в мою собственную тестовую страницу, смоделированную по вашему примеру. Однако, если у вас более широкая таблица, чем в Примере, и вы сжимаетесь до 320px, текст будет переполнять кнопки, и это выглядит еще хуже, чем ваш плохой пример.

Возможно, вы уже знаете об этом, и это может быть непрактично для вашей ситуации, поэтому я извиняюсь, если просто привожу бесполезные примеры. Однако, если ваша таблица намного шире, чем то, что вы опубликовали в качестве примера, я бы предложил сделать ваши строки с использованием сетки BS вместо таблицы. Это позволяет превратить одну строку в две, когда страница сжимается, например
<div class='row'>
    <div class='col-xs-12 col-sm-6'>Some additional details</div>
    <div class='col-xs-6 col-sm-3'>Date</div>
    <div class='col-xs-6 col-sm-3'>
        <div class='btn-group'>
            <button class='btn btn-default col-xs-6'>View</button>
            <button class='btn btn-default col-xs-6'>Delete</button>
        </div>
    </div>
</div>
Затем просто найдите способ чередовать цвета, добавлять границы или все, что вам нужно, чтобы показать разделение между несколькими рядами строк.

В сапоге, который я только что сделал, как я уже сказал, кнопки начинают перекрываться при очень малых размерах, но они не оборачиваются, когда внутри <td> в моих тестах браузера:

Http://www.bootply.com/117330

Попробуйте установить min-width на <td>

<td style="min-width: 90px">
    <div class="btn-group">
        <button class=" btn btn-default btn-circle" type="button">
            <i class="fa fa-check"></i>
        </button>
        <button class=" btn btn-default btn-circle" type="button">
            <i class="fa fa-question"></i>
        </button>
        <button class=" btn btn-default btn-circle" type="button">
            <i class="fa fa-times"></i>
        </button>
    </div>
</td>
<div id="secondNav" class="btn-group" role="group">
    <button class='btn btn-default'>View</button>
    <button class='btn btn-default'>Delete</button>
</div>

Вы можете сделать это с помощью простого jQuery

<script>
$(window).resize(function() {
    justifyBtnGroup('secondNav');
});

function justifyBtnGroup(id) {
    var btnGroup = $('#' + id);
    if($(window).width() > 768) {
        btnGroup.addClass('btn-group').removeClass('btn-group-vertical');
    } else {
        btnGroup.removeClass('btn-group').addClass('btn-group-vertical');
    }
}
justifyBtnGroup('secondNav'); // will run when page loads
</script>

Нет, если вы открываете страницу на маленьком экране, bootstrap wrap Вам кнопки.

<div class="btn-group btn-group-lg">...</div>
<div class="btn-group">...</div>
<div class="btn-group btn-group-sm">...</div>
<div class="btn-group btn-group-xs">...</div>

Вы можете добавить класс (btn-group-xs, btn-group-sm) в носитель

Надеюсь, что это поможет вам ;)

Comments

    Ничего не найдено.