当前位置: 首页 > 面试题库 >

不要加载隐藏的图像

钱元徽
2023-03-14
问题内容

我的网站上有一堆隐藏图像。他们的容器DIV具有style =“
display:none”。根据用户的操作,某些图像可能会通过javascript显示。问题是打开页面时我的所有图像都被加载了。我想通过仅加载最终变得可见的图像来减轻服务器的负担。我想知道是否有一种纯CSS方式来做到这一点。这是我目前正在使用的两种hacky
/复杂方法。如您所见,这不是干净的代码。

<div id="hiddenDiv">
   <img src="spacer.gif" />
</div>

.reveal .img {
 background-image: url(flower.png);
}

$('hiddenDiv').addClassName('reveal');

这是方法2:

<img id="flower" fakeSrc="flower.png" />

function revealImage(id) {
 $('id').writeAttribute(
  'src',
  $('id').readAttribute('fakeSrc')
 );
}

revealImage('flower');

问题答案:

这是一个jQuery解决方案:

$(function () {
   $("img").not(":visible").each(function () {
       $(this).data("src", this.src);
       this.src = "";
   });

   var reveal = function (selector) {
       var img = $(selector);
       img[0].src = img.data("src");
   }
});

它与您的解决方案相似,不同之处在于它不使用fakeSrc标记中的属性。它清除该src属性以阻止其加载并将其存储在其他位置。一旦准备好显示图像,就可以reveal像在解决方案中一样使用该功能。抱歉,如果您不使用jQuery,但是该过程应该可以转移到您使用的任何框架(如果有)。

注意:必须在窗口触发load事件之前但在加载DOM之后运行此代码



 类似资料:
  • Since 8.0 hideLoading 隐藏全局大菊花 使用方法 AlipayJSBridge.call('hideLoading'); 代码演示 显示/隐藏全局loading框 <h1>点击以下按钮看不同效果</h1> <p>注意安卓下显示loading后,会覆盖整个界面,所以请使用系统回退键关闭loading</p> <button class="btn show">显示loading<

  • ap.hideNavigationBarLoading() 隐藏导航栏加载图标。 代码示例 <script src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.inc.min.js"></script> <button class="btn btn-default">showNavigationB

  • ap.hideLoading() 隐藏加载提示。 代码示例 <script src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.inc.min.js"></script> <button class="btn btn-default">showLoading</button> <script>

  • 我使用了“arFragment.getArSceneView.getScene().setOnUpdateListener”。每当我实现我自己的“setOnUpdateListener”时,我都能够显示我的菜单,但这个加载图像不会隐藏。此图像仅在我未实现updateListener时自动隐藏。这是活动_main的片段。来自MainActivity的xml和侦听器。JAVA

  • Since 8.6 hideTitleLoading 隐藏标题栏loading 使用方法 AlipayJSBridge.call('hideTitleLoading'); 代码演示 显示/隐藏全局loading框 <h1>点击下面按钮查看效果</h1> <a href="javascript:void(0)" class="btn show">显示loading</a> <a href="jav

  • 问题:如果距离为空/null,我试图隐藏一个值。 我尝试了以下操作,但该值仍在显示: 和 什么是实现我所期待的正确方法。 以下是我在coldfusion中定义距离的方式: 当我做以下建议时: ng-show="e.distance===未定义" 当我执行其他建议时,例如ng hide=“e.distance”, 以下是提供商包含的内容: