#### 文本溢出处理 ####

##### 单行文本溢出 #####

单行文本溢出,可直接用css处理,很简单

.ellipsis {

overflow: hidden;

text-overflow:ellipsis;

white-space: nowrap;

}

##### 多行文本溢出 #####

多行文本溢出,在不考虑兼容性的情况下,可直接用css 实现:

.ellipsis {

display: -webkit-box;

-webkit-box-orient: vertical;

-webkit-line-clamp: 3; // 显示几行

overflow: hidden;

}

但是用css 兼容性很不友好,下面是react实现多行溢出显示...,实现原理就是支持css处理的时候,直接用css,不支持的时候,通过js计算来处理显示文字

#### 组件代码 ####

import React from 'react';

export default class Ellipsis extends React.Component {

static defaultProps = {

line: 2,

ellipsis: '...'

};

constructor(props) {

super(props);

let that = this;

this.text = '';

this.setLineClamp = this.setLineClamp.bind(this);

this.setLineNormal = this.setLineNormal.bind(this);

this.clipText = this.clipText.bind(this);

this.init = this.init.bind(this);

}

componentDidMount() {

this.init();

}

componentDidUpdate() {

this.init();

}

init() {

if ('webkitLineClamp' in document.documentElement.style) {

this.setLineClamp();

this.removeTpl();

}

else {

this.setLineNormal();

this.clipText();

}

}

removeTpl() {

try {

this.refs.ellip.removeChild(this.refs.getHeight);

}

catch (err) {}

}

setLineNormal() {

Object.assign(this.refs.ellip.style, {

'word-break': 'break-all',

'white-space': 'normal'

});

}

setLineClamp() {

Object.assign(this.refs.ellip.style, {

'overflow': 'hidden',

'display': '-webkit-box',

'webkitBoxOrient': 'vertical',

'word-break': 'break-all',

'white-space': 'normal',

'webkitLineClamp': this.props.line

});

}

clipText() {

let {line, ellipsis, end = () => {}} = this.props;

let ellip = this.refs.ellip;

if (!this.h) {

let getHeight = this.refs.getHeight;

this.h = getHeight.offsetHeight;

this.removeTpl();

}

let getCountHeight = () => {

return parseFloat(getComputedStyle(ellip)['height'], 10);

};

let init = true;

if (!this.text) {

this.text = ellip.textContent;

}

else {

ellip.innerHTML = this.text;

}

let text = this.text;

let clip = () => {

let len = 0;

while (Math.floor(getCountHeight() / this.h) > line) {

len += 1;

text = text.slice(0, -1);

ellip.innerHTML = text;

if (!init) {

ellip.innerHTML += ellipsis;

}

}

return len;

};

if (0 < clip()) {

ellip.innerHTML += ellipsis;

init = false;

clip();

}

end();

}

render() {

let {children, className = ''} = this.props;

return (

{children}

{visibility: 'hidden'}}>好

);

}

}

#### 用法 ####

要处理的文字

react如何省略号_react 单行多行文本溢出显示省略号...相关推荐

  1. CSS单行/多行文本溢出显示省略号(...)

    1.单行文本CSS设置: { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } 2.多行文本CSS设置: { over ...

  2. css多行超出显示点_CSS实现单行、多行文本溢出显示省略号(…)

    如果实现单行文本的溢出显示省略号同学们应该都知道用text-overflow:ellipsis属性来,当然还需要加宽度width属来兼容部分浏览. 实现方法: overflow: hidden; te ...

  3. 如何设置省略号对其序号 html,CSS实现单行、多行文本溢出显示省略号(…)

    最好用max-height来限制一下web 若是实现单行文本的溢出显示省略号同窗们应该都知道用text-overflow:ellipsis属性来,固然还须要加宽度width属来兼容部分浏览.浏览器 实 ...

  4. 单行文本和多行文本溢出显示省略号

    1.单行文本溢出显示省略号 首先需要设置宽高 overflow: hidden; /*超出部分隐藏*/ text-overflow: ellipsis; /* 超出部分显示省略号 */ white-s ...

  5. CSS单行文本以及多行文本溢出显示省略号解决方案

    CSS单行文本以及多行文本显示省略号解决方案 文章目录 CSS单行文本以及多行文本显示省略号解决方案 单行文本溢出显示省略号 多行文本溢出显示省略号 第一种效果:仅显示3行文本溢出部分显示省略号 第二 ...

  6. HTML技巧篇:如何让单行文本以及多行文本溢出显示省略号(…)

    文章目录 HTML技巧篇:如何让单行文本以及多行文本溢出显示省略号(-) 一.单行文本溢出显示省略号 核心css语句: 二.多行文本溢出显示省略号 核心css语句: 效果图: 总结 HTML技巧篇:如 ...

  7. CSS基础: 单行和多行文本溢出显示省略号

    文本溢出后很多,会显示一些省略号,这个在很多网站都会这样做,从技术层次来分析有两种,一种是前端通过css或者JavaScript进行进行,还有一种是后端传递文字的时候,本身处理完长度,然后返回一个嗲有 ...

  8. 多行文本溢出显示省略号(…)

    大家应该都知道用text-overflow:ellipsis属性来实现单行文本的溢出显示省略号(-).当然部分浏览器还需要加宽度width属性. overflow: hidden; text-over ...

  9. css多行文本溢出显示省略号(…)

    text-overflow:ellipsis属性可以实现单行文本的溢出显示省略号(-).但部分浏览器还需要加宽度width属性. css代码: overflow: hidden; text-overf ...

最新文章

  1. Java基础知识强化49:10个实用的但偏执的Java编程技术
  2. 矩阵连乘问题 Python 动态规划
  3. ipv6地址格式_IPV6与IPV4的差异
  4. Python 的构建工具 setup.py
  5. ASP.NET MVC 学习之路-5
  6. Android OpenGLES2.0(十四)——Obj格式3D模型加载
  7. 务必了解的跨境电商ERP独立部署!
  8. ceph12.0.1的源码编译安装
  9. 关于USB设备芯片型号检测工具
  10. 【虚拟主机】服务器搭建
  11. 华为交换机根据已知一个IP查他对应的MAC地址和交换机端口命令
  12. 全球及中国空气净化器市场销售模式与营销策略前景咨询报告2022版
  13. c语言成绩报告单评语,期末成绩报告单评语
  14. python编程课程-天津Python编程课程
  15. MySQL入门很简单——读书笔记
  16. 记成功安装win10+elementary双系统
  17. batchsize、iteration、epoch之间的关系
  18. python 7周自学计划
  19. 突然想到--破窗理论与温水青蛙
  20. 网络安全与网站安全及计算机安全:如何使用Kali Linux进行MS08-067安全演练

热门文章

  1. 小学三年级计算机认识鼠标说课,认识鼠标说课稿.doc
  2. [Java]Wait
  3. 复旦MBA海外短期课程 | 善用ESG金融,共创可持续未来
  4. STM8L低功耗HALT模式一些总结
  5. 【手把手教你】Python获取财经数据和可视化分析
  6. 数据挖掘:模型评估指标
  7. 媛媛qq声音盒(yuanqqsound) v1.0 bt
  8. 字符数组、字符串数组转换成字符串
  9. android 4.0的手机,买了别后悔 不能官升Android 4.0手机
  10. 新媒体培训的目的和意义体现