Bootstrap根据设备更改图像

时间:2014-08-25 09:26:08

标签: twitter-bootstrap-3

我想在不同的设备中显示不同的图像(不是背景图像)。是否可以使用bootstrap 3.x,如下所示?

适用于大屏幕

<img src="large-image.jpg" />

用于中型设备

<img src="medium-image.jpg" />

用于小型设备

<img src="small-image.jpg" />

等等。

提前致谢。

N.B。最后,我自己找到了一个很好的解决方案。请参阅下面接受的答案。

4 个答案:

答案 0 :(得分:11)

试试这个:

<div class="row">
    <div class="col-xs-12 hidden-sm hidden-md hidden-lg">  
        <img class="img-responsive" src="layouts/layouts.PNG" />    <!--Mobile-->
    </div>
    <div class="hidden-xs col-sm-12 hidden-md hidden-lg">
        <img class="img-responsive" src="layouts/05.png" />   <!--Tab-->
    </div>
    <div class="hidden-xs hidden-sm col-md-12 hidden-lg">
        <img class="img-responsive" src="layouts/06.png" />   <!--Desktop-->
    </div>
    <div class="hidden-xs hidden-sm hidden-md col-lg-12">
        <img class="img-responsive" src="layouts/Layout_100.png" />  <!--Large-->
    </div>
</div>

希望这可能有用!!

答案 1 :(得分:5)

在@ EIChapo对这个2年前问题的评论之后,我已经搜索并阅读了很多关于这个解决方案的文章。当我发布这个答案时,除了IE supports <picture> tag之外的所有现代浏览器。有一个基于Dave Newton article的防弹解决方案。

我们需要做的是:

<picture alt="fancy pants">
    <!-- loaded by browsers that support picture and that support one of the sources -->
    <source srcset="big.jpg 1x, big-2x.jpg 2x, big-3x.jpg" type="image/jpeg" media="(min-width: 40em)" />
    <source srcset="med.jpg 1x, med-2x.jpg 2x, big-3x.jpg" type="image/jpeg" />

    <!-- loaded by IE 8+, non-IE browsers that don’t support picture, and browsers that support picture but cannot find an appropriate source -->
    <![if gte IE 8]>
    <object data="fallback.jpg" type="image/jpeg"></object>
    <span class="fake-alt">fancy pants</span>
    <![endif]>

    <!-- loaded by IE 6 and 7 -->
    <!--[if lt IE 8]>
    <img src="fallback.jpg" alt="fancy pants" />
    <![endif]-->
</picture>

.fake-alt {
    border: 0;
    clip: rect(0 0 0 0);
    height: 1px;
    margin: -1px;
    overflow: hidden;
    padding: 0;
    position: absolute;
    width: 1px;
}

答案 2 :(得分:4)

使用<img>标记,并在srcset属性

中提供其他图片
<img src="small.jpg" srcset="medium.jpg 1000w, large.jpg 2000w" alt="yah">

这里详细描述:

https://css-tricks.com/responsive-images-youre-just-changing-resolutions-use-srcset/

答案 3 :(得分:3)

如果您只想加载与屏幕尺寸相关的图像,我认为最好的方法是使用javascript。创建照片版本,在这种情况下,脚本会在文件名中查找img "600x400",并在屏幕尺寸大于767px时将其替换为"1200x800"

DEMO:http://www.bootply.com/Y8XECJpGjS#

的Javascript

if ($(window).width() > 767) {
    $("img[src$='600x400']").each(function() {
        var new_src = $(this).attr("src").replace('600x400', '1200x800'); 
        $(this).attr("src", new_src); 
    });
}

HTML

<div class="thumbnail">
  <img src="//placehold.it/600x400">
</div>

注意:此示例使用placehold.it图像,但显然您将创建自己的图像版本,包含在文件名中标识它们的内容(即600px,small,v1等),然后使用该唯一字符串作为在脚本中查找/替换字符串。即如果您的文件名为photo-small.jpgphoto-mediumd.jpgphoto-large.jpg,则脚本会查找“小”,并在适当时替换为“中”或“大”。

注意:一旦图像加载,就是这样 - 当你更改屏幕尺寸时,它不会动态地改变图像。肯定有一个解决方案可以做到这一点,但如果不需要就会过度杀伤。