HomeMiddleBanner.tsx 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. "use client";
  2. import { useState } from "react";
  3. import { Swiper, SwiperSlide } from "swiper/react";
  4. import { Navigation } from "swiper/modules";
  5. import "swiper/css";
  6. import "swiper/css/navigation";
  7. import Image from "next/image";
  8. export default function HomeMiddleBanner() {
  9. const [activeIndex, setActiveIndex] = useState(0);
  10. const [swiperRef] = useState(null);
  11. const handleSlideChange = (swiper:any) => {
  12. setActiveIndex(swiper.activeIndex);
  13. };
  14. const handleIndicatorClick = (index:any) => {
  15. if (swiperRef) {
  16. setActiveIndex(index);
  17. }
  18. };
  19. return (
  20. <div className="max-w-screen-md mx-auto p-4">
  21. <Swiper
  22. modules={[Navigation]}
  23. spaceBetween={10}
  24. slidesPerView={1}
  25. onSlideChange={handleSlideChange}
  26. className="mb-6"
  27. >
  28. <SwiperSlide>
  29. <div className="relative w-full h-42">
  30. <Image
  31. src={
  32. "https://cdn.asteriahair.com/media/wysiwyg/home/1750041184.png"
  33. }
  34. alt={"bbbb"}
  35. fill
  36. className="w-full h-auto object-cover rounded-md"
  37. />
  38. </div>
  39. </SwiperSlide>
  40. <SwiperSlide>
  41. <div className="relative w-full h-42">
  42. <Image
  43. src={
  44. "https://cdn.asteriahair.com/media/wysiwyg/home/1750041184.png"
  45. }
  46. alt={"bbbb"}
  47. fill
  48. className="w-full h-auto object-cover rounded-md"
  49. />
  50. </div>
  51. </SwiperSlide>
  52. </Swiper>
  53. <div className="flex justify-center gap-2">
  54. <button
  55. onClick={() => handleIndicatorClick(0)}
  56. className={`w-6 h-[5px] rounded-full opacity-100 ${
  57. activeIndex === 0 ? "bg-[#333]" : "bg-[#E5E5E5]"
  58. }`}
  59. aria-label="切换到第一块"
  60. />
  61. <button
  62. onClick={() => handleIndicatorClick(1)}
  63. className={`w-6 h-[5px] rounded-full opacity-100 ${
  64. activeIndex === 1 ? "bg-[#333]" : "bg-[#E5E5E5]"
  65. }`}
  66. aria-label="切换到第二块"
  67. />
  68. </div>
  69. </div>
  70. );
  71. }