问题
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