uniapp 小程序 CSS 实现多行文本展开收起 组件

效果


组件

vue 复制代码
<template>
	<!-- 最外层弹性盒子 -->
	<div class="box" :style="boxStyle">
		<!-- 文本区域,动态类名控制展开/收起状态 -->
		<div ref="textRef" :class="['text-cont', btnFlag ? 'text-unfold' : 'text-collapse']">
			<!-- 展开/收起按钮 -->
			<div class="unfold-and-collapse" @click="btnFlagChange">
				{{ btnFlag ? '收起' : '展开' }}
			</div>
			<!-- 文本内容(保留首行缩进) -->
			&emsp;&emsp;{{ text }}
		</div>
	</div>
</template>

<script>
	export default {
		name: 'ExpandableText',
		props: {
			text: {
				type: String,
				default: ''
			},
			boxStyle: {
				type: String,
				default: ''
			}
		},
		data() {
			return {
				// 展开收起状态
				btnFlag: false
			}
		},
		methods: {
			// 切换展开/收起状态 
			btnFlagChange() {
				this.btnFlag = !this.btnFlag
			}
		}
	}
</script>

<style scoped>
	/* 最外层开启弹性盒子,用于伪元素的高度计算 */
	.box {
		display: flex;
	}

	/* 文本区域设置宽度,显示省略号 */
	.text-cont {
		width: 100%;
		margin: 0px auto 0;
		display: -webkit-box;
		/* 必须结合的属性,设置或检索伸缩盒对象的子元素的排列方式 */
		-webkit-box-orient: vertical;
		/* 溢出部分隐藏 */
		overflow: hidden;
		/* 文字居左 */
		text-align: left;
		
		font-family: PingFangSC, PingFang SC;
		font-weight: 500;
		font-size: 26rpx;
		color: #000000;
		line-height: 44rpx;
		font-style: normal;
	}

	/* 展开状态 - 显示所有行 */
	.text-unfold {
		-webkit-line-clamp: 9999;
	}

	/* 收起状态 - 只显示3行 */
	.text-collapse {
		-webkit-line-clamp: 3;
	}

	/* 展开/收起按钮样式 */
	.unfold-and-collapse {
		color: #19aaff;
		float: right;
		clear: both;
		margin-right: 10px;
		cursor: pointer;
		font-size: 26rpx;
		line-height: 44rpx;
		margin-top: -6rpx;
	}

	/* 伪元素用于实现文字包裹按钮 */
	.text-cont::before {
		content: "";
		float: right;
		width: 0;
		height: calc(100% - 20px);
	}
</style>
相关推荐
李慕婉学姐11 分钟前
基于微信小程序的运动会信息管理系统k6kqgy34(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·微信小程序·小程序
风月歌31 分钟前
小程序项目之驾校报名小程序源代码(java+vue+小程序+mysql)
java·vue.js·mysql·小程序·毕业设计·源码
lcc18734 分钟前
CSS 三大特性
css
咸虾米_42 分钟前
uniapp+unicloud实战项目,九两酒微信小程序商城及后台管理系统前后端部署运行步骤
微信小程序·uni-app·uniapp实战项目·unicloud云开发·vue3后台管理
怀君42 分钟前
Uniapp——Android离线打包之更换启动屏和App图标
uni-app
柠檬树^-^1 小时前
uniapp云对象敏感词校验
uni-app
风月歌1 小时前
小程序项目之使命召唤游戏助手源代码(java+vue+小程序+mysql)
java·mysql·小程序·毕业设计·源码
小码哥0681 小时前
家政服务管理系统(源码+文档+部署+讲解)
小程序·家政系统·家政服务系统·家政服务管理系统
涔溪9 小时前
CSS 网格布局(Grid Layout)核心概念、基础语法、常用属性、实战示例和进阶技巧全面讲解
前端·css
一条可有可无的咸鱼12 小时前
企业招聘信息,企业资讯进行公示
java·vue.js·spring boot·uni-app