【问题标题】:Are my images being loaded on Mobile? [duplicate]我的图像是否正在加载到移动设备上? [复制]
【发布时间】:2017-05-25 23:57:14
【问题描述】:

在我的网页上,我有一个使用以下 CSSHTML 代码的轮播。

即使我将背景设置为display:none,当其宽度低于 600 像素时,我的移动浏览器是否仍会加载这些图像并占用带宽?


CSS:

.item1 {
    background-image: url('/wp-content/uploads/2016/11/1.jpg')
}
.item2 {
    background-image: url('/wp-content/uploads/2016/10/6.jpg')
}
.item3 {
    background-image: url('/wp-content/uploads/2016/10/5.jpg')
}
.item4 {
    background-image: url('/wp-content/uploads/2016/10/3.jpg')
}
.item5 {
    background-image: url('/wp-content/uploads/2016/10/2.jpg')
}
.item6 {
    background-image: url('/wp-content/uploads/2016/10/1.jpg')
}
@media all and (max-width: 600px) {
    .item, .item1, .item2, .item3, .item4, .item5, .item6, #myCarousel4, #myCarousel 4 div {
        display: none
    }
}

HTML:

<div class="carousel slide" id="myCarousel4">
<div class="carousel-inner">
<div class="item item1 active">
	<div class="container">
		<div class="carousel-caption"></div>
	</div>
</div>
<div class="item item2">
	<img class="img-responsive">
	<div class="container">
		<div class="carousel-caption"></div>
	</div>
</div>
<div class="item item3">
	<img class="img-responsive">
	<div class="container">
		<div class="carousel-caption"></div>
	</div>
</div>
<div class="item item4">
	<img class="img-responsive">
	<div class="container">
		<div class="carousel-caption"></div>
	</div>
</div>
<div class="item item5">
	<img class="img-responsive">
	<div class="container">
		<div class="carousel-caption"></div>
	</div>
</div>
<div class="item item6">
	<img class="img-responsive">
	<div class="container">
		<div class="carousel-caption"></div>
	</div>
</div>
</div>
<a class="left carousel-control" data-slide="prev" href="#myCarousel4">
	<i class="glyphicon glyphicon-chevron-left"></i>
</a> 
<a class="right carousel-control" data-slide="next" href="#myCarousel4">
	<i class="glyphicon glyphicon-chevron-right"></i>
</a>
</div>

演示https://jsfiddle.net/xetvLk6w/

【问题讨论】:

    标签: html css responsive-design


    【解决方案1】:

    是的。只要您的图像位于“/wp-content/uploads/2016/10/1.jpg”目录中。

    您在“root”文件夹中的服务器上发布您的网站,那里有“index.html”和文件夹结构:“root/wp-content/uploads/...”。

    因此,无论您在何处打开您的网站,它都会查找目录并找到并加载您的图片。

    编辑 当您的显示宽度低于 600 像素时,将不会显示图像。对于更智能的 CSS,您可以使用

    @media (max-width: 600px) {
        .item { 
            display: none;
        }
    }
    

    这将隐藏每个具有“item”类的 div,所有 div 都包含在示例中。

    【讨论】:

    • 酷!因此,如果我在手机上,它不会加载图像,因为我已将其设置为 display:none 还是仍会加载它们?
    • @michaelmcgurk 您的媒体查询似乎没有触发,您是否已将此元标记添加到您的标题中? &lt;meta name="viewport" content="width=device-width, initial-scale=1"&gt;
    • 我什至没有举个例子:-?我不知道你想问我什么:-(@NeelamKhan
    • 你已经用你的代码示例@DominikNoll回答了这个问题,原始问题中媒体查询中的样式是错误的,这就是我想说的。
    【解决方案2】:

    display: none 帮不了你。

    为了可读性,我将“默认”(移动优先)css 放在顶部:

    .item1 {
      background-image: none;
    }
    
    ...
    
    /*note min and em */
    @media all and (min-width: 40em) {
      background-image: url('bla.jpg');
    }
    

    【讨论】:

    • 我确实想知道这会产生多大的影响 - 所以在这样做时首先使用移动设备更有意义?
    • 移动优先是RWD中的基本原则之一。
    • “移动优先是 RWD 的基本原则之一” - 可以说 ;-)
    • @michaelmcgurk ,我无法解析您评论中的讽刺意味,但没关系。 :) 然而,bootstrap、foundation 和 pureio(我最喜欢的)都按升序使用 min-width。
    【解决方案3】:

    这里已经回答了一个类似的问题:Does "display:none" prevent an image from loading?

    据说

    浏览器变得越来越智能。今天您的浏览器(取决于 版本)可能会跳过图像加载,如果它可以确定它不是 有用。

    这真的取决于您的浏览器。有些会加载图像,有些则不会,正如对上述帖子的回答所述:https://stackoverflow.com/a/22970996/2700042

    这些是上面链接的答案中讨论的基本发现

    所以在进一步挖掘之后,我发现了这个,它解释了每个浏览器如何 处理基于 css display: none 的加载 img 资源;

    摘自blog post

    Chrome 和 Safari (WebKit):WebKit 每次都会下载文件 除非通过非匹配应用背景 媒体查询。

    Firefox:Firefox 不会下载调用的图像 如果样式被隐藏但仍会下载,则为背景图像 来自 img 标签的资产。

    Opera:与 Firefox 一样,Opera 无法加载 无用的背景图片。

    Internet Explorer:IE,就像 WebKit 一样 下载背景图片,即使它们有 display: none;

    IE6 出现了一些奇怪的东西:带有背景图像和显示的元素: none set inline 不会被下载......但如果那些 样式不会内联应用。

    【讨论】:

      猜你喜欢
      • 2013-09-22
      • 1970-01-01
      • 2016-05-31
      • 2017-08-14
      • 2016-03-08
      • 2021-03-31
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      相关资源
      最近更新 更多