0

Is there any possibility to have divs with same heights, which contains images with different heights? I cannot use height css attribute, because I don't know the heights.

* {
  box-sizing: border-box;
}

.magazine-items {
  width: 500px;
  display:flex;
  flex-flow:row wrap;
}

.magazine-item {
  width:33%;
  display: grid;
  grid-template-areas: "image image image"
                       "text text text";
  border: 1px solid red;
  align-content: flex-start;
}
.magazine-item img {
  width:100%;
}
.text{
  grid-area: text;
}
.img {
  grid-area: image;
}
.double-text {
  width:80%;
  margin:auto;
}
<div class="magazine-items">
 <div class="magazine-item">
  <div class="img">
   <img src="https://upload.wikimedia.org/wikipedia/commons/b/b7/800px-Islas_Coronado.cc.jpg" alt="">
  </div> 
  <div class="text">
   <p>Porovnání detailů designu série Elle a Effe</p>
  </div>
 </div>
 <div class="magazine-item">
  <div class="img">
   <img src="https://www.onlinekoupelny.cz/image/catalog/magazin/Level_small.jpg" alt="">
  </div>
  <div class="text">
   <p>Vyvážené linie s citem pro maximální funkčnost, zaoblené tvary a nadčasová elegance činí z řady Level jednu z nejoblíbenějších sérií značky Paffoni.
   Vyvážené linie s citem pro maximální funkčnost, zaoblené tvary a nadčasová elegance činí z řady Level jednu z nejoblíbenějších sérií značky Paffoni.Vyvážené linie s citem pro maximální funkčnost, zaoblené tvary a nadčasová elegance činí z řady Level jednu z nejoblíbenějších sérií značky Paffoni.</p>
  </div>
 </div>
   <div class="magazine-item">
    <div class="img">
      <img src="https://dummyimage.com/600x400/000/fff" alt="">
    </div> 
    <div class="text">
      <p>Vyvážené linie s citem pro maximální funkčnost, zaoblené tvary a nadčasová elegance činí z řady Level jednu z nejoblíbenějších sérií značky Paffoni.</p>
    </div>
  </div>
</div>

This is what I managed to do with flexbox and grid but it still don't know how to set same height for divs without knowing the size of images.

Any ideas? Thank you

Edit: This is my expectation: Expectation Edit2: I reformulate my question. Is there any chance to get the divs like in the picture without using javascript or fixed height?

4 Answers4

0

Add fixed min-height to .img

* {
  box-sizing: border-box;
}

.magazine-items {
  width: 500px;
  display:flex;
  flex-flow:row wrap;
}

.magazine-item {
  width:33%;
  display: grid;
  grid-template-areas: "image image image"
                       "text text text";
  border: 1px solid red;
  align-content: flex-start;
}
.magazine-item img {
  width:100%;
}
.text{
  grid-area: text;
}
.img {
  grid-area: image;
  min-height: 250px;
}
.double-text {
  width:80%;
  margin:auto;
}
<div class="magazine-items">
 <div class="magazine-item">
  <div class="img">
   <img src="https://upload.wikimedia.org/wikipedia/commons/b/b7/800px-Islas_Coronado.cc.jpg" alt="">
  </div> 
  <div class="text">
   <p>Porovnání detailů designu série Elle a Effe</p>
  </div>
 </div>
 <div class="magazine-item">
  <div class="img">
   <img src="https://www.onlinekoupelny.cz/image/catalog/magazin/Level_small.jpg" alt="">
  </div>
  <div class="text">
   <p>Vyvážené linie s citem pro maximální funkčnost, zaoblené tvary a nadčasová elegance činí z řady Level jednu z nejoblíbenějších sérií značky Paffoni.
   Vyvážené linie s citem pro maximální funkčnost, zaoblené tvary a nadčasová elegance činí z řady Level jednu z nejoblíbenějších sérií značky Paffoni.Vyvážené linie s citem pro maximální funkčnost, zaoblené tvary a nadčasová elegance činí z řady Level jednu z nejoblíbenějších sérií značky Paffoni.</p>
  </div>
 </div>
   <div class="magazine-item">
    <div class="img">
      <img src="https://dummyimage.com/600x400/000/fff" alt="">
    </div> 
    <div class="text">
      <p>Vyvážené linie s citem pro maximální funkčnost, zaoblené tvary a nadčasová elegance činí z řady Level jednu z nejoblíbenějších sérií značky Paffoni.</p>
    </div>
  </div>
