Bootstrap 3 отзывчивый с несколькими точками останова

Я использую последнюю версию Bootstrap 3.0 RC1 и пытаюсь создать обзор изображений с отзывчивостью и несколькими точками останова, когда изображения становятся слишком маленькими (как видно на Dribbble).

Проблемы:

  1. Масштабирование изображения появляется только тогда, когда в строке их два или меньше (это также должно работать с 3-4 изображениями)
  2. Мои разрывные линии ИЛИ отзывчивость вызывают разные размеры изображения. Мне нужно убедиться, что максимальный размер изображения после разрывов совпадает с максимальным размером, когда в строке 4. Например, при разбиении на два или одно изображение изначально будет казаться намного больше, чем самый большой размер с 4 в ряду.

Я надеюсь, что кто-то может мне помочь, я новичок в создании отзывчивых вещей.

С наилучшими пожеланиями

Ссылка на jsfiddle:

http://jsfiddle.net/6dckB/ (ваш браузер должен быть широким, чтобы увидеть эффекты)

HTML:

<div class="container">
    <ul class="row-fluid">
        <li class="group">
            <div class="img-thumbnail">
                <a href="#">
                    <img src="http://placehold.it/350x150" style="width:100%;">
                </a>
            </div>
        </li>
        <li class="group">
            <div class="img-thumbnail">
                <a href="#">
                    <img src="http://placehold.it/350x150" style="width:100%;">
                </a>
            </div>
        </li>
        <li class="group">
            <div class="img-thumbnail">
                <a href="#">
                    <img src="http://placehold.it/350x150" style="width:100%;">
                </a>
            </div>
        </li>
        <li class="group">
            <div class="img-thumbnail">
                <a href="#">
                    <img src="http://placehold.it/350x150" style="width:100%;">
                </a>
            </div>
        </li>
        <li class="group">
            <div class="img-thumbnail">
                <a href="#">
                    <img src="http://placehold.it/350x150" style="width:100%;">
                </a>
            </div>
        </li>
        <li class="group">
            <div class="img-thumbnail">
                <a href="#">
                    <img src="http://placehold.it/350x150" style="width:100%;">
                </a>
            </div>
        </li>
        <li class="group">
            <div class="img-thumbnail">
                <a href="#">
                    <img src="http://placehold.it/350x150" style="width:100%;">
                </a>
            </div>
        </li>
        <li class="group">
            <div class="img-thumbnail">
                <a href="#">
                    <img src="http://placehold.it/350x150" style="width:100%;">
                </a>
            </div>
        </li>
    </ul>
</div>

CSS:

