Я ценю вашу помощь с css. Я размещал изображение баннера, используя background-image с inline-css. Теперь мне нужно разместить с помощью тега img и настроить таргетинг на родителя с помощью css. К сожалению, размер моего изображения не меняется, как когда он был внутри встроенного CSS.
Вот мой код css. Пожалуйста, посмотрите на всю страницу и измените размер страницы.
«Эффект», который мне нравится, заключается в том, что на мобильном изображении отображается только центр изображения, в то время как при увеличении ширины страницы изображение изменяется, сохраняя центр изображения в качестве основы для позиции. См. Второе изображение примера (называемое баннером-два).
Итак, как воссоздать точно так же, как изображение в banner-two, используя background-image, но теперь поместив изображение как img src.
Я также создал код с моим кодом (ссылка на мой код в коде - пожалуйста, также измените размер).
.banner-two {
background-size: cover;
background-position: center center;
height: 240px;
width: 100%;
}
@media (min-width: 768px) {
.banner-two {
height: 480px;
}
}
@media (min-width: 1200px) {
.banner-two {
height: 680px;
}
}<div class = "banner-one">
<img alt = "" src = "https://pictr.com/images/2018/10/06/06cVw2.jpg" />
</div>
<section>
<div class = "banner-two" style = "background-image: url('https://pictr.com/images/2018/10/06/06cVw2.jpg')"></div>
</section> 





Обновлено: приведенное ниже решение работает только в Firefox; Кажется, я не могу заставить его работать в других браузерах. Я оставлю его пока, на случай, если он поможет людям в правильном направлении, но я удалю его, когда появится лучшее рабочее решение.
Просто разместите баннер в нужном месте.
.banner-one {
height: 240px;
display: inline-block;
position: relative;
left: 50vw;
transform: translateX(-50%);
}
.banner-one img {
height: 100%;
}
.banner-two {
background-size: cover;
background-position: center center;
height: 240px;
width: 100%;
}
@media (min-width: 768px) {
.banner-one,
.banner-two {
height: 480px;
}
}
@media (min-width: 1200px) {
.banner-one,
.banner-two {
height: 680px;
}
}<div class = "banner-one">
<img alt = "" src = "https://pictr.com/images/2018/10/06/06cVw2.jpg" />
</div>
<section>
<div class = "banner-two" style = "background-image: url('https://pictr.com/images/2018/10/06/06cVw2.jpg')"></div>
</section>Но вопрос в том, зачем вы это хотите. Вам нужно намного больше CSS, чтобы это работало! Мое чутье было бы просто скрыть img, а затем продолжить то, что вы делали с баннером-два. Я понимаю, что есть ограничения, с которыми вам нужно работать, поэтому я надеюсь, что это поможет!
Причина в том, что теперь я использую javascript с отложенной загрузкой и img srcset, тогда код проще при использовании тега img. Код теперь выглядит примерно так ... <img class = "lazy" alt = "" data-src = "/ path / image-500w.jpg" data-srcset = "/ path / image - 1000w.jpg 768w, /path/image--2000w.jpg 1200w "/>
.banner-one {
width: 100%;
height: 640px;
display: flex;
justify-content: center;
}
.banner-one img {
max-width: 100%;
}
Спасибо, Адам. За помощь. Я пробовал использовать Flex, но мне не удалось заставить его работать. Посмотрите свой код с помощью flex vs transform codepen.io/tokyoweb/pen/XxjgJa Размер изображения полностью изменен, поскольку изображение является баннером, тогда ширина огромна, тогда я хотел бы просто показать центр изображения, когда ширина браузера мала, вместо изменения размера всего изображения. Я что-то не так делаю с вашим кодом? Гибкий код называется banner-flex, код ниже, использующий преобразование, называется well banner-transform. Я лучше понимаю гибкость, чем преобразование, и считаю, что использование гибкости более эффективно, чем использование преобразования. Спасибо еще раз.
До сих пор вот код. Banner-flex не работает, так как изображение полностью центрируется. Banner-transform работает нормально. ссылка на примеры на codepen
Мне действительно интересно, есть ли способ сделать это, что можно было бы сказать лучше или эффективнее.
Спасибо еще раз !
<div class = "banner-flex">
<img alt = "" src = "https://pictr.com/images/2018/10/06/06cVw2.jpg" />
</div>
<div class = "banner-transform">
<img alt = "" src = "https://pictr.com/images/2018/10/06/06cVw2.jpg" />
</div>
.banner-flex {
width: 100%;
height: 240px;
display: flex;
justify-content: center;
}
.banner-flex img {
max-width: 100%;
}
.banner-transform {
height: 240px;
display: inline-block;
position: relative;
left: 50vw;
transform: translateX(-50%);
}
.banner-transform img {
height: 100%;
}
@media (min-width: 768px) {
.banner-flex,
.banner-transform {
height: 480px;
}
}
@media (min-width: 1200px) {
.banner-flex,
.banner-transform {
height: 680px;
}
}
@media (min-width: 1800px) {
.banner-transform img {
width: 100vw;
}
}
Мистер Листер благодарит за ваше руководство. Кажется, ваш код работает нормально, я редактировал, потому что в Chrome img не увеличивался больше, чем исходный размер, поэтому я добавил носитель для увеличения ширины: 100vw на 1800 пикселей. Я создал код с новым кодом. codepen.io/tokyoweb/pen/VEKbNB работает над mac safari, mac chrome и mac firefox. Я еще не знаю об окнах, но думаю, что да. Спасибо большое за вашу помощь. Интересно, зачем использовать left: 50vw с трансформацией -50%? заставить браузер использовать центр изображения в качестве основы для позиционирования?