2016-12-13 2 views
1

Меня беспокоит проблема повторения ошибок при попытке создания веб-сайтов в стиле сетки, как мне сделать все div на одной и той же высоте в зависимости от самого высокого div в эта строка. Один из divs будет содержать набор divs, которые нужно будет растягиваться на основе этой высоты и автозаполнения, чтобы все перемещалось вместе.Как сделать все мои одинаковые высоты div на основе содержимого дыхания

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

Вот что я в настоящее время:

<div class="container"> 

    <div class="half"> 
    <h1>Title</h1> 
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce at ipsum tortor. Etiam ut lacus auctor, venenatis mauris vitae, scelerisque dolor. Mauris pulvinar purus libero, eget congue sem lobortis vitae.</p> 
    </div> 

    <div class="quater"> 
    <img src="http://i68.tinypic.com/6yo87o.jpg"></img> 
    </div> 

    <div class="quater social"> 
    <div class="third">Icon</div> 
    <div class="third">Icon</div> 
    <div class="third">Icon</div> 
    <div class="third">Icon</div> 
    <div class="third">Icon</div> 
    <div class="third">Icon</div> 
    </div> 

</div> 

CSS-код:

.half { 
    width: 50%; 
    background: yellow; 
    float: left; 
} 

.quater { 
    width: 25%; 
    background: red; 
    float: left; 
} 

.third { 
    width: 33.33333333%; 
    background: blue; 
    float: left; 
    color: white; 
} 

img {width: 100%;} 

https://jsfiddle.net/atp1agmk/4/

И вот мой желаемый результат:

enter image description here

Я не возражаю, если это нужно сделать с помощью JavaScript либо

+0

Возможный дубликат [Легкие равные высоты DIV без JavaScript возможно?] (Http://stackoverflow.com/questions/3616912/easy-equal-height-divs-without-javascript-possible) –

+0

Нет, поскольку я нуждаюсь в divs, которые растягиваются на основе неопределенной высоты – bLAZYY

ответ

1

.container{ 
 
display: flex; 
 
} 
 
.half { 
 
    width: 50%; 
 
    background: yellow; 
 
    float: left; 
 
} 
 

 
.quater { 
 
    width: 25%; 
 
    background: red; 
 
    float: left; 
 
display: flex; 
 
    align-items: center; 
 
} 
 

 
.third { 
 
    width: 33.33333333%; 
 
    background: blue; 
 
    float: left; 
 
    color: white; 
 
    display: flex; 
 
align-items: center; 
 
justify-content: center; 
 
} 
 
.social { 
 
flex-wrap: wrap; 
 
align-items: stretch; 
 
} 
 
img {width: 100%;height:auto;}
<div class="container"> 
 

 
    <div class="half"> 
 
<h1>Title</h1> 
 
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce at ipsum tortor. Etiam ut lacus auctor, venenatis mauris vitae, scelerisque dolor. Mauris pulvinar purus libero, eget congue sem lobortis vitae.</p> 
 
    </div> 
 

 
    <div class="quater"> 
 
<img src="http://i68.tinypic.com/6yo87o.jpg" /> 
 
    </div> 
 

 
    <div class="quater social"> 
 
<div class="third">Icon</div> 
 
<div class="third">Icon</div> 
 
<div class="third">Icon</div> 
 
<div class="third">Icon</div> 
 
<div class="third">Icon</div> 
 
<div class="third">Icon</div> 
 
    </div> 
 

 
</div>

https://jsfiddle.net/atp1agmk/20/

+0

Есть ли способ сделать текст значка (он будет будь то значок или изображение), центрированный до середины окна изменения размера с помощью «flex» – bLAZYY

+0

скрипка обновлена ​​- [https://jsfiddle.net/atp1agmk/22/](https://jsfiddle.net/atp1agmk/22/) .. flex применяется к '.third' также. –

1

Вы можете использовать свойство flex css для достижения ваших требований.

Here is the Example. Вы можете прокомментировать, если вам нужен другой способ.

+0

Ваш пример не реплицирует то, что мне нужно, и flex не работает для меня, поскольку я не могу установить высоту в содержащем div, поскольку это зависит от содержимого внутри. – bLAZYY

+0

@bLAZYY Можете ли вы проверить сейчас. –

+0

Похоже, что его половина там, иконы, не растягиваются до максимальной высоты div, а не ширины. – bLAZYY

1

вы можете сделать это с прогибается, как этот

.half { 
    width: 50%; 
    background: yellow; 
    float: left; 
} 

.quater { 
    width: 25%; 
    background: red; 
    float: left; 
} 

.third { 
    width: calc(100%/3); 
    height: calc(100%/2); 
    background: blue; 
    float: left; 
    color: white; 
} 

img {width: 100%; height: 100%;} 

.container { 
    display: flex; 
} 
+1

да, это просто https://jsfiddle.net/atp1agmk/19/ – Luca

+0

вы можете объяснить мне calc (100%/2) css и, если это будет удобно с использованием полей и прокладок, чтобы создать интервал между каждым из дивины? – bLAZYY

+0

Функция calc() выполняет вычисление, которое будет использоваться как значение свойства. вы можете написать выражение внутри него, если каждый из элементов будет иметь право на 5 пикселей справа, вы можете установить ширину следующим образом: 'width: calc (100%/3 - 5px)' –