css设置元素的隐藏与显示

react中实现列表动态显隐


效果图:
在这里插入图片描述

解决思路

通过transform的scale缩放元素从0-1,配合transiton实现动画效果。
transition: transform 0.5s;//设置过渡属性以及过渡时间
transform:scale(1);//设置缩放比例
transform-origin: top right; // 设置缩放顶点

代码

    let { eventShow} = this.state;

<div className={eventShow?styles.happendImg:styles.eventNone}>
              <div className={styles.helpPower}>
                <span>事件列表</span>
                <span className={styles.monitorBoxTopSpan1} onClick={this.setEventShow.bind(this)}>
                  <MinusOutlined />
                </span>
              </div>
              <div className={styles.itemFatherStyle}>特大</div>
            </div>
          ) : (
            <div className={styles.happendImg}>
              <div className={styles.helpPower}>
                <span style={{ fontSize: '16px' }}>事件详情</span>
                <button className={styles.goback} onClick={this.gobackClick.bind()}>
                  返回
                </button>
              </div>
              <div>
                <div className={styles.titleDiv}>
                  <span className={styles.title}>事件名称:</span>
                  <span className={styles.wenzi}>XXX化工厂发生爆炸</span>
                </div>
                <div className={styles.titleDiv}>
                  <span className={styles.title}>事件级别:</span>
                  <span className={styles.icon}>特大</span>
                </div>
                <div className={styles.titleDiv}>
                  <span className={styles.title}>事件描述:</span>
                  <span className={styles.wenzi}>
                    XXX化工厂由于违规操作引起爆炸,目前未造成人员伤亡但火势很大……
                  </span>
                </div>
                <img src={happen} className={styles.fireImg} />
              </div>
            </div>
          )}
          <div
            style={{ display: eventShow ? 'none' : 'block' }}
            className={styles.eventBtn}
            onClick={this.setEventShow.bind(this)}
          >
            <Tooltip title="事件列表">
              <img src={eventIcon} />
            </Tooltip>
          </div>

点击事件的方法

setEventShow() {
    let { eventShow } = this.state;
    this.setState({
      eventShow: !eventShow,
    });
  }
  setInfoShow() {
    let { infoShow } = this.state;
    this.setState({
      infoShow: !infoShow,
    });
  }

相关的css

.eventBtn {
  position: absolute;
  z-index: 12;
  right: 45px;
  top: 33px;
  overflow: hidden;
  -ms-overflow-style: none;
  /* Firefox */
  overflow: -moz-scrollbars-none;
  transition: transform 0.5s;
  transform:scale(1);
  transform-origin: top right;
}
.eventNone{
  position: absolute;
  z-index: 12;
  right: 45px;
  top: 33px;
  width: 281px;
  transform: scale(0);
  transition: transform 0.5s;
  transform-origin: top right;
}
.happendImg {
  position: absolute;
  background: white;
  z-index: 12;
  right: 45px;
  top: 33px;
  width: 281px;
  height: 350px;
  overflow: hidden;
  -ms-overflow-style: none;
  /* Firefox */
  overflow: -moz-scrollbars-none;
  transition: transform 0.5s;
  transform:scale(1);
  transform-origin: top right;
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值