第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 React 中滑動拖動旋轉(zhuǎn)木馬

如何在 React 中滑動拖動旋轉(zhuǎn)木馬

qq_笑_17 2023-03-03 15:04:38
我是一名初級開發(fā)人員,正在努力解決頁面頂部有一個帶有大約 10 張卡片的輪播的問題。并非所有的卡片都可以同時顯示在屏幕上,所以角落里有 2 個箭頭可以滾動它們(左箭頭和右箭頭)。當(dāng)您單擊向右箭頭時,卡片會滾動到末尾,當(dāng)您單擊向左箭頭時,它們會從右向左向后移動。當(dāng)您按下鼠標(biāo)并按住圖像并拖動它們時,我怎樣才能使它們向左或向右移動?我需要讓它們不僅通過單擊箭頭而且還通過鼠標(biāo)拖動移動...我是否需要使用一些庫(我找到了 react-hammerjs,但沒有找到任何好的文檔/示例如何使用它)?預(yù)先感謝您的幫助這里有一些代碼可供參考:export const CardsBlock = () => {  const scrollContainer = useRef(null)  const [scrolled, setScrolled] = useState(false)  const dispatch = useDispatch()  useEffect(() => {    const resizeListener = (e) => {      if (e.target.outerWidth <= sizes.mobile) {        setScrolled(null)      } else {        setScrolled(false)      }    }    window.addEventListener('resize', resizeListener)    return () => {      window.removeEventListener('resize', resizeListener)    }  }, [])  useEffect(() => {    if (scrolled) {      scrollTo(scrollContainer.current, scrollContainer.current.offsetWidth)    } else {      scrollTo(scrollContainer.current, 0)    }  }, [scrolled])  return (    <Well>      <Container>        <Wrapper padding={'0 0 16px'} justify={'space-between'} align={'center'}>          <TitleText width={'auto'}>{translator('specilization.title', true)}</TitleText>          <ArrowsContainer>            <Icon              onClick={() => setScrolled(false)}              cursor={'pointer'}              type={'arrow_left'}              color={scrolled ? 'black4' : 'black1'}            />            <Icon              onClick={() => setScrolled(true)}              cursor={'pointer'}              type={'arrow_right'}              color={scrolled ? 'black1' : 'black4'}            />          </ArrowsContainer>
查看完整描述

2 回答

?
拉風(fēng)的咖菲貓

TA貢獻1995條經(jīng)驗 獲得超2個贊

由于您沒有提供任何片段或源代碼,這里是一些基本示例。它應(yīng)該讓你開始。


const slider = document.querySelector('.items');

let isDown = false;

let startX;

let scrollLeft;


slider.addEventListener('mousedown', (e) => {

  isDown = true;

  startX = e.pageX - slider.offsetLeft;

  scrollLeft = slider.scrollLeft;

});


slider.addEventListener('mouseleave', () => {

  isDown = false;

});


slider.addEventListener('mouseup', () => {

  isDown = false;

});


slider.addEventListener('mousemove', (e) => {

  if(!isDown) return;

  e.preventDefault();

  const x = e.pageX - slider.offsetLeft;

  const walk = (x - startX) * 3; //scroll-fast

  slider.scrollLeft = scrollLeft - walk;

});

https://codepen.io/toddwebdev/pen/yExKoj


查看完整回答
反對 回復(fù) 2023-03-03
?
蕭十郎

TA貢獻1815條經(jīng)驗 獲得超13個贊

在更多研究中,在“react-swipeable”npm 模塊中找到了答案 https://www.npmjs.com/package/react-swipeable

由于此處已經(jīng)定義了箭頭圖標(biāo)的 onclick 邏輯,因此添加了相同的邏輯來響應(yīng)可滑動組件:

      <Swipeable onSwipedLeft={() => setScrolled(true)} onSwipedRight={() => setScrolled(false)} trackMouse={true}>

        <SpecializationsInnerContainer ref={scrollContainer}>

          {specializations.map((specialization) =>

            <SpecializationCard

              key={specialization.id}

              image={specialization.image}

              title={specialization.title}

              color={'black1'}

              borderColor={'transparent'}

              onClick={() => handleOnClick(specialization.id)}

            />

          )}

          <SpecializationCard borderColor={'black15'} image={'image.png'} isAll onClick={openSpecializationFilter} title={translator('specilization.all', true)} color={'transparent'}/>

        </SpecializationsInnerContainer>

       </Swipeable>


查看完整回答
反對 回復(fù) 2023-03-03
  • 2 回答
  • 0 關(guān)注
  • 200 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號