#html #css #height
#HTML #css #высота
Вопрос:
Есть ли какая-либо возможность иметь divs одинаковой высоты, которые содержат изображения разной высоты? Я не могу использовать height
атрибут css, потому что я не знаю высоты.
* {
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>
Это то, что мне удалось сделать с flexbox
and grid
, но он все еще не знает, как установить одинаковую высоту для divs, не зная размера изображений.
Есть идеи? Спасибо
Редактировать: это мое ожидание:
Edit2: я переформулирую свой вопрос. Есть ли шанс получить divs, как на картинке, без использования javascript или фиксированной высоты?
Комментарии:
1. Готовы ли вы изменить свою структуру HTML?
2. @CharuMaheshwari да, я могу полностью изменить структуру html
Ответ №1:
Можете ли вы использовать background-image вместо img? Например, вы можете сделать так.
.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;
}
Комментарии:
1. Я не могу установить высоту изображения, потому что я не знаю, насколько оно будет большим или маленьким, и я должен использовать
img
тег, потому что пользователь будет добавлять изображения с помощьюimg
тега
Ответ №2:
Если вы готовы немного изменить изображение, вы можете «покрыть» определенный размер своим изображением, чтобы сохранить img
тег, но сделать их более последовательными:
Я добавил height: 150px
и object-fit: cover
к изображению.
* {
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:
Добавить исправленное min-height
в .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>
Комментарии:
1. Как я уже сказал, я не могу использовать высоту, потому что я не знаю, какие изображения там будут. И изображение должно использовать
img
тег: ( Я хочу создать структуру для добавления изображений и текста под изображением.2. можете ли вы установить
height
для элемента wrap(.img
) Будет полезно, если вы опубликуете желаемый результат как iamge3. только для понимания результата здесь это то, что вы хотите?
4. когда я запускаю ваш код, я вижу тот же результат, что и на изображении? Какой браузер вы используете?
5. Mozilla Firefox 🙂
Ответ №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>
Комментарии:
1. По-прежнему невозможно использовать
height
значение. Что, если одно изображение будет больше? Невозможно иметь одинаковую высоту для изображений. Для divs, содержащих изображения, требуется одинаковая высота.2. Я удалил высоту из img. Посмотрите, служит ли это вам,
3. Это первая попытка, которую я сделал, но теперь, как вы сделаете это отзывчивым? Мне нужно иметь адаптивный (изображение, текст, изображение, текст, изображение, текст)
4. Изображения по-прежнему отзывчивы. Это просто контейнер, который нуждается в некоторых корректировках. Сделал их. Пожалуйста, попробуйте сейчас
5. Да, но в этом случае вы не получите текст под каждым изображением? В responsive вы получите все изображения по одному и все тексты по одному