文本溢出处理
当文案在给定容器显示不下,要对文案进行折叠/展开切换处理,获取文案是否被折叠的状态进行多功能定制时,可以尝试使用本组件TextOverflowProcessor,它也许能帮到你!目前提供ellipsis
和shadow
两种处理方式。
作者:陈星~
一、安装
npm i text-overflow-processor-react -S
或
yarn add text-overflow-processor-react
二、使用
import TextOverFlowProcessor from 'text-overflow-processor-react'
三、参数注解及默认值
参数含义:
interface TextProcessProps {
type?: 'shadow' | 'ellipsis';
isDefaultFold?: boolean;
isRenderShowAllDOM?: boolean;
unfoldButtonText?: string | JSX.Element | JSX.Element[];
foldButtonText?: string | JSX.Element | JSX.Element[];
buttonBeforeSlot?: string | JSX.Element | JSX.Element[];
buttonClassName?: string;
buttonStyle?: React.CSSProperties;
text: string;
lineHeight?: number;
ellipsisLineClamp?: number;
className?: string;
style?: React.CSSProperties;
isShowAllContent?: boolean;
isMustButton?: boolean;
isMustNoButton?: boolean;
shadowInitBoxShowH?: number;
onClick?: () => void;
getIsFold?: (v: boolean) => void;
isJsComputed?: boolean;
fontSize?: number;
}
对应默认值:
TextOverflowProcessor.defaultProps = {
type: 'shadow',
isDefaultFold: true,
isRenderShowAllDOM: false,
unfoldButtonText: 'Show Less',
foldButtonText: 'Show All',
buttonBeforeSlot: undefined,
buttonClassName: '',
buttonStyle: {},
text: '',
lineHeight: 24,
ellipsisLineClamp: 2,
className: '',
style: {},
isShowAllContent: false,
isMustButton: false,
isMustNoButton: false,
shadowInitBoxShowH: 76,
onClick: null,
getIsFold: null,
isJsComputed: false,
fontSize: 12,
}
注:
1、type为ellipsis
时,默认...
省略号的展示是通过CSS属性display: -webkit-box实现的,顾不是谷歌内核的浏览器使用时无法达到预期折叠省略的效果(甚至可能出现文案展示为空白的情况,例如:低版本的safari浏览器),为此在1.1.0
版增加isJsComputed属性,文案内容在折叠时通过js计算得出,但计算结果也存在些许误差无法避免。
2、提供去渲染两套dom,通过属性isRenderShowAllDOM控制,class类名分别为text-overflow-processor-on /text-overflow-processor-off,text-overflow-processor-on为文案被正常处理展示效果的dom(默认显示),text-overflow-processor-off为文案未处理全部展示的dom(默认隐藏),如果需要,可以合理应用它们。
四、更新日志
↪1.1.0
2022-11-19
☆ 增加isJsComputed/fontSize属性,以适配不支持display: -webkit-box的浏览器去...
折叠展示文案。