blackbird/hyva-splide-js

Hyvä Theme for Magento 2 中的 SplideJS 库实现

安装次数: 4,382

依赖项: 0

建议者: 0

安全性: 0

星标: 19

关注者: 1

分支: 1

开放性问题: 0

语言:HTML

类型:magento2-module

2.0.1 2023-09-27 08:53 UTC

This package is auto-updated.

Last update: 2024-08-27 10:45:47 UTC


README

hyva-splide-js

Latest Stable Version SplideJS Version License: MIT

SplideJS 库 中实现,适用于 Hyvä Theme for Magento 2

您不再需要担心如何在您的 Magento 2 Hyvä Theme 项目中实现 SplideJS。
无需任何操作,安装后即可立即使用。

Splide 是按需加载的,不会影响性能,请参阅 Hyvä 文档

工作原理安装使用更多模块

工作原理

该模块会在所有至少包含一个具有 CSS 类 splide(SplideJS 所需的类)的 DOM 元素的页面上简单地加载 SplideJS
(该类由 SplideJS 需要)。

当库加载到页面上时,存储在 Alpine.store 中的状态会更新,表明 SplideJS 已准备好使用。

该状态也可以用于在任何时候强制加载库,以下是一个使用 forceLoad() 的示例

安装

要求

composer require blackbird/hyva-splide-js
php bin/magento setup:upgrade

在生产模式下,不要忘记重新编译和重新部署静态资源。

使用

安装模块后,只需添加创建滑块所需的 HTML 代码,如 SplideJS 文档 中所述

<section class="splide" id="my-slider">
  <div class="splide__track">
    <ul class="splide__list">
      <li class="splide__slide">Slide 01</li>
      <li class="splide__slide">Slide 02</li>
      <li class="splide__slide">Slide 03</li>
    </ul>
  </div>
</section>

接下来,创建一个函数来监听 Alpine.store 状态 is_loading,表示 SplideJS 已加载,并将 Splide 应用于 HTML 元素,如 SplideJS 文档 中所述。

<?php
use \Blackbird\HyvaSplideJs\Api\HyvaSplideJSInterface;
?>
<script>
    function myXData () {
        return {
            initSlider() {
                if (Alpine.store('<?= HyvaSplideJSInterface::HYVA_SPLIDE_JS ?>').is_loaded) {
                    new Splide('#my-slider', {
                        ...options
                    }).mount();
                }
            }
        }
     }
</script>

您可以根据需要指定 SplideJS 的任何选项,如此处 所示

最后,设置 x-data 指令,并不要忘记在一个 x-effect 中调用先前的函数,以防止在库加载之前应用 Splide,并在库加载时自动应用它。

<section class="splide" id="my-slider" x-data="myXData()" x-effect="initSlider">
  ...
</section>

完整示例

<?php
use \Blackbird\HyvaSplideJs\Api\HyvaSplideJSInterface;
?>
<section class="splide" id="my-slider" x-data="myXData()" x-effect="initSlider">
  <div class="splide__track">
    <ul class="splide__list">
      <li class="splide__slide">Slide 01</li>
      <li class="splide__slide">Slide 02</li>
      <li class="splide__slide">Slide 03</li>
    </ul>
  </div>
</section>
<script>
    function myXData () {
        return {
            initSlider() {
                if (Alpine.store('<?= HyvaSplideJSInterface::HYVA_SPLIDE_JS ?>').is_loaded) {
                    new Splide('#my-slider', {
                        ...options
                    }).mount();
                }
            }
        }
     }
</script>

您可以根据需要指定 SplideJS 的任何选项,如此处 所示

示例:使用 forceLoad()

想象以下情况:您的 DOM 中没有具有默认 splide 类的元素,并且当用户操作触发时,您想使用 SplideJS 添加滑块。

在这种情况下,Splide 默认不会加载到页面上,您必须明确请求加载 Splide。

Alpine.store('<?= HyvaSplideJSInterface::HYVA_SPLIDE_JS ?>').forceLoad()

或者

$store.<?= HyvaSplideJSInterface::HYVA_SPLIDE_JS ?>.forceLoad()

要了解确切使用哪个,请参阅 Alpine 的官方文档中的 $storeAlpine.store

这将强制库在页面上加载,即使没有元素有 splide 类。然后您可以遵循经典的 使用方法 程序来应用 Splide。

更多模块

hyva-photo-swipe : Hyvä Theme for Magento 2 的 PhotoSwipe 库实现,全屏相册滑块,可缩放且高度可定制。