阿狸141 2023-06-15 10:23 采纳率: 0%
浏览 20

HTML的object标签 预加载问题

以下代码,会加载2张图片,object一次,picture一次
如何修改,才能只加载一次

  <object data="https://www.404z.cn/images/about.svg" style="max-width:100%;">
    <picture>
      <source media="(prefers-color-scheme: dark)" srcset="https://www.404z.cn/images/about.dark.svg">
      <img alt="About" src="https://www.404z.cn/images/about.light.svg">
    </picture>
  </object>

为什么要这样写,想实现在md文档中嵌入带夜间模式的svg图片
about.svg可以实现夜间模式切换,但是在img标签中无效
如果不支持object标签,再加载内部内容

  • 写回答

1条回答 默认 最新

  • 玥轩_521 2023-06-15 10:57
    关注

    要让这段代码只加载一次,可以将 object 标签和 picture 标签改为 img 标签,并通过 data-srcsrcset 属性分别指定图片的地址和多种图片环境下的地址,这样在加载时就会根据不同环境选择相应的图片,并不会重复加载两次。

    修改后的代码如下所示:

    <img alt="About" data-src="https://www.404z.cn/images/about.svg" 
      srcset="https://www.404z.cn/images/about.dark.svg" media="(prefers-color-scheme: dark)">
    <img alt="About" data-src="https://www.404z.cn/images/about.svg" 
      srcset="https://www.404z.cn/images/about.light.svg" media="(prefers-color-scheme: light)">
    

    需要注意的是,现代浏览器已经可以自动识别 prefers-color-scheme 属性,因此无需使用 picture 标签进行判断,在 img 标签的 srcset 属性中直接指定对应方法即可。同时,也可以将 data-src 属性改为 src,这样直接加载图片而不等到 DOM 加载完成时再加载。

    评论

报告相同问题?

问题事件

  • 创建了问题 6月15日

悬赏问题

  • ¥15 maven打包时,为什么有的依赖打不进去包
  • ¥15 求复现机器学习文章一篇
  • ¥15 爬虫抓取数据|解析视频文本内容(相关搜索:自动化)
  • ¥15 combobox绑定值改变的问题
  • ¥15 from seleniumwire import webdriver 在抓取http://链接的时候会自动转https://这个怎么解决
  • ¥15 hive直连数据库模式插入mysql表数据失败(相关搜索:数据库)
  • ¥30 不会,学习,有偿解答
  • ¥15 SQL查询语句报错(检查)
  • ¥15 此表中公式应该怎么写
  • ¥15 求HI-TECH PICC 9.50 PL3安装包