两行弹幕动态轮播

import React, { memo, useEffect, useState } from 'react';
import 'swiper/dist/css/swiper.min.css';

interface DanmuProps {
  danMuList: any[];
}

const DanMuFloatUp = memo((props: DanmuProps) => {
  const { danMuList } = props;
  const [currSlider, setCurrSlider] = useState(0);

  useEffect(() => {
    import('swiper').then(Swiper => {
      Swiper.default('#test', {
        slidesPerView: 2,
        direction: 'vertical',
        autoplay: 2000,
        spaceBetween: 10,
        loop: true,
        onSlideChangeStart(e: any) {
          console.log('过渡结束', e.activeIndex, e.realIndex);
          setCurrSlider(e.realIndex);
        },
      });
    });
  }, []);

  const swpierContainer = () => (
    <div id="test" className="swiper-container">
      <style jsx>
        {`
          .swiper-container {
            width: 100%;
            height: 150px;
          }

          .swiper-slide {
            text-align: center;
            font-size: 18px;
            background: #aaa;
            display: -webkit-box;
            display: -ms-flexbox;
            display: -webkit-flex;
            display: flex;
            -webkit-box-pack: center;
            -ms-flex-pack: center;
            -webkit-justify-content: center;
            justify-content: center;
            -webkit-box-align: center;
            -ms-flex-align: center;
            -webkit-align-items: center;
            align-items: center;
          }
        `}
      </style>
      <div className="swiper-wrapper">
        {danMuList.map((item, index) => (
          <div
            key={JSON.stringify(item) + index}
            style={{
              transform:
                currSlider === index ? 'scale3d(1.2,1.2,1)' : 'scale3d(1,1,1)',
            }}
            className="swiper-slide">
            {item.name} {index}
            {item.text}
          </div>
        ))}
      </div>
    </div>
  );

  return <>{swpierContainer()}</>;
});

export default DanMuFloatUp;

数据格式

const danmulist = [
  { name: 'ceshhi', text: 'zheshihneironng' },
  { name: '姓名', text: '叫啥叫啥叫啥' },
  { name: '姓名', text: '叫啥叫啥叫啥' },
  { name: '姓名', text: '叫啥叫啥叫啥' },
  { name: '姓名', text: '叫啥叫啥叫啥' },
  { name: '姓名', text: '叫啥叫啥叫啥' },
  { name: '姓名', text: '叫啥叫啥叫啥' },
  { name: '姓名', text: '叫啥叫啥叫啥' },
];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值