Я разрабатываю веб-сайт, который работает на настольных компьютерах и мобильных устройствах, используя медиа-запросы . По большей части это работает нормально. Однако у меня есть сценарий, который я постараюсь описать ниже, который не работает должным образом.
На рабочем столе у меня есть серия изображений с наложением текста, расположенная так:
На мобильном устройстве мне бы хотелось, чтобы это отображалось в двух столбцах, а окончательная плитка распределялась по всей ширине, как показано ниже:
Однако изображение, которое я использую для окончательной плитки на рабочем столе, является квадратным, и когда я растягиваю его по всей ширине, оно становится слишком большим и выглядит примерно так:
Ниже приведены HTML и CSS, которые у меня есть на данный момент:
<div>
<div class="hotel_container">
<div class="options">
<div class="option">
<a href="www.example.com" target="_blank"><img class="opt_img" src="images/example.jpg"></a>
<h3 class="centered" id="hotel_info">TEXT</h3>
</div>
</div>
<!-- repeated "options" div 7 more times -->
<div class="options_last">
<div class="option">
<a href="www.example.com" target="_blank"><img class="opt_img" src="images/example2.jpg"></a>
<h3 class="centered" id="hotel_info">TEXT</h3>
</div>
</div>
</div>
</div>
CSS
.options, .options_last{
width: 33%;
overflow: hidden;
display: inline-block;
}
@media only screen and (max-width: 812px) {
.options{
width: 50%;
}
}
@media only screen and (max-width: 812px) {
.options_last{
width: 100%;
}
}
.option{
position: relative;
text-align: center;
padding: 10px;
}
@media only screen and (max-width: 812px) {
.option{
padding: 1px;
}
}
.opt_img{
width: 100%;
opacity: 0.7;
}
.opt_img:hover{
opacity: 0.9;
}
.centered {
position: absolute;
width: 100%;
top: 40%;
left: 50%;
transform: translate(-50%, -50%);
}
#hotel_info{
background-color: rgba(130, 130, 130,0.7);
width: 80%;
font-size: 23px;
padding: 15px;
}
@media only screen and (max-width: 812px) {
#hotel_info{
width: 60%;
font-size: 10px;
padding: 5px;
}
}
Я не хочу, чтобы изображение имело определенную высоту, так как это исказило бы его, поэтому вместо этого я подумал, что у меня может быть второе изображение, которое будет прямоугольным, и которое я мог бы включить в мобильном режиме. Однако я не могу на всю жизнь понять, как выбрать другое изображение на основе устройства, как при традиционном медиазапросе.
[Редактировать: мне известна возможность иметь оба изображения на странице и скрывать одно или другое с помощью медиазапросов, но меня предупреждали, что это может замедлить работу страниц при чрезмерном использовании, поскольку все устройства должны загружать все изображения. Я ищу «лучший» способ сделать это, чтобы избежать появления вредных привычек, пока я учусь чему-то мелкому]
Может ли кто-нибудь помочь мне или указать на простое объяснение в Интернете, которое может помочь мне разобраться, пожалуйста.
P.S. Я очень новичок в веб-разработке, поэтому, пожалуйста, сделайте ваши ответы дружелюбными для новичков, и держите меня, если мне нужно попросить разъяснений. Я также открыт для предложений о лучших или более простых способах ведения дел, я работаю с тем, что я узнал из курсов Codecademy по веб-разработке.