我这样做的方式是将background: url(...)
所有物
<?php if ( has_post_thumbnail() ) :
$hero = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), \'hero\', \'\' );
$tablet = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID), \'tablet\', \'\' );
$phablet = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), \'phablet\', \'\' );
$phone = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), \'phone\', \'\' );
?>
<style>
@media only screen and (min-width : 480px) {
.banner {
background-image: url(\'<?php echo $phone; ?>\');
}
}
@media only screen and (min-width : 768px) {
.banner {
background-image: url(\'<?php echo $phablet; ?>\');
}
}
@media only screen and (min-width : 992px) {
.banner {
background-image: url(\'<?php echo $tablet; ?>\');
}
}
@media only screen and (min-width : 1200px) {
.banner {
background-image: url(\'<?php echo $hero; ?>\');
}
}
</style>
<?php endif; ?>
您必须根据需要调整断点。请注意,我是按类选择横幅的。如果页面上有多个横幅,则必须为每个横幅分配一个ID,并使用该ID来选择它们。
这个background-size
属性可以位于样式表中,因为它适用于所有设备。
另一种方法是在服务器端嗅出设备,然后只提供必要大小的图像。此解决方案将允许您只提供一个图像,而不是四个图像。
我不喜欢这种解决方案,因为您必须维护一个用户代理到设备类型映射的列表,并且您不会得到很多好处。
大多数浏览器不会获取它不需要的图像,因此即使内联CSS解决方案提供了四个图像,浏览器实际上也只能下载一个图像。
我认为最好的解决办法是使用picture element. 不幸地browser support 因为现在这个元素不是很好。