#html #css
#HTML #css
Вопрос:
Я пытаюсь сделать изображение рядом с текстом масштабируемым и отзывчивым. В настоящее время, когда я запускаю свою html-страницу, есть div, который выглядит следующим образом:
Это хорошо, но когда я пытаюсь изменить размер своего окна, оно будет выглядеть так:
Когда текст переносится под изображение, я хочу установить стиль изображения на width: 100%;
.
Есть ли какой-либо возможный способ масштабировать изображение, когда под ним находится текст, но сохранить его, когда достаточно места для размещения текста рядом с изображением? Это должно выглядеть так:
Мой текущий код
.cake {
background-color: white;
overflow: hidden;
padding: 5px;
margin-bottom: 5px;
margin-top: 5px;
}
.cake p {
margin-bottom: 0;
text-align: justify;
}
.cake>.price {
margin-right: 10px;
}
.cake>img {
padding-right: 20px;
float: left;
overflow: hidden;
width: 100%;
min-width: 240px;
max-width: 300px;
height: 200px;
display: block;
object-fit: cover;
}
.price {
float: right;
}
<div class="cake">
<img src="https://i.imgur.com/xWRtGkj.jpg">
<h4>Cheesecake</h4>
<p>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
</p>
<span class="price">45</span>
</div>
Комментарии:
1. загрузите свою фотографию в
imgur
и добавьте ее, ваш вид и доступный вид кода отличаются2. вы должны заглянуть в flexbox вместо того, чтобы использовать
float
для размещения своих элементов
Ответ №1:
Вы можете использовать flexbox для этого, но если вы не хотите изменять свой код на flexbox
, вы можете сделать это, как показано ниже
.cake {
background-color: white;
overflow: hidden;
padding: 5px;
margin-bottom: 5px;
margin-top: 5px;
}
.cake p {
margin-bottom: 0;
text-align: justify;
}
.cake > .price {
margin-right: 10px;
}
.cake > img {
padding-right: 20px;
float: left;
overflow: hidden;
width: 100%;
min-width: 240px;
height: 200px;
display: block;
object-fit: cover;
}
.price {
float: right;
}
@media (min-width: 430px) {
.cake > img {
max-width: 300px;
}
}
<div class="cake">
<img src="https://i.imgur.com/xWRtGkj.jpg">
<h4>Cheesecake</h4>
<p>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
</p>
<span class="price">45</span>
</div>
Ответ №2:
вы можете использовать медиа-запрос, используя медиа-запросы
.cake {
background-color: white;
overflow: hidden;
padding: 5px;
margin-bottom: 5px;
margin-top: 5px;
}
.cake p {
margin-bottom: 0;
text-align: justify;
}
.cake>.price {
margin-right: 10px;
}
.cake>img {
padding-right: 20px;
float: left;
overflow: hidden;
width: 100%;
min-width: 240px;
max-width: 300px;
height: 200px;
display: block;
object-fit: cover;
}
.price {
float: right;
}
@media only screen and (max-width: 768px) { /*put the breakpoint where the text wrap*/
.cake p {
width: 100%;
}
}