【问题标题】:Transitioning elements from different positions从不同位置转换元素
【发布时间】:2018-04-15 13:41:43
【问题描述】:

我想获取一个元素,在二进制事件中,将元素移出页面,将其移到左侧。我可以很容易地做到这一点。但是,当二进制事件再次发生时,我想把这个元素恢复到原来的位置,但是这次让它从页面的右侧进来。本质上是创建一个元素的旋转/循环外观。如果我的元素只能在两个给定位置之间转换,我怎么能做到这一点?谢谢。

class App extends React.Component {
  constructor() {
    super();
    this.state = {
      onClick: true,
    };
    this.handleClick = this.handleClick.bind(this);
  }

  handleClick() {
    this.setState({
      onClick: !this.state.onClick
    });
  }
  
  render() {
    return (
      <div>
        <button onClick={this.handleClick}>Click Me</button>
        <div id={this.state.onClick ? "box1A" : "box1B"}></div>
        <div id={this.state.onClick ? "box2A" : "box2B"}></div>
      </div>
    );
  }
}

ReactDOM.render(<App />, app);
#box1A {
  background-color: red;
  width: 50px;
  height: 50px;
  position: absolute;
  left: 100px;
  transition: left linear 1.0s;
}

#box1B {
  background-color: red;
  width: 50px;
  height: 50px;
  position: absolute;
  left: -200px;
  transition: left linear 1.0s;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="app"></div>

【问题讨论】:

    标签: javascript css reactjs ecmascript-6


    【解决方案1】:

    似乎您已经非常接近添加第二个框了。

    class App extends React.Component {
      constructor() {
        super();
        this.state = {
          onClick: true,
        };
        this.handleClick = this.handleClick.bind(this);
      }
    
      handleClick() {
        this.setState({
          onClick: !this.state.onClick
        });
      }
      
      render() {
        return (
          <div>
            <button onClick={this.handleClick}>Click Me</button>
            <div id={this.state.onClick ? "box1A" : "box1B"}></div>
            <div id={this.state.onClick ? "box2A" : "box2B"}></div>
          </div>
        );
      }
    }
    
    ReactDOM.render(<App />, app);
    #box1A {
      background-color: red;
      width: 50px;
      height: 50px;
      position: absolute;
      left: 100px;
      transition: left linear 1.0s;
    }
    
    #box1B {
      background-color: red;
      width: 50px;
      height: 50px;
      position: absolute;
      left: -200px;
      transition: left linear 1.0s;
    }
    
    #box2A {
      background-color: red;
      width: 50px;
      height: 50px;
      position: absolute;
      right: -200px;
      transition: right linear 1.0s;
    }
    
    #box2B {
      background-color: red;
      width: 50px;
      height: 50px;
      position: absolute;
      right: 100px;
      transition: right linear 1.0s;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div id="app"></div>

    【讨论】:

    • 谢谢,我觉得我的问题还不够清楚,你可以找到我的新问题here
    猜你喜欢
    • 2018-04-16
    • 1970-01-01
    • 2011-08-02
    • 2013-02-02
    • 2021-02-08
    • 2021-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多