如何在css中指定不同的图像,具体取决于用户是在桌面还是移动浏览器上访问

时间:2011-12-26 01:40:13

标签: html css mobile web media-queries

关于移动设备的CSS问题,

我的网站上有一个1260像素宽的图像,当我在手机上查看它时,它将退出网站,因为网站的其余部分基于960px布局。

我已经为移动设备制作了这些960px宽的图像,但我如何在css中指定它是否是移动使用移动优化图像而不是常规网站上的图像。

所以基本上如果用户在桌面计算机上访问该网站,它将显示1260px图像

如果他们在手机上访问该网站,则会显示960px图片

任何想法的人?

3 个答案:

答案 0 :(得分:17)

我不确定你是否想要JS,我决定回答你的问题,如果你想要CSS3,试试这个:

HTML:

<img src="image.jpg"
     data-src-960px="image-960px.jpg"
     data-src-1260px="image-1260px.jpg"
     alt="">

CSS:

 @media (min-device-width:320px) {
        img[data-src-960px] {
            content: attr(data-src-960px, url);
        }
    }

    @media (min-device-width:960px) {
        img[data-src-1260px] {
            content: attr(data-src-1260px, url);
        }
    }

jQuery版本:

 $(document).ready(function() {

 function imageresize() {
 var contentwidth = $('#content').width();
 if ((contentwidth) < '960'){
 $('.imageclass').attr('src','image-960px.jpg');
 } else {
 $('.imageclass').attr('src','image-1260px.jpg');
 }
 }

 imageresize();//Activates when document first loads    

 $(window).bind("resize", function(){
 imageresize();
 });

 });

答案 1 :(得分:4)

受到Ivan的回答的启发,这是一个jQuery版本,它使用媒体查询尽可能接近他的CSS3解决方案(在Firefox 31和Safari 7中对我不起作用):< / p>

$(document).ready(function() {
    var mqsmall = "(min-device-width:320px)";
    var mqbig   = "(min-device-width:960px)";
    function imageresize() {
        if(window.matchMedia(mqbig).matches) {
            $('img[data-src-1260px]').each(function () {
                $(this).attr('src',$(this).attr('data-src-1260px'));
            });
        }
        else if(window.matchMedia(mqsmall).matches) {
            $('img[data-src-960px]').each(function () {
                $(this).attr('src',$(this).attr('data-src-960px'));
            });
        }
    }

    imageresize();

    $(window).bind("resize", function() {
        imageresize();
    });
});

答案 2 :(得分:2)