Bootstrap 3-100% высота пользовательского div внутри столбца



допустим, у меня есть два столбца подряд.



один содержит изображение с помощью class="img-responsive" для жидкого изображения и другой столбец рядом с имеет пользовательский div блок.



мой вопрос заключается в том, как получить высоту этого пользовательского div 100%. Ниже не работает для меня.



height: auto;
max-width: 100%;


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



Я могу получить высоту столбцов равный, делая что-то вроде следующего, как предлагалось предыдущими вопросами.



class*="col-"]{
margin-bottom: -99999px;
padding-bottom: 99999px;
}
.row {
overflow: hidden;
}


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



здесь JS Fiddle



enter image description here

806   4  

4 ответов:

исходный вопрос касается Bootstrap 3 и поддерживает IE8 и 9, поэтому Flexbox будет лучшим вариантом, но это не часть моего ответа из-за отсутствия поддержки, см. http://caniuse.com/#feat=flexbox и переключите окно IE. Очень плохо, да?

2 способами:

1. Дисплей-таблица: Вы можете навести порядок, превратив строку в display: table и col - в display:table-cell. Он работает buuuut ограничения таблиц есть, среди этих ограничений являются толчок и тянуть и смещения не будет работать. Кроме того, я не знаю, где вы используете это-в какой точке останова. Вы должны сделать изображение полной ширины и обернуть его в другой контейнер, чтобы положить туда прокладку. Кроме того, вам нужно выяснить дизайн на мобильном телефоне, это для 768px и выше. Когда я использую это, я повторно объявляю размеры, и иногда я придерживаюсь важных значений на них, потому что таблицы принимают ширину содержимого внутри них, поэтому повторное объявление ширины помогает этот. Вам нужно будет поиграть. Я также использую скрипт, но вы должны изменить меньше файлов, чтобы использовать его или он не будет работать ответственно.


демо: http://jsbin.com/EtUBujI/2

  .row.table-row > [class*="col-"].custom {
    background-color: lightgrey;
    text-align: center;
  }


@media (min-width: 768px) {

  img.img-fluid {width:100%;}

  .row.table-row {display:table;width:100%;margin:0 auto;}

  .row.table-row > [class*="col-"] {
    float:none;
    float:none;
    display:table-cell;
    vertical-align:top;
  }

  .row.table-row > .col-sm-11 {
    width: 91.66666666666666%;
  }
  .row.table-row > .col-sm-10 {
    width: 83.33333333333334%;
  }
  .row.table-row > .col-sm-9 {
    width: 75%;
  }
  .row.table-row > .col-sm-8 {
    width: 66.66666666666666%;
  }
  .row.table-row > .col-sm-7 {
    width: 58.333333333333336%;
  }
  .row.table-row > .col-sm-6 {
    width: 50%;
  }
  .col-sm-5 {
    width: 41.66666666666667%;
  }
  .col-sm-4 {
    width: 33.33333333333333%;
  }
  .row.table-row > .col-sm-3 {
    width: 25%;
  }
  .row.table-row > .col-sm-2 {
    width: 16.666666666666664%;
  }
  .row.table-row > .col-sm-1 {
    width: 8.333333333333332%;
  }


}

HTML

<div class="container">
    <div class="row table-row">
        <div class="col-sm-4 custom">
                100% height to make equal to ->
        </div>
        <div class="col-sm-8 image-col">
            <img src="http://placehold.it/600x400/B7AF90/FFFFFF&text=image+1" class="img-fluid">
        </div>
    </div>
</div>

2. Абсолютный bg div

демо: http://jsbin.com/aVEsUmig/2/edit

демо с содержанием выше и ниже: http://jsbin.com/aVEsUmig/3


.content {
        text-align: center;
        padding: 10px;
        background: #ccc;

}


@media (min-width:768px) { 
    .my-row {
        position: relative;
        height: 100%;
        border: 1px solid red;
        overflow: hidden;
    }
    .img-fluid {
        width: 100%
    }
    .row.my-row > [class*="col-"] {
        position: relative
    }
    .background {
        position: absolute;
        padding-top: 200%;
        left: 0;
        top: 0;
        width: 100%;
        background: #ccc;
    }
    .content {
        position: relative;
        z-index: 1;
        width: 100%;
        text-align: center;
        padding: 10px;
    }

}

HTML

<div class="container">

    <div class="row my-row">

        <div class="col-sm-6">

        <div class="content">
          This is inside a relative positioned z-index: 1 div
          </div>

         <div class="background"><!--empty bg-div--></div>
        </div>

        <div class="col-sm-6 image-col">
            <img src="http://placehold.it/200x400/777777/FFFFFF&text=image+1" class="img-fluid">
        </div>

    </div>

</div>

Я просто искал smiliar вопрос, и я нашел это:

.div{
  height : 100vh;
}

подробнее

vw: 1/100th viewport width
vh: 1/100th viewport height
vmin: 1/100th of the smallest side
vmax: 1/100th of the largest side

вам нужно установить высоту каждого родительского элемента того, который вы хотите определить высоту.

<html style="height: 100%;">
  <body style="height: 100%;">
    <div style="height: 100%;">
      <p>
        Make this division 100% height.
      </p>
    </div>
  </body>
</html>

статьи.

пример JsFiddle

мое решение состояло в том, чтобы сделать все родители 100% и установить определенный процент для каждой строки:

html, body,div[class^="container"] ,.column {
    height: 100%;
}

.row0 {height: 10%;}
.row1 {height: 40%;}
.row2 {height: 50%;}

Comments

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