Ellipsis 多行文字控制

如果项目中使用的是 0.x 版本的基础组件(@icedesign/base, @ali/ice, @alife/next),请在左侧导航顶部切换组件版本。

安装方法

  1. 在命令行中执行以下命令npm install @icedesign/ellipsis@1.0.4 -S

多行文字控制展示组件。

注意:由于控制每行显示字符数需要获取宽度,因此当前组件外层包裹的元素必须是 div、p 等块级元素,如果包裹 a、span 等需要通过 CSS 控制外层元素为 display: inline-block; 或者 display: block 类型。如果你很难理解这句话,就直接用 div 包裹就对了。

参数(props)

参数名说明必填类型默认值可选值备注
lineLimit限制文字只显示几行。falsenumber1数字
text要处理的文字。truestring''
style内联的样式falseobject
className自定义的 classNamefalsestring''
showTooltip是否显示 tooltip 信息,相比 title 提示性更强。falsebooleanfalse

文字的最大宽度和外框的最大宽度一致,必须填写文本数据,不支持非文本、富文本数据。

代码示例

一行文字用法

本 Demo 演示一行文字的用法。

Ellipsis 多行文字控制 - 图1

查看源码在线预览

  1. import React, {Component} from 'react';
  2. import ReactDOM from 'react-dom';
  3. import IceEllipsis from '@icedesign/ellipsis';
  4. class App extends Component {
  5. render() {
  6. const style = {
  7. width: '200px'
  8. };
  9. return (
  10. <div style={style}>
  11. <IceEllipsis lineNumber={1} text="这是一串非常长的文字的长长长长长长长长这是一串非常长的文字的长长长长长长长长" />
  12. </div>
  13. );
  14. }
  15. }
  16. ReactDOM.render((
  17. <App />
  18. ), mountNode);

多行文字指定每行字数用法

本 Demo 演示多行文字指定每行字数用法。

Ellipsis 多行文字控制 - 图2

查看源码在线预览

  1. import React, {Component} from 'react';
  2. import ReactDOM from 'react-dom';
  3. import IceEllipsis from '@icedesign/ellipsis';
  4. class App extends Component {
  5. render() {
  6. const style = {
  7. width: '150px'
  8. };
  9. return (
  10. <div style={style}>
  11. <IceEllipsis showTooltip={true} lineLimit={2} text="一个两个三个四个五个六个七个八个九个十个十一个" />
  12. </div>
  13. );
  14. }
  15. }
  16. ReactDOM.render((
  17. <App />
  18. ), mountNode);

用在表格中

用在表格中的 demo。需要注意,在不支持 WebkitLineClamp 属性下,显示省略号通过计算每行文字数量实现裁切。此时以中文宽度为准,如果文字带有英文,则会导致行数减少的问题。但不会超出行数,这是我们的目的。

Ellipsis 多行文字控制 - 图3

查看源码在线预览

  1. import React, { Component } from 'react'
  2. import ReactDOM from 'react-dom';
  3. import { Table } from '@alifd/next';
  4. import IceEllipsis from '@icedesign/ellipsis';
  5. const getData = () =>{
  6. let result = [];
  7. for(let i = 0; i< 5; i++){
  8. let title = `总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长`;
  9. if (i % 2) {
  10. title = `Quotation for 1PCS Nano 5.0 controller compatible+++++ 总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长总之这段文字很长很长很长`;
  11. }
  12. result.push({
  13. title: title,
  14. id:`这是一段很长的文字,但是只显示一行这是一段很长的文字,但是只显示一行这是一段很长的文字,但是只显示一行这是一段很长的文字,但是只显示一行`,
  15. time: 2000 + i
  16. })
  17. }
  18. return result;
  19. };
  20. const render= (value, index, record) => {
  21. return <IceEllipsis lineLimit={3} text={record.title} />;
  22. };
  23. const renderId = (value, index, record) => {
  24. return <IceEllipsis lineLimit={1} text={record.id} showTooltip={true} />;
  25. };
  26. class App extends Component {
  27. state = {
  28. dataSource: getData()
  29. }
  30. render() {
  31. return (
  32. <div>
  33. <Table
  34. dataSource={this.state.dataSource}
  35. >
  36. <Table.Column title="Id" cell={renderId} />
  37. <Table.Column title="Title" cell={render} />
  38. <Table.Column title="Time" dataIndex="time"/>
  39. </Table>
  40. </div>
  41. );
  42. }
  43. }
  44. ReactDOM.render((
  45. <App />
  46. ), mountNode);

相关区块

Ellipsis 多行文字控制 - 图4

暂无相关区块