滑块不工作使用nextjs和顺风css

c9x0cxw0  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(117)
"use client";
import React, { useState } from "react";

const textData = [
  {
    id: 1,
    text: "Text 1 Description",
  },
  {
    id: 2,
    text: "Text 2 Description",
  },
  {
    id: 3,
    text: "Text 3 Description",
  },
  {
    id: 4,
    text: "Text 4 Description",
  },
  {
    id: 5,
    text: "Text 5 Description",
  },
];

export default function TextSlider() {
  const [currentIndex, setCurrentIndex] = useState(0);

  const handlePrev = () => {
    setCurrentIndex(
      (prevIndex) => (prevIndex - 1 + textData.length) % textData.length
    );
  };

  const handleNext = () => {
    setCurrentIndex((prevIndex) => (prevIndex + 1) % textData.length);
  };

  return (
    <div className="relative w-full h-screen overflow-hidden">
      <button
        className="absolute top-1/2 left-4 text-white text-2xl z-50"
        onClick={handlePrev}
      >
        {"<"}
      </button>
      <div className="w-full h-full flex items-center justify-center overflow-hidden">
        <div
          className="flex transition-transform duration-300 ease-in-out"
          style={{
            transform: `translateX(-${
              (currentIndex * 100) / textData.length - 40
            }%)`,
          }}
        >
          {textData.map((item, index) => (
            <div
              key={item.id}
              className={`w-[100vh] h-full flex items-center justify-center ${
                index === currentIndex ? "transform scale-125" : "opacity-75"
              }`}
            >
              <div className="bg-black bg-opacity-50 text-white p-4">
                <p className="text-lg font-bold text-center">{item.text}</p>
              </div>
            </div>
          ))}
        </div>
      </div>
      <button
        className="absolute top-1/2 right-4 text-white text-2xl"
        onClick={handleNext}
      >
        {">"}
      </button>
    </div>
  );
}

字符串
1.我试图创建一个滑块,但有一个错误
TranslateX的工作效果并不好,比如当我有-{formula}时,我看不到1和2元素,当我有没有“-"的{formula}时,我看不到4和5,也是从元素3开始的,所以这是主要问题。如果我接下来滑动,当元素1和2处于活动状态时,它将保持在3上,但是当元素4处于活动状态时,它将滚动到它。
所以误差是:
1.元素3自动位于中心,因为translatex为0%,它将自动使用生成的元素作为div的中心
1.刷卡系统是不是真的工作,因为3是在中心,所以它会继续后5刷卡到空,直到它达到元素3,它会去它,所以元素1和2是不可达的
我试图通过在translatex值上添加-40来解决这个问题。这有点工作,因为刷卡停止在5,并从3重新开始。

zc0qhyus

zc0qhyus1#

修复了这个问题。有一个justify-center是居中的旋转木马div,所以为了解决这个问题,我只是删除了justify-center谁是居中的div。编辑:也删除了-40。

相关问题