【问题标题】:Keeping Elements Aligned Using React Transition Group使用 React 过渡组保持元素对齐
【发布时间】:2018-10-31 02:35:14
【问题描述】:

我正在尝试使用 react-transition-group 创建一个轮播。我已经让它大部分工作了,但我现在遇到的问题是,由于我认为是 react-transition-group 事件流的问题。当一个元素离开时,下一个元素进来,但它们都占据各自的空间。这会将界面向下推,直到过渡完成,因为这两个项目相互堆叠。然后,当转换完成时,界面会卡回原位。

我不知道问题出在事件、css 还是两者兼而有之。

React 中的轮播:

 <CSSTransition
   key={index}
   appear={true}
   in={index === this.state.activeIndex}
   timeout={600}
   classNames="carouselTransition"
   transitionAppear={true}
   unmountOnExit={true}
  >
    <CarouselSlide index={index} slide={slide} key={index} />
  </CSSTransition>

CSS 代码:

.carouselTransition-appear {
  opacity: 1;
  transform: translateY(-100%);
}

.carouselTransition-appear.carouselTransition-appear-active {
  /*opacity: 1;*/
  /*left:0px;
  transition: left 600ms linear;*/
}

.carouselTransition-enter {
  transform: translateX(99%);
}

.carouselTransition-enter.carouselTransition-enter-active {
  transition: transform 600ms ease-in-out;
  transform: translateX(0);
}

.carouselTransition-enter.carouselTransition-enter-done {
}

.carouselTransition-exit {
  transform: translateX(0);
}

.carouselTransition-exit.carouselTransition-exit-active {
  transition: transform 600ms ease-in-out;
  transform: translateX(-110%);
}

.carouselTransition-exit-done {
  left: -10000px;
  /*opacity: 0;*/
  opacity: 0;
  height: 0px;
}

【问题讨论】:

    标签: css reactjs react-transition-group


    【解决方案1】:

    这是 CSS 的问题。我没有正确使用它来管理过渡状态。这有效:

    .carouselTransition-appear {
      opacity: 1;
    }
    
    .carouselTransition-appear.carouselTransition-appear-active {
    
    }
    
    .carouselTransition-enter {
      transform: translateX(110%);
    }
    
    .carouselTransition-enter.carouselTransition-enter-active {
      transition: transform 600ms ease-in-out;
      transform: translateX(0);
    }
    
    .carouselTransition-enter.carouselTransition-enter-done {
    }
    
    .carouselTransition-exit {
      transform: translateX(0);
    }
    
    .carouselTransition-exit.carouselTransition-exit-active {
      transition: transform 600ms ease-in-out;
      transform: translateX(-100%);
    }
    
    .carouselTransition-exit-done {
      left: -10000px;
      opacity: 0;
      height: 0px;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-07
      • 2019-04-27
      • 2020-04-30
      • 2016-06-02
      • 2017-01-04
      • 2018-09-19
      • 2011-05-27
      • 1970-01-01
      相关资源
      最近更新 更多