Next JS 使用 Tailwind CSS 构建 Swiper JS 问题

Posted

技术标签:

【中文标题】Next JS 使用 Tailwind CSS 构建 Swiper JS 问题【英文标题】:Next JS Build Swiper JS Issue with Tailwind CSS 【发布时间】:2021-08-16 04:03:02 【问题描述】:

我用 NextJS、Tailwind CSS 和 Swiper JS 设置了一个项目。

当我运行 Yarn Dev 时,我可以成功显示我的 Swiper Slider 而没有任何错误

但是,一旦我构建了项目并运行 Start,我就会遇到一个没有导航的损坏的滑块,但我仍然可以滑动但我得到一个空白

要重现,只需使用 Tailwind 配置和 Swiper 滑块设置 NextJS 项目。使用此示例代码在 pages 文件夹中创建一个文件

// import Swiper core and required modules
import SwiperCore,  Navigation, Pagination, Scrollbar, A11y  from 'swiper'
import Layout from '@modules/Layout'

import  Swiper, SwiperSlide  from 'swiper/react'

// install Swiper modules
SwiperCore.use([Navigation, Pagination, Scrollbar, A11y])

const Slider = () => 
  return (
      <div className='container'>
        <Swiper
          spaceBetween=50
          slidesPerView=1
          navigation
          pagination= clickable: true 
          onSwiper=(swiper) => console.log(swiper)
          onSlideChange=() => console.log('slide change')
        >
          <SwiperSlide>
            <div className='h-96 w-50 bg-red'>Slide 1</div>
          </SwiperSlide>
          <SwiperSlide>
            <div className='h-96 w-50 bg-blue'>Slide 2</div>
          </SwiperSlide>
          <SwiperSlide>
            <div className='h-96 w-50 bg-orange'>Slide 3</div>
          </SwiperSlide>
          <SwiperSlide>
            <div className='h-96 w-50 bg-green'>Slide 4</div>
          </SwiperSlide>
        </Swiper>
      </div>
  )


export default Slider
Swiper 版本:6.5.6。 平台/目标和浏览器版本:CHROME

【问题讨论】:

你是如何使用 swiper 样式的?您是在某处包含捆绑的 CSS 文件,还是使用他们的 SCSS/Less 样式? 【参考方案1】:

我在使用带有 NextJS 的 react-swiper 时遇到了同样的问题。我认为这个问题是由捆绑时的一些树抖动引起的,它排除了 swiper 组件 CSS 文件,因为它们没有被导入到 swiper 模块中(这里非常“随机”猜测,因为我对 Webpack 树抖动的了解非常基础)。

但是,我通过将 swiper .less 文件导入到我的项目中的自定义 .less 文件中解决了这个问题(因此它们在构建时被捆绑和缩小),然后将最新的 .less 文件导入到我的组件文件中。

遵循代码示例

/* custom-swiper.less */
@import "~swiper/swiper.less";
@import "~swiper/components/navigation/navigation.less";
@import "~swiper/components/pagination/pagination.less";

/*
 * my swiper style overrides below
 */
...

【讨论】:

【参考方案2】:

我遇到了同样的问题,并通过在 head html 元素中导入 cdn 并使用 swiper/react 导入来修复它 我正在使用 nextjs 和 typescript 和 tailwind 做出反应

在适当的地方——我把 _document.jsx 放进去

       <Head>
          <link
            rel="stylesheet"
            href="https://unpkg.com/swiper@7/swiper-bundle.min.css"
          />          
        </Head>

&lt;Swiper&gt; and &lt;SwiperSlide&gt;的用法

import  Swiper, SwiperSlide  from 'swiper/react';
import 'swiper/css';
import 'swiper/css/pagination';
import 'swiper/css/navigation';

// import Swiper core and required modules
import SwiperCore,  Pagination, Navigation  from 'swiper';

// install Swiper modules
SwiperCore.use([Pagination, Navigation]);

【讨论】:

以上是关于Next JS 使用 Tailwind CSS 构建 Swiper JS 问题的主要内容,如果未能解决你的问题,请参考以下文章

Next JS 使用 Tailwind CSS 构建 Swiper JS 问题

如何使用 Next.js 将 PNG 徽标添加到 Tailwind CSS 导航栏?

如果在 className 中使用变量,则 React/Next.js 中的 Tailwind 不会为 text-*xl 类生成 css

Tailwind CSS 不适用于 Next JS 12,但适用于 Next JS 11

我可以在同一个 Next js 项目中使用 Tailwind CSS 和 Material UI 吗?

如何在 Next.js 中使用带有顺风 css 的 React Suite?