Я добился желаемого эффекта, используя комбинацию метода CSS var()
и атрибута style
.
Мой PHP-код выглядит примерно так:
<div class="banner-image" style="
--xl-background-image:url('<?php echo $image['sizes']['xl_header_banner_wide']; ?>');
--lg-background-image:url('<?php echo $image['sizes']['lg_header_banner_wide']; ?>');
--md-background-image:url('<?php echo $image['sizes']['md_header_banner_wide']; ?>');
background-image:url('<?php echo $image['sizes']['sm_header_banner_wide']; ?>')">
, который отображает HTML:
<div class="banner-image" style="
--xl-background-image:url('/wp-content/uploads/2019/02/Products-Header-1489x600.jpg');
--lg-background-image:url('/wp-content/uploads/2019/02/Products-Header-1400x564.jpg');
--md-background-image:url('/wp-content/uploads/2019/02/Products-Header-1024x413.jpg');
background-image:url('/wp-content/uploads/2019/02/Products-Header-768x309.jpg')">
Поэтому я могу использовать следующую комбинацию CSS и медиа-запросов, чтобы показатьразличные изображения, основанные на размере экрана клиента в моем внешнем style.css
файле:
@media (min-width: 768px){
.banner-image {
background-image: var(--md-background-image)!important;
}
}
@media (min-width: 992px){
.banner-image {
background-image: var(--lg-background-image)!important;
}
}
@media (min-width: 1200px){
.banner-image {
background-image: var(--xl-background-image)!important;
}
}
Я проверил это в Chrome & FireFox (в Windows) и Safari (в Mac) с помощью инструментов разработчика, и яне заметил проблем со сравнимостью.
Альтернативный подход:
В качестве альтернативы я понял, когда писал свое решение, что оно менее рискованно подход может заключаться в том, чтобы отображать мои стили прямо на странице.Я полагаю, что это просто вопросы совместимости и / или стандартов кодирования, которые разделяют две возможности.
<style type="text/css">
@media (min-width: 768px){
.banner-image {
background-image: '<?php echo $image['sizes']['md_header_banner_wide']; ?>'!important;
}
}
@media (min-width: 992px){
.banner-image {
background-image: url('<?php echo $image['sizes']['lg_header_banner_wide']; ?>')!important;
}
}
@media (min-width: 1200px){
.banner-image {
background-image: url('<?php echo $image['sizes']['xl_header_banner_wide']; ?>')!important;
}
}
</style>