内联添加了响应性背景图像

时间:2017-03-29 作者:erin_k

我正在将特色图像设置为页面顶部的背景。图像非常大,我希望能够为较小的屏幕大小设置较小的图像大小。由于图像是内联添加的,我认为我不能使用外部样式。css文件来设置不同的图像。

以下是我的一个例子:

<?php 
$bannerImg = \'\';
if(has_post_thumbnail()) {
    $bannerImg = get_the_post_thumbnail_url();
}
?>

<section class="page-banner" style="background-image: url(<?php echo $bannerImg; ?>);">
    <h1 class="banner-title"><?php the_title(); ?></h1>
</section>
我想做点什么srcset 但我找不到与背景图像等效的图像。

2 个回复
最合适的回答,由SO网友:Christina 整理而成

如果您使用WordPress的自适应图像插件,只需使用最大的图像为所有视口宽度制作一个内联css,然后它就可以在服务器上完成所有工作。您对标记不做任何操作,但在Adaptive Images插件设置中输入断点,以便将小图像提供给小设备等等。

如果使用自适应图像,则可能是:

/**  
 *
 * Background Image from Post Image using Adaptive Images Plugin for WordPress
 * @since  1.0.0
 * Credits: TwentyFifteen WordPress theme adjacent pagination
 *
 */
function the_other_idea_good_heavens_change_this_function_name() {

    global $post;

    if ( ! has_post_thumbnail( $post->ID ) ) return; //exit if there is no featured image

    $theme_handle = \'visionary\'; //the theme handle used for the main style.css file

    //image
    $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), \'super-huge-image\' );

    //css
    $css = \'.banner-image { background-image: url(\' . esc_url( $image[0] ) . \'); } \';

    //minify            
    $css = str_replace( array("\\r\\n", "\\r", "\\n", "\\t", \'  \', \'    \', \'    \'), \'\', $css );

    //add it
    wp_add_inline_style( $theme_handle, $css );

}
add_action( \'wp_enqueue_scripts\', \'the_other_idea_good_heavens_change_this_function_name\', 99 );
这就是我所做的(在我开始使用Adapative图像之前)。

add_image_size();
在本例中,我使用了三种尺寸:小、中、大,然后重新生成缩略图。

/**  
 *
 * Background Image from Post Image
 * @since  1.0.0
 * Credits: TwentyFifteen WordPress theme adjacent pagination
 *
 */
function yourprefix_responsive_mobile_first_background_images() {

    global $post;

    if ( ! has_post_thumbnail( $post->ID ) ) return; //exit if there is no featured image


    $theme_handle = \'visionary\';     //the theme handle used for the main style.css file
    $property     = \'.banner-image\'; //the property
    $css          = \'\';

    //small image
    $small_img   = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), \'my-small-image-size\' );
    $small_style = \'
            \' . $property . \' { background-image: url(\' . esc_url( $small_img[0] ) . \'); }
            \';
    $css .= $small_style;


    //medium image
    $medium_img   = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), \'my-medium-image-size\' );
    $medium_style = \'
            \' . $property . \' {  background-image: url(\' . esc_url( $medium_img[0] ) . \'); }
            \';
    $css .= \'@media (min-width: 1000px) { \'. $medium_style . \' }\';


    //large image
    $large_img   = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), \'my-large-image-size\' );
    $large_style = \'
            \' . $property . \' {  background-image: url(\' . esc_url( $large_img[0] ) . \'); }
            \';
    $css .= \'@media (min-width: 1700px) { \'. $large_style . \' }\';

    //minify            
    $css = str_replace( array("\\r\\n", "\\r", "\\n", "\\t", \'  \', \'    \', \'    \'), \'\', $css );

    //add it
    wp_add_inline_style( $theme_handle, $css );

}
add_action( \'wp_enqueue_scripts\', \'yourprefix_responsive_mobile_first_background_images\', 99 );

SO网友:ferdouswp

You can simply  use CSS media query for different device one example 

@media only screen and (max-width: 320px) {
    /* styles for narrow screens */
   .page-banner{
     background-size:100% auto;
     background-repeat:no-repeat;
     background-position:center;
     display: block;
     width: 100%;
     height: 500px;
    }

}

You can use different page different class id 
page-id-34 logged-in wpb-js-composer js-comp-ver-4.12 vc_responsive">

相关推荐

在带有PHP的子主题中包含style.css

在里面https://codex.wordpress.org/Child_Themes 这是包含样式的最佳实践。css在子主题中,必须将下面的代码放入函数中。php的子主题,但将“父样式”替换为可以在函数中找到的父主题的参数。父主题的php。我在我的主题文件中找不到它,那里也没有多少代码。使用@import包含父主题样式表的方法不适用于我,放入文件的css不会在任何浏览器的站点上显示自己。function my_theme_enqueue_styles() { $parent_s