首页 > Web开发 > 详细

react文本溢出hover气泡显示全部文本——JS判断文本溢出

时间:2019-11-01 11:04:45      阅读:416      评论:0      收藏:0      [点我收藏+]

需求:
在文本溢出的时候,显示气泡

JS相关知识

// target js元素
const containerLength = target.width; //当前容器的宽度
const textLength = target.scrollWidth; //  当前文字(包括省略部分)的宽度

文本溢出的css, 如超过100px显示...

.ellipis {
    display: inline-block;
    vertical-align: middle;
    width: auto;
    max-width: 100px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

react组件计算,是否溢出

import React, { Component } from "react";
import { Popover } from "antd"

export default class PopoverEllipsis extends  Component{
  constructor(props) {
    super(props);

    this.state = {
      showPopover: false
    };
  }

  componentDidMount() {
    this.validShowPopover();
  }

  validShowPopover = () => {
    const { scrollWidth, clientWidth } = this.children;
    this.setState({
      showPopover: scrollWidth > clientWidth
    })
  }
  
  refChildren = (ref) => {
    this.children = ref;
  }

  renderChildren() {
    return (
      React.cloneElement(
        this.props.children, {
          ref: this.refChildren
        }
      )
    )
  }

  render() {
    let {
      children,
      ...other
    } = this.props;
    const {
      showPopover
    } = this.state;

    if (showPopover) {
      return (
        <Popover
          title={null}
          content={null}
          placement="top"
          {...other}
        >
          { this.renderChildren() }
        </Popover>
      )
    }

    return this.renderChildren()
  }
}

react文本溢出hover气泡显示全部文本——JS判断文本溢出

原文:https://www.cnblogs.com/qiqi715/p/11775748.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!