一直以来,多行文本截断一直是一个不那么好解决的问题,通常有两种思路:
- 使用-webkit-line-clamp,但是非 webkie 浏览器不支持,而且对样式有侵入性
- 使用 clamp.js/shave.js 这类的工具对目标元素内的文本进行裁剪,其原理是对内容进行二分查找(裁剪),不断逼近目标高度,但限制是目标元素必须为块级元素,而且只能操作元素内的纯文本。
shear.js 的原理是使用 Selection API 根据实际可视内容创建选区,以此来进行截断,这就直接规避了同类工具的所有缺点,效果与-webkit-line-clamp 完全相同,并且可以保留元素内的所有节点。
下面是几个示例
截断前

截断后

截断前

截断后

Github: https://github.com/zhengrenzhe/shear.js 欢迎 star | fork | issue
混了这么久 v2,还是第一次发分享创造的内容,惭愧惭愧,感谢支持!