react如何省略号_react 单行多行文本溢出显示省略号...
#### 文本溢出处理 ####
##### 单行文本溢出 #####
单行文本溢出,可直接用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 单行多行文本溢出显示省略号...相关推荐
- CSS单行/多行文本溢出显示省略号(...)
1.单行文本CSS设置: { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } 2.多行文本CSS设置: { over ...
- css多行超出显示点_CSS实现单行、多行文本溢出显示省略号(…)
如果实现单行文本的溢出显示省略号同学们应该都知道用text-overflow:ellipsis属性来,当然还需要加宽度width属来兼容部分浏览. 实现方法: overflow: hidden; te ...
- 如何设置省略号对其序号 html,CSS实现单行、多行文本溢出显示省略号(…)
最好用max-height来限制一下web 若是实现单行文本的溢出显示省略号同窗们应该都知道用text-overflow:ellipsis属性来,固然还须要加宽度width属来兼容部分浏览.浏览器 实 ...
- 单行文本和多行文本溢出显示省略号
1.单行文本溢出显示省略号 首先需要设置宽高 overflow: hidden; /*超出部分隐藏*/ text-overflow: ellipsis; /* 超出部分显示省略号 */ white-s ...
- CSS单行文本以及多行文本溢出显示省略号解决方案
CSS单行文本以及多行文本显示省略号解决方案 文章目录 CSS单行文本以及多行文本显示省略号解决方案 单行文本溢出显示省略号 多行文本溢出显示省略号 第一种效果:仅显示3行文本溢出部分显示省略号 第二 ...
- HTML技巧篇:如何让单行文本以及多行文本溢出显示省略号(…)
文章目录 HTML技巧篇:如何让单行文本以及多行文本溢出显示省略号(-) 一.单行文本溢出显示省略号 核心css语句: 二.多行文本溢出显示省略号 核心css语句: 效果图: 总结 HTML技巧篇:如 ...
- CSS基础: 单行和多行文本溢出显示省略号
文本溢出后很多,会显示一些省略号,这个在很多网站都会这样做,从技术层次来分析有两种,一种是前端通过css或者JavaScript进行进行,还有一种是后端传递文字的时候,本身处理完长度,然后返回一个嗲有 ...
- 多行文本溢出显示省略号(…)
大家应该都知道用text-overflow:ellipsis属性来实现单行文本的溢出显示省略号(-).当然部分浏览器还需要加宽度width属性. overflow: hidden; text-over ...
- css多行文本溢出显示省略号(…)
text-overflow:ellipsis属性可以实现单行文本的溢出显示省略号(-).但部分浏览器还需要加宽度width属性. css代码: overflow: hidden; text-overf ...
最新文章
- Java基础知识强化49:10个实用的但偏执的Java编程技术
- 矩阵连乘问题 Python 动态规划
- ipv6地址格式_IPV6与IPV4的差异
- Python 的构建工具 setup.py
- ASP.NET MVC 学习之路-5
- Android OpenGLES2.0(十四)——Obj格式3D模型加载
- 务必了解的跨境电商ERP独立部署!
- ceph12.0.1的源码编译安装
- 关于USB设备芯片型号检测工具
- 【虚拟主机】服务器搭建
- 华为交换机根据已知一个IP查他对应的MAC地址和交换机端口命令
- 全球及中国空气净化器市场销售模式与营销策略前景咨询报告2022版
- c语言成绩报告单评语,期末成绩报告单评语
- python编程课程-天津Python编程课程
- MySQL入门很简单——读书笔记
- 记成功安装win10+elementary双系统
- batchsize、iteration、epoch之间的关系
- python 7周自学计划
- 突然想到--破窗理论与温水青蛙
- 网络安全与网站安全及计算机安全:如何使用Kali Linux进行MS08-067安全演练