Troy-Yang / hexo-lazyload-image

lazyload image plugin for Hexo.
https://www.npmjs.com/package/hexo-lazyload-image
MIT License
82 stars 10 forks source link

几个功能增强建议 #39

Closed appotry closed 2 years ago

appotry commented 2 years ago

1. 支持div 的style background

在html文件中的

<div class="ajustedBackground"  style="background-image: url('loading-image');"><div>

这个插件实现了这个功能,hexo-filter-lqip,可以参考实现

2. 支持在css文件中的图片

div.waline {
    background: url("/medias_webp/loading.svg") 100% 100% no-repeat; /* Placeholder image */
}

3 支持获取占位图片的宽高

没有宽高,可用,但存在一些问题

  • 没有宽高,一些性能测试工具会报错
  • lazyload显示前后文章宽高会跳动

3.1 本地图片

直接获取图片宽高

3.2 网络图片

方法1 可以缓存到本地目录来获取宽高

这个插件实现了这个功能 hexo-native-lazy-load

方法2 链接路径映射到目录路径

如果是github仓库的图片 本地clone仓库目录和网页链接之间做一个映射,那么就不需要再次下载图片来获取宽高了

Troy-Yang commented 2 years ago

Good suggestion! 抽空看看

appotry commented 2 years ago

iframe的lazyload

vanilla-lazyload 这个库支持

Troy-Yang commented 2 years ago

css 和 html 背景图片的问题已经支持上了,用法是需要加上 bg-lazy 属性:

<div bg-lazy style="background-image: url('https://ik.imagekit.io/demo/img/image10.jpeg?tr=w-600,h-400'); height: 400px; max-width: 600px;"></div>

对于#3 的LQIP, 其实组件已经支持,只是没有那么自动化的支持,原因有几个:

<img src="https://ik.imagekit.io/demo/img/image4.jpeg?tr=w-400,h-300,bl-30,q-50" data-original="https://ik.imagekit.io/demo/img/image4.jpeg?tr=w-400,h-300" />

image

至于iframe, 不准备支持,不想太过复杂化

appotry commented 2 years ago
<div bg-lazy style="background-image: url('https://ik.imagekit.io/demo/img/image10.jpeg?tr=w-600,h-400'); height: 400px; max-width: 600px;"></div>

这种生成出来的效果没有占位图? 测试看着是空白背景,然后显示出来图片

appotry commented 2 years ago

@Troy-Yang 这里加一个占位图比较好 https://github.com/Troy-Yang/hexo-lazyload-image/blob/729a64975800e29f7408ffa7687895bc6c72b33f/lib/addscripts.js#L12

Troy-Yang commented 2 years ago

占位图没办法固定大小,如果你们确实需要,可考虑全局css 覆盖

[bg-lazy] {
  width: 300px;
  height: 600px;
}