</div>
לבני מלכה
  • 15,925
  • 2
  • 23
  • 47
0

Can you use background-image instead of img? For example you can do like this.

.img {
    background: url(images/bg.jpg) no-repeat center center;
    -webkit-background-size: cover;
    -moz-background-size: cover;
    -o-background-size: cover;
    background-size: cover;
    width: 600;
    height: 400;
}
  • I cannot set the height of the image, because I dont know how big or sall it will be and I have to use `img` tag, because the user will add images using the `img` tag – Valentin Emil Cudelcu Apr 11 '19 at 08:09
0

If you're open to changing the image slightly, you can 'cover' a certain size with your image - so you can keep the img tag but make them look a little more consistent:

I've added a height: 150px and object-fit: cover to the image.

* {
  box-sizing: border-box;
}

.magazine-items {
  width: 500px;
  display: flex;
  flex-flow: row wrap;
}

.magazine-item {
  width: 33%;
  display: flex;
  flex-direction: column;
  border: 1px solid red;
}

.magazine-item img {
  width: 100%;
  height: 150px;
  object-fit: cover;
}

.double-text {
  width: 80%;
  margin: auto;
}
<div class="magazine-items">
  <div class="magazine-item">
    <div class="img">
      <img src="https://upload.wikimedia.org/wikipedia/commons/b/b7/800px-Islas_Coronado.cc.jpg" alt="">
    </div>
    <div class="text">
      <p>Porovnání detailů designu série Elle a Effe</p>
    </div>
  </div>
  <div class="magazine-item">
    <div class="img">
      <img src="https://www.onlinekoupelny.cz/image/catalog/magazin/Level_small.jpg" alt="">
    </div>
    <div class="text">
      <p>Vyvážené linie s citem pro maximální funkčnost, zaoblené tvary a nadčasová elegance činí z řady Level jednu z nejoblíbenějších sérií značky Paffoni. Vyvážené linie s citem pro maximální funkčnost, zaoblené tvary a nadčasová elegance činí z řady
        Level jednu z nejoblíbenějších sérií značky Paffoni.Vyvážené linie s citem pro maximální funkčnost, zaoblené tvary a nadčasová elegance činí z řady Level jednu z nejoblíbenějších sérií značky Paffoni.</p>
    </div>
  </div>
  <div class="magazine-item">
    <div class="img">
      <img src="https://dummyimage.com/600x400/000/fff" alt="">
    </div>
    <div class="text">
      <p>Vyvážené linie s citem pro maximální funkčnost, zaoblené tvary a nadčasová elegance činí z řady Level jednu z nejoblíbenějších sérií značky Paffoni.</p>
    </div>
  </div>
</div>
coops
  • 1,678
  • 1
  • 13
  • 26
0

.captions {
  width: 33%;
  border: solid 1px;
}

img {
  max-width: 100%;
}

.wrapper {
  display: flex;
  width: 100%;
}

@media (min-width: 780px) {
  .wrapper {
    max-width: 780px;
  }
}
.d-flex {
  display: flex;
}
<body>
  <div class="wrapper">
    <div class="captions">
      <img src="https://upload.wikimedia.org/wikipedia/commons/b/b7/800px-Islas_Coronado.cc.jpg" alt="">
    </div>
    <div class="captions">
      <img src="https://www.onlinekoupelny.cz/image/catalog/magazin/Level_small.jpg" alt="">
    </div>
    <div class="captions">
      <img src="https://dummyimage.com/600x400/000/fff" alt="">
    </div>
  </div>
  <div class="wrapper">
    <div class="captions">
      <p> This is for Div 1 </p>
    </div>
    <div class="captions">
      <p> This is for Div 2 </p>
    </div>
    <div class="captions">
      <p> This is for Div 3 </p>
    </div>
  </div>
</body>
Charu Maheshwari
  • 1,583
  • 1
  • 8
  • 9