添加 Swiper
Swiper
是一个 JavaScript
触摸滑动器,可用于现代 Web
应用程序(桌面或移动)以及移动原生或混合应用程序。它是 Framework7 (https://framework7.io/) 和 Ionic Framework (https://ionicframework.com/) 的一部分,用于构建移动混合应用程序。我们可以像在之前的章节中对其他框架和库所做的那样,使用其 CDN 资源轻松地为 Web 应用程序设置 Swiper。但是,让我们通过以下步骤了解如何在 Nuxt 中以正确的方式安装和使用它:
-
通过终端使用 npm 在您的 Nuxt 项目中安装 Swiper:
$ npm i swiper
-
将以下 HTML 元素添加到 <template> 块中以创建一个图像滑块:
// pages/index.vue <template> <div class="swiper-container"> <div class="swiper-wrapper"> <div class="swiper-slide"><img src="~/assets/images/sample-01.jpg"></div> <div class="swiper-slide"><img src="~/assets/images/sample-02.jpg"></div> <div class="swiper-slide"><img src="~/assets/images/sample-03.jpg"></div> </div> <div class="swiper-button-next"></div> <div class="swiper-button-prev"></div> </div> </template>
从这些元素中,我们想要创建一个包含三个图像的图像滑块,这些图像可以从左侧或右侧滑动到视图中,并带有两个按钮——一个“下一个”按钮和一个“上一个”按钮。
-
在 <script> 块中导入 Swiper 资源,并在页面挂载时创建一个新的 Swiper 实例:
// pages/index.vue <script> import 'swiper/swiper-bundle.css' import Swiper from 'swiper/bundle' export default { mounted () { var swiper = new Swiper('.swiper-container', { navigation: { nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev', }, }) } } </script>
在此脚本中,我们将图像滑块的类名提供给 Swiper,以便可以初始化一个新的实例。此外,我们通过 Swiper 的 navigation 选项将“下一个”和“上一个”按钮注册到新的实例。
您可以在 https://swiperjs.com/api/ 找到初始化 Swiper 的其余设置选项以及可用于与实例交互的 API。
-
将以下 CSS 样式添加到 <style> 块以自定义图像滑块:
// pages/index.vue <style> .swiper-container { width: 100%; height: 100%; } .swiper-slide { display: flex; justify-content: center; align-items: center; } </style>
在这个样式中,我们只想通过使用 CSS 的 width 和 height 属性的 100% 使滑块完全占据屏幕,并通过使用 CSS flex 属性将图像在滑块容器中居中。
-
现在您可以运行 Nuxt 并在浏览器上加载该页面,您应该会看到一个交互式的图像滑块正在正常工作。
您可以在 Swiper 官方网站 https://swiperjs.com/demos/ 上找到一些很棒的幻灯片示例。
请注意,我们刚刚使用 Swiper 的方式仅适用于单个页面。如果您想在多个页面上创建滑块,则可以通过插件全局注册 Swiper。因此,让我们通过以下步骤了解如何做到这一点:
-
在 /plugins/ 目录下创建一个 swiper.client.js 插件,导入 Swiper 资源,并创建一个名为 $swiper 的属性。将 Swiper 附加到此属性并将其注入到 Vue 实例中,如下所示:
// plugins/client-only/swiper.client.js import 'swiper/swiper-bundle.css' import Vue from 'vue' import Swiper from 'swiper/bundle' Vue.prototype.$swiper = Swiper
-
在 Nuxt 配置文件中的 plugins 选项中注册此 Swiper 插件:
// nuxt.config.js export default { plugins: [ '~/plugins/client-only/swiper.client.js', ], }
-
现在你可以在你的应用程序的多个页面中通过 this 关键字调用 $swiper 属性来创建 Swiper 的新实例,例如:
// pages/global.vue <script> export default { mounted () { var swiper = new this.$swiper('.swiper-container', { ... }) } } </script>
同样地,我们将 CSS 资源组织在了插件文件中,而不是通过 Nuxt 配置文件的 css 选项进行全局注册。然而,如果你想全局覆盖任何这些 UI 框架和库中的一些样式,那么通过在 css 选项中全局注册它们的 CSS 资源,然后在存储在 /assets/ 目录中的 CSS 文件中添加你的自定义样式,会更容易实现覆盖。
你可以从我们的 GitHub 仓库的 /chapter-3/nuxtuniversal/adding-swiper/ 路径下下载本章的源代码。如果你想了解更多关于 Swiper 的信息,请访问 https://swiperjs.com/。 |
做得好!你已经成功地掌握了我们为你选择的一些流行的 UI 框架和库,它们将加速你的前端开发。我们希望它们在你未来创建的 Nuxt 项目中能够有所帮助。在接下来的章节中,我们将偶尔使用其中的一些框架和库,尤其是在最后一章——第 18 章,使用 CMS 和 GraphQL 创建 Nuxt 应用程序中。现在,让我们总结一下你在本章中学到的内容。