【react踩坑】设置div宽度自适应

场景: 使用antd组件tabs左右滑动时,有些边上的标签会只显示一半,影响页面效果。现在需要每页只显示5个tab标签,每个tab标签宽度自适应。
在这里插入图片描述
实现思路: 监听包裹tabs的div组件的宽度变化,动态设置每个tabs的宽度为当前外部div宽度的1/5。
方法一:

const element = document.getElementsByClassName("ant-tabs-nav-scroll")[0];
    const elementWidth =
      (element &&
        (element.style.width ||
          element.clientWidth ||
          element.offsetWidth ||
          element.scrollWidth)) ||
      0;
    const itemWidth = elementWidth / 5 - 64 + 8;

方法二:
给想监听的div注册一个引用,在componentDidMount时绑定onsize事件,在componentWillUnmount时解绑事件。

	componentDidMount(){
        window.addEventListener('resize', this.changeWidth);
        this.resizeListener();
    }
    componentWillUnmount() {
        window.removeEventListener('resize', this.changeWidth);
    }
    
    changeWidth= () => {
    	const {clientWidth, clientHeight} = this.refDom;
    	//...
    }

	<div ref={ref => (this.redDom = ref)} className={styles.container}>
      //...             
    </div>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值