前端实现文本溢出展开和收起功能
判断文本溢出
众所周知,单行文本溢出打点仅需要:
而单行文本判断是否溢出的关键就是element.scrollWidth > element.clientWidth
需要注意的是,当使用以上方式判断的时候,不要给元素加上overflow: hidden的样式,不然获取的clientWidth一直都是等于scrollWidth。
示例
先看下元素结构:
文本在.text
的元素中,里面有展开、收起两个按钮
再写点样式:
于是就得到如下图所示的展示效果:
初始化将展开
/收起
按钮隐藏
要使用scrollWidth去判断文本是否溢出,关键需要给.text添加white-space: nowrap;
当需要给.text元素添加单行文本溢出的3行代码,不要直接添加到.text类名下(直接写overflow: hidden就不能使用scrollWidth判断文本溢出了)
另加一个类名,比如:.ellipsis,然后使用js判断文本是否溢出,再给该元素添加该类名。
让.more
按钮仅在.ellipsis
下展示,再给.more
按钮写点样式,css代码如下:
就得到以下效果:
js判断文本溢出如下:
判断文本溢出后,才会给文字添加overflow: hidden
,为了避免页面文字闪烁,给初始文本元素添加opacity: 0
,在判断完毕后,设置opacity: 1
修改一下css,js代码
分别给展开
、收起
按钮添加点击事件,事件仅需要添加、删除类名即可
这里又加了个新类名.expand
为了控制文本展开后的按钮显示隐藏
最终效果如下:
完整代码
HTML:
CSS:
JS:
拓展
多行文本溢出
多行文本展开收起的思路一样的
需要修改下文本溢出判断函数,使用clientHeight
、scrollHeight
判断:
.ellipsis
溢出css修改为多行文本溢出打点即可
您可能感兴趣的文章
- 07-25如何使用 Deepseek 写的uniapp油耗计算器
- 07-25JavaScript其他类型的值转换为布尔值的规则详解
- 07-25JavaScript实现给浮点数添加千分位逗号的多种方法
- 07-25ReactNative环境搭建的教程
- 07-25JavaScript获取和操作时间戳的用法详解
- 07-25通过Vue实现Excel文件的上传和预览功能
- 07-25Node使用Puppeteer监听并打印网页的接口请求
- 07-25在Node.js中设置响应的MIME类型的代码详解
- 07-25Vue3解决Mockjs引入后并访问404(Not Found) 的页面报错问题
- 07-25如何利用SpringBoot与Vue3构建前后端分离项目


阅读排行
推荐教程
- 04-23JavaScript Array实例方法flat的实现
- 04-23Vue3使用v-if指令进行条件渲染的实例代码
- 04-23THREE.JS使用TransformControls对模型拖拽的代码实例
- 07-21JavaScript判断数据类型的四种方式总结
- 07-22JavaScript随机数生成各种技巧及实例代码
- 04-23vue3+ts项目搭建的实现示例
- 07-21JavaScript检查变量类型的常用方法
- 07-21基于vue3与supabase系统认证机制详解
- 07-22使用Node.js实现GitHub登录功能
- 07-21JavaScript双问号操作符(??)的惊人用法总结大全