【问题标题】:Not loading a image with display:none不使用显示加载图像:无
【发布时间】:2016-10-25 01:25:24
【问题描述】:

我不想在移动设备上加载图像,只在桌面上加载。
我编写以下代码:
CSS

@media only screen and (max-width: 480px) {
div#line1 {display: none}
}

HTML

<div id="line1" style=" background-image:url(/background.jpg);">
<img src="/head.jpg" />
</div>

图片background.jpg没有加载,但是图片head.jpg
如果我添加

div#line1 img {display: none} // for < 480 px

一样。图片 head.jpg 正在小分辨率屏幕上加载。
如何防止加载 head.jpg 以节省带宽?

PS:我在 Chrome 浏览器上测试过

【问题讨论】:

  • 您是在寻找纯 css 解决方案,还是 JavaScript 可以接受? (如果 JavaScript 可以接受,是 jQuery 吗?)
  • @alexanderbird 我需要一个纯 CSS 解决方案。
  • 有什么问题?图像正在显示在移动设备中?你能详细说明一下吗?
  • Css 属性 "display: none" 根本不会节省带宽,只是隐藏内容。父背景应该尽可能小,然后您可以将 srcset 与 head.jpg 图像一起使用,并提供更合理的东西......请参阅这篇文章:sitepoint.com/how-to-build-responsive-images-with-srcset
  • 查看此链接。可能有帮助:stackoverflow.com/questions/12158540/…

标签: html css media-queries


【解决方案1】:

您可以查看 setting the image source in css,并将该 css 放入媒体查询中。

在 html 中,没有任何图像源,那么你的 css 将是这样的 - 只为非移动设备设置源:

@media (min-width: 480px) {
    div#line1 img { 
        content: url("/head.jpg");
    }
}

您可能需要稍微摆弄一下才能使其正常工作。

另外,您真的应该看看链接的问题 - 有很多关于使用此方法的后果的讨论 - 以及很多不应该使用它的情况。

【讨论】:

    【解决方案2】:

    如果可以选择修改标记,则只需将 &lt;img /&gt; 标记替换为等效的 &lt;div&gt; 并设置 background-image,就像使用 #line1 元素一样。

    <div id="line1" style=" background-image:url(/background.jpg);">
      <div class="inner-image></div>
    </div>
    

    或者您使用&lt;picture&gt; 元素并使用您的max-width 条件设置适当的来源:

    <picture>
      <source srcset="/head.jpg" media="(max-width: 480px)">
      <img src="/dummy-image.jpg" />
    </picture>
    

    【讨论】:

    • inner-div 是我的第一个想法,但图像标有 schema.org。 我将测试,但内部 标签看起来像同样的问题。 是后备。
    • 是的,你是对的,&lt;img&gt; 是后备方案,它只是使用虚拟图像的一种解决方法...
    【解决方案3】:

    您需要做的就是添加一个min-height 与您的背景图像的高度。当你隐藏一个子元素时,父元素的高度(在本例中为 div#bg)会更新为内部最高的元素,因此如果没有元素,则高度为 0(零)

    @media only screen and (max-width: 480px) {
      img#head {display: none}
      div#bg {min-height: 150px;}
    }
    <div id="bg" style="background-image:url(http://placehold.it/350x150?text=bg); background-repeat:no-repeat;">
      <img id="head" src="http://placehold.it/350x150?text=head" />
    </div>

    【讨论】:

    • 谢谢,但这就是我想要的。 DIV 和图像应该是 0px 高。在这个 DIV 之后还有其他 DIV 在低屏幕上显示图像。在usa-reisetipps.net 上,您可以看到我的意思的标题图片。但感谢这个提示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多