onClick事件时翻转图像

时间:2019-05-07 17:05:09

标签: reactjs css3

为了在我的应用程序中实现某些功能,我需要在用户使用onClick事件选择图像时水平翻转网格中的图像。

我已经阅读了有关react中的状态的信息,并注意到这是我所需要的。 当发生onClick事件时,翻转图像。

以下代码运行不正常。 isExpanded工作正常,但是网格中的图像没有翻转。

我做错了什么?

我在承包商中启动了isExpandedfalse

 handleToggle(e){
    e.preventDefault();
    this.setState({
      isExpanded: !this.state.isExpanded,
    })


render() {
    const {isExpanded } = this.state;
    return (
      <div
        className={`image-root ${isExpanded ? 'image-flip' : ''}`}
        style={{
          backgroundImage: `url(${this.urlFromDto(this.props.dto)})`,
          width: this.state.size + 'px',
          height: this.state.size + 'px'
        }}
        >
        <div>
        <FontAwesome className="image-icon" onClick={(e)=> 
         this.handleToggle(e)} name="arrows-alt-h" title="flip"/>
        </div>
      </div>
    );
  }
}

.scss 代码:

.image-root {
  background-size: cover;
  background-position: center center;
  display: inline-block;
  vertical-align: top;
  box-sizing: border-box;
  position: relative;
  border: 1px solid white;

  > div {
    visibility: hidden;
    background: rgba(0, 0, 0, 0.7);
    cursor: pointer;
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    color: white;
    padding: 15px;
    text-align: center;
    text-align: center;
    box-sizing: border-box;
    white-space: pre;
    display: flex;
    align-items: center;
    justify-content: center;
  }

  &:hover > div {
    visibility: visible;
  }

  .image-icon {
    font-size: 20px;
    vertical-align: middle;
    border: 1px solid #ccc;
    color: #ccc;
    border-radius: 5px;
    cursor: pointer;
    padding: 12px;
    margin: 3px;

    &:hover {
      color: white;
      border-color: white;
    }
  }
 .image-flip {
    -moz-transform: scaleX(-1);
    -o-transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    transform: scaleX(-1);
    filter: FlipH;
    -ms-filter: "FlipH";
  }

1 个答案:

答案 0 :(得分:0)

由于image-flip CSS的作用域错误,因此导致了该问题。 我只是将image-flip css移出了image-root范围。 谢谢。