.row-fluid {
  padding-left: 0;
  list-style: none;
}
.row-fluid:before,
.row-fluid:after {
  content: " ";
  /* 1 */

  display: table;
  /* 2 */

}
.row-fluid:after {
  clear: both;
}
.row-fluid:before,
.row-fluid:after {
  content: " ";
  /* 1 */

  display: table;
  /* 2 */

}
.row-fluid:after {
  clear: both;
}
@media (min-width: 768px) {
  .row-fluid {
    margin-left: -10px;
    margin-right: -10px;
  }
}
.row-fluid .row {
  margin-left: -10px;
  margin-right: -10px;
}
.row-fluid .group {
  position: relative;
  min-height: 1px;
  padding-left: 10px;
  padding-right: 10px;
  float: left;
  width: 50%;
  margin-bottom: 20px;
}
@media (max-width: 400px) {
  .row-fluid .group {
    position: relative;
    min-height: 1px;
    padding-left: 10px;
    padding-right: 10px;
    float: left;
    width: 100%;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .row-fluid .group {
    position: relative;
    min-height: 1px;
    padding-left: 10px;
    padding-right: 10px;
    float: left;
    width: 33.33333333333333%;
  }
}
@media (min-width: 992px) {
  .row-fluid .group {
    position: relative;
    min-height: 1px;
    padding-left: 10px;
    padding-right: 10px;
    float: left;
    width: 25%;
  }
}

person charliexx    schedule 28.07.2013    source источник
comment
возможный дубликат: stackoverflow.com/questions/16879676/   -  person Bass Jobsen    schedule 07.08.2013


Ответы (3)


Не похоже, что вы используете Bootstrap 3 RC1. Ссылка в вашей скрипке не работает. Bootstrap RC1 больше не имеет .row-fluid.

Вы можете просто упростить все, позволив адаптивным функциям в 3 делать работу за вас. BS3 теперь имеет 3 размера сетки — маленькую, маленькую и большую, которые используются для управления отображением на разных устройствах/ширинах. Вы могли бы сделать что-то вроде этого..

<div class="row">
    <div class="col-lg-3 col-sm-4 col-6">
        <a href="#" class="thumbnail">
             <img src="http://placehold.it/350x150" class="img-responsive">
        </a>
    </div>
    <div class="col-lg-3 col-sm-4 col-6">
        <a href="#" class="thumbnail">
             <img src="http://placehold.it/350x150" class="img-responsive">
        </a>
    </div>

     ...
</div>

Это тебя достанет..

  • 4 в ряд на больших экранах (col-lg-3)
  • 3 в ряд на планшетах (col-sm-4)
  • 2 в ряд на "маленьких" телефонах (col-6)

Демонстрация: http://bootply.com/70929

person Zim    schedule 31.07.2013
comment
Так как релиз col-6 должен быть col-xs-6 - person Emil Ahlbäck; 11.10.2013

Просто изменил некоторые css, и это работает. См. эту скрипту: http://jsfiddle.net/J3F99/

Итак, основные изменения:

  1. box-sizing: border-box в .group, чтобы ширина% включала отступ (10 пикселей).
  2. Добавлено display: inline-block и удалено float: left в .group и text-align: center в .row-fluid, чтобы элементы .group были выровнены по центру.
  3. Добавлены max-width: 350px и max-height: 150px в .group
  4. Скорректирована % ширины для разных размеров экрана, чтобы занимать всю ширину и при этом поддерживать максимальную ширину.
  5. Убран css в медиа-запросах, удалив повторяющиеся свойства, которые уже унаследованы от общего стиля для .group для всех экранов.

Вот и все. В хроме работает хорошо. Я не тестирую в других браузерах. Используйте полную загрузку во время тестирования.

Основная проблема здесь — отступы, указанные в пикселях. Чтобы обеспечить чистую плавную компоновку, вы должны использовать % вместо пикселей. И для этого вам нужно использовать margin, а не padding для .group. Потому что маржа в % зависит от ширины контейнера.

Например, 4 элемента .group с шириной 20% и 2,5% margin-right и margin-left точно поместятся внутри контейнера (здесь .row-fluid), не пропуская ни одного пикселя.

4*20 + 4*2,5*2 = 100 %

Я рекомендую вам пойти с этим методом. См. Ответ @Bharat Parmar для этого.

person Jithesh    schedule 07.08.2013

Посмотрите эту демонстрацию: http://depotwebdesigner.com/responsive/

HTML:

<div class="navbar navbar-inverse navbar-fixed-top">
  <div class="container">
    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".nav-collapse">
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
    </button>
    <a class="navbar-brand" href="#">Responsive Image</a>
    <div class="nav-collapse collapse">
      <ul class="nav navbar-nav">
        <li class="active"><a href="#">Home</a></li>
        <li><a href="#about">About</a></li>
        <li><a href="#contact">Contact</a></li>
      </ul>
    </div>
  </div>
</div>

<!-- Responsive Image -->
<div class="container">
  <div class="starter-template">
    <ul>
      <li><img src="http://dribbble.s3.amazonaws.com/users/31348/screenshots/1185698/slightly_stoopid_teaser.jpg" alt=""></li>
      <li><img src="http://dribbble.s3.amazonaws.com/users/12/screenshots/1185739/google_chromescreensnapz001_teaser.png" alt=""></li>
      <li><img src="http://dribbble.s3.amazonaws.com/users/22225/screenshots/1185692/cooper_workshop_teaser.jpg" alt=""></li>
      <li><img src="http://dribbble.s3.amazonaws.com/users/565/screenshots/1186432/kreyos_sport_mode_1x.jpg" alt=""></li>
      <li><img src="http://dribbble.s3.amazonaws.com/users/6014/screenshots/1186351/oliver.jpg" alt=""></li>
      <li><img src="http://dribbble.s3.amazonaws.com/users/93631/screenshots/1185715/drip-lion.jpg" alt=""></li>
      <li><img src="http://dribbble.s3.amazonaws.com/users/104062/screenshots/1186702/pw_1x.png" alt=""></li>
      <li><img src="http://dribbble.s3.amazonaws.com/users/7528/screenshots/1186361/genesisproject_1x.jpg" alt=""></li>
      <li><img src="http://dribbble.s3.amazonaws.com/users/2896/screenshots/1186026/free_to_be_1x.png" alt=""></li>
      <li><img src="http://dribbble.s3.amazonaws.com/users/2559/screenshots/1185760/screen_shot_2013-08-06_at_10.32.27_am.png" alt=""></li>
      <li><img src="http://dribbble.s3.amazonaws.com/users/4737/screenshots/1178958/untitled-1_1x.png" alt=""></li>
      <li><img src="http://dribbble.s3.amazonaws.com/users/4737/screenshots/1186176/site_1x.jpg" alt=""></li>
    </ul>
  </div>
</div>

CSS:

body {
  padding-top: 50px;
  background: #f8f8f8;
}
img {  
    max-width: 100%;
    max-height: 150px;
}

ul{
    padding: 0;
}

.content {
    width: 970px;
    margin: 0 auto;
}

.starter-template {
    margin-top: 10px;
}

.starter-template li {
    width: 20%;
    position: relative;
    float:left;
    list-style: none;
    background: #fff;
    padding: 10px;
    margin-bottom: 20px;
    margin-right: 20px;
    -webkit-border-radius: 3px;
    -moz-border-radius: 3px;
    border-radius: 3px;
    -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07);
    -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07);
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07);
}

@media (max-width: 315px) {
    .starter-template li {
        margin: 0 0 3px 3px !important;
    }
}

@media (max-width: 735px) and (min-width: 450px) {
    .starter-template li {
        width: 30%;
        margin-right: 0;
        margin-left: 15px;
    }
}

@media (max-width: 450px) {
    .starter-template li {
        width: 45%;
        margin-right: 20px; 
        margin-left: 10px;
    }
    .starter-template li:nth-child(2n){
        margin-left: 0;
        margin-right: 0;
    }
}

jsfiddle: http://jsfiddle.net/VJBjL/5/

person Arbaoui Mehdi    schedule 07.08.2013