CSS - Divs with same height, but different image heights

左心房为你撑大大i 提交于 2021-02-11 13:27:34

问题


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: Edit2: I reformulate my question. Is there any chance to get the divs like in the picture without using javascript or fixed height?


回答1:


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;
}



回答2:


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>



回答3:


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>



回答4:


.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>


来源:https://stackoverflow.com/questions/55627089/css-divs-with-same-height-but-different-image-heights

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!