bnomei / kirby3-srcset
Kirby 3 插件,用于创建懒加载图像 srcset
Requires
- php: >=7.2.0
- getkirby/composer-installer: ^1.2
Requires (Dev)
- getkirby/cms: ^3.5
- php-coveralls/php-coveralls: ^2.1
- phpunit/phpunit: ^9.5
Suggests
- bnomei/kirby3-thumb-imageoptim: Thumb driver component to automatically optimize images with the ImageOptim API (paid account required).
- dev-master
- 3.3.12
- 3.3.11
- 3.3.10
- 3.3.9
- 3.3.8
- 3.3.7
- 3.3.6
- 3.3.5
- 3.3.4
- 3.3.3
- 3.3.2
- 3.3.1
- 3.3.0
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.5
- 3.1.4
- 3.1.3
- 3.1.2
- 3.1.1
- 3.1.0
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 2.1.1
- 2.0.1
- 2.0.0
- 1.4.0
- 1.3.1
- 1.3.0
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.0
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.3
- 1.0.2
- 1.0.1
- dev-dependabot/composer/getkirby/cms-3.5.8
- dev-dependabot/npm_and_yarn/ws-5.2.3
- dev-dependabot/npm_and_yarn/path-parse-1.0.7
- dev-dev
This package is auto-updated.
Last update: 2022-03-12 20:27:18 UTC
README
由于 Kirb3.6 引入了对 WebP & AVIF 图像的支持,并且现代浏览器很好地支持 lazy-attribute,因此我认为这个插件已经过时。因此,我将不再继续开发它。
Kirby 3 Srcset
Kirby 3 插件,用于创建懒加载图像 srcset
此插件扩展了核心 (image: )
- Kirby 标签。所有适用于 (image: )
的参数都可以与 (lazysrcset: )
一起使用,以产生相同的结果。默认情况下,插件会添加以下内容
lazyloading
类到 img 元素- 基于标签参数
width, height, quality
的data-src
图像。这取代了src
属性。 - 带有由 Kirby 核心方法
$file->srcset()
生成的 srcsets 的data-srcset
属性 data-sizes="auto"
属性data-thumb-srcset
属性,将 srcset 数组作为 json 打印出来(仅当调试时)- 带有图像与
img
元素的父元素的比率data-ratio
属性 - 它注册了一个自定义的 markdown 组件,因为需要包装和展开 markdown。
目录
商业用途
支持开源!
此插件是免费的,但如果您将其用于商业项目,请考虑赞助我或捐款。
如果我的工作帮助您赚了一些钱,那么我认为我可能也应该得到一些回报,对吧?
行善。分享一点。谢谢。
- Bruno
M | O | N | E | Y |
---|---|---|---|---|
Github 赞助 | Patreon | 买我一杯咖啡 | Paypal 捐款 | 使用此联盟链接购买 Kirby 许可证 |
安装
- 将 master.zip 解压为文件夹
site/plugins/kirby3-srcset
或 git submodule add https://github.com/bnomei/kirby3-srcset.git site/plugins/kirby3-srcset
或composer require bnomei/kirby3-srcset
使用 Kirby 标签
image | lazysrcset |
---|---|
alt, caption, class, height, imgclass, link, linkclass, rel, target, text, title, width | sizes, lazy, prefix, autosizes, quality, figure |
# like image tag
(image: myfile.jpg)
(lazysrcset: myfile.jpg)
(lazysrcset: myfile.jpg link: mypdf.pdf)
(lazysrcset: myfile.jpg class: myclass)
# changing width, height and/or quality of src (not srcset)
(lazysrcset: myfile.jpg width: 640 height: 480 quality: 70)
# different lazy class
(lazysrcset: myfile.jpg lazy: lazy)
# different or no prefix
(lazysrcset: myfile.jpg prefix: )
# remove wrapping figure element
(lazysrcset: myfile.jpg figure: false)
# remove the ratio information
(lazysrcset: myfile.jpg ratio: false)
# sizes from config
(lazysrcset: myfile.jpg sizes: default)
(lazysrcset: myfile.jpg sizes: breakpoints)
# sizes are supported in various formats
# string, number(s), with and without px, comma and brackets
(lazysrcset: myfile.jpg sizes: 320 640 960)
(lazysrcset: myfile.jpg sizes: [320, 640, 960])
(lazysrcset: myfile.jpg sizes: 320px, 640px, 960px)
使用编辑块
特别允许插件块
当您在编辑器字段中特定地定义允许哪些块时,您需要添加类似这样的插件块
fields: text: label: Editor type: editor allowed: - h1 - paragraph - srcset # matches name of plugin
PHP 使用方法
echo $page->image('ukulele.jpg')->lazysrcset(); // 320 and 1200 echo $page->image('ukulele.jpg')->lazysrcset('default'); // 576, 768, 992, 1200 echo $page->image('ukulele.jpg')->lazysrcset('breakpoints'); // 320, 640, 960 echo $page->image('ukulele.jpg')->lazysrcset(['sizes' => [320, 640, 960]]); // other options echo $page->image('ukulele.jpg')->lazysrcset([ // lazysrcset 'sizes' => [320, 640, 960], 'lazy' => 'lazyloading-with-flickity', 'prefix' => 'data-flickity-lazyload-', 'figure' => false, 'autosizes' => false, // image 'width' => 640, 'height' => 480, // ... ]);
设置
配置
您需要定义srcsets。插件将使用这些以及核心$file->srcset()
函数。
/site/config/config.php
return [ 'thumbs' => [ 'srcsets' => [ 'default' => [320, 1200], 'breakpoints' => [576, 768, 992, 1200], ], ], ];
JS
将aFarkas/lazysizes添加到您的js依赖中,并阅读文档。您也可以通过在设置中稍作调整使用lozad.js。
自动大小检测的最小CSS
您需要一些CSS来使lazysizes库自动大小检测工作。
figure { width: 100%; } img[data-sizes="auto"] { display: block; width: 100%; }
重要:CSS必须在JS执行之前应用到DOM上。确保顺序正确且它们不是异步应用的。使用像muicss/loadjs这样的库,您可以异步加载它们并按正确顺序应用。否则,您将面临首次加载时图像模糊的问题。
提示图像比例的CSS
默认情况下,插件会提示图像比例以最小化回流并避免页面跳动。您只需将以下CSS添加到代码库中。
提示:如果您将
ratio
设置为一个不同的字符串,则可以使用不同的类名。如果您将ratio
或figure
设置为false
,则比例提示将消失。
CSS
/* class name must matches the value of `ratio` setting. */ .lazysrcset-ratio { position: relative; } .lazysrcset-ratio > img { display: block; width: 100%; height: 100%; position: absolute; top: 0; left: 0; } .lazysrcset-ratio > img:after { display: block; width: 100%; height: 0; content: ''; }
tailwind.css
.lazysrcset-ratio { @apply relative; & > img { @apply absolute top-0 left-0 w-full h-full block; &:after { content: ''; @apply block h-0 w-full; } } }
每个figure元素将被一个定义比例的style元素前缀。例如,具有16/9比例的图像及其figure image
元素的CSS样式如下
无figcaption: figure > img
<style>.lazysrcset-ratio[data-ratio="56.25"]{padding-bottom:56.25%;}</style><figure data-ratio="56.25" class="lazysrcset-ratio"><!--- image tag with srcset --></figure>
有figcaption: figure > ((div > img) + figcaption)
<style>.lazysrcset-ratio[data-ratio="56.25"]{padding-bottom:56.25%;}</style><figure><div data-ratio="56.25" class="lazysrcset-ratio"><!--- image tag with srcset --></div><figcaption>with caption</figcaption></figure>
使用nonce
您可以使用选项设置自定义nonce或安装安全头部插件。
<style nonce="A-NONCE-HERE">...
设置
bnomei.srcset. | 默认 | 描述 |
---|---|---|
lazy | lazyload |
布尔或字符串。imgclass参数的额外类 |
prefix | data- |
布尔或字符串。在懒加载srcset和src之前的前缀 |
autosizes | auto |
布尔或字符串。与data-sizes 属性相关 |
figure | true |
布尔。在figure中包裹图像或否 |
ratio | lazysrcset-ratio |
布尔或字符串。向img 的父元素添加data-ratio |
nonce | null |
null、字符串或回调。默认nonce用于style元素 |
常见问题解答
- 插件会覆盖
(image: )
-Kirbytag吗?不会,它永远不会。 - 为什么没有包括懒加载的JavaScript库?因为那应该是网站构建链的一部分。
- 支持IE11吗?您需要使用一个图片Polyfill。
- 为什么没有
sizes
属性?因为它没有被定义,因为js库lazysizes可以根据实际屏幕大小动态创建这些属性。查看autosizes
设置。 - 使用Flickity进行懒加载?请使用
'prefix' => 'data-flickity-lazyload-'
。 - 图片元素支持在哪里?这个插件v2.x.x版本可以处理图片元素。我已经移除了这一功能,转而关注更好的kribytag和懒加载,以简化插件。
兼容性良好
- 缩略图Imageoptim插件需要付费账户。
免责声明
本插件提供“原样”使用,不提供任何保证。请在使用前自行测试,并在生产环境中使用时自行承担风险。如果您发现任何问题,请创建一个新问题。
许可证
不建议在任何宣传种族主义、性别歧视、同性恋恐惧症、动物虐待、暴力或其他任何形式的仇恨言论的项目中使用此插件。