如何根据窗口大小替换img

时间:2015-08-31 17:45:25

标签: javascript jquery image

我正在尝试根据窗口大小替换img src。这不是background-image。对于移动尺寸,我的图像需要是不同的颜色/图像,然后是更大的屏幕。使用css很容易改变图像的大小,但我认为我需要使用Jquery来替换图像src,但还是无法弄清楚它。有什么指针吗?

这是我的HTML

<a href="" class="logo">
   <img id="brand" src="assets/img/image.png" alt="Image">
</a>

这是我的js

$(document).ready(function(){

    var windowSize = $( window ).width();
    if (windowSize  < 400 ) { $('#brand').attr('src', 'assets/img/logo-2.png')};

});

所有这些似乎都是在加载img src时改变窗口大小或调整窗口大小。

- 编辑 - 表格humbolight

$(function(){
  var $window = $(window);
  var toggleImage = function toggleImage($el, src){
    $el.attr('src',src);
  };

  $window.on('resize',function(){
    if ($window.width() < 385){
      //mobile
      toggleImage($('#brand'),'assets/img/image.png');
    } else {
      //landscape tablet/desktop
      toggleImage($('#brand'),'assets/img/logo-2.png');
    }
  });

});

1 个答案:

答案 0 :(得分:0)

您要完成的操作需要在窗口元素上侦听resize事件并根据更改的宽度更改src(预加载图像不会受到影响):

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<img id="two_size_img" src="img@1x.png" />
$(function () {
    $('#container').highcharts({
        chart: {
        backgroundColor: '#FCFFC5',
        type: 'line'
    },
    xAxis: {
        categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    },
    yAxis: {
    },
    legend: {
        layout: 'vertical',
        backgroundColor: '#FFFFFF',
        floating: true,
        align: 'left',
        x: 100,
        verticalAlign: 'top',
        y: 70
    },
    tooltip: {
        formatter: function () {
            return '<b>' + this.series.name + '</b><br/>' +
                this.x + ': ' + this.y;
        }
    },
    plotOptions: {
    },
    series: [{
        data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
    }]
});
});

为了达到同样的目的,我倾向于切换背景图像,完全用CSS处理,或类似地,渲染两个元素(每个图像需要一个图像)并显示/隐藏所需图像 - 再次完全使用CSS