两种方式实现文本超出指定行数显示展开收起...
需要实现这样一个功能
默认高度下文本超出隐藏,点击展开可查看所有内容,点击收起可折叠


方法一:通过html和css实现
代码部分
html:<div className="expand-fold"><input id="check-box" type="checkbox" /><div className="content">{/* htmlFor和input的id一致 */}<label className="label" htmlFor="check-box"></label><span>Lorem ipsum dolor sit amet consectetur adipisicing elit. Explicaboquas architecto perspiciatis voluptas odio magni dolorem doloribusrecusandae commodi accusamus voluptates, laudantium tempora, estsoluta blanditiis labore tempore officia ipsam! Lorem ipsum dolorsit amet consectetur adipisicing elit. Explicabo quas architectoperspiciatis voluptas odio magni dolorem doloribus recusandaecommodi accusamus voluptates, laudantium tempora, est solutablanditiis labore tempore officia ipsam!</span></div></div>css:.expand-fold {display: flex;#check-box { // 将勾选框隐藏display: none;}#check-box:checked + .content { // 选中勾选框(点击展开)时修改最大高度,合理即可max-height: 800px;}#check-box:checked + .content .label { // 展开时,隐藏省略号,文字改为收起&::before {// 隐藏省略号content: '';}&::after {content: '收起';}}.content { font-size: 16px;flex: 1;max-height: 46px;line-height: 23px;overflow: hidden;&::before { // 将展开/收起文字对齐最右边content: '';float: right;height: calc(100% - 23px);}}.label { // 展开收起文字部分position: relative;float: right;clear: both;font-size: 16px;padding: 0 8px;color: #26caf8;border-radius: 4px;cursor: pointer;&::before { // 默认展开时添加省略号content: '...';position: absolute;left: -5px;color: #333;transform: translateX(-100%);}&::after {content: '展开';}}}
方法二:通过AntDesign + react实现组件封装
AntDesign默认只有展开功能,没有收起功能,以下是基于Typography组件实现展开收起
组件UI部分
import { Typography } from 'antd';
import React, { useState } from 'react';
import style from './index.less';const { Paragraph } = Typography;export type ExpandTextType = {rows?: number;symbol?: React.ReactNode;foldSlot?: React.ReactNode;children?: React.ReactNode;
};const defaultSymbol = () => (<span className="ant-typography">展开 <i className="iconfont icon-jiantou-shaixuanzhankai"></i></span>
);const Example: React.FC<ExpandTextType> = (props) => {const { rows = 2, symbol = defaultSymbol(), foldSlot } = props;const [ellipsis, setEllipsis] = useState(false);const [counter, setCounter] = useState(0);const onFold = () => {setEllipsis(!ellipsis);setCounter(counter + 1);};const onExpand = () => {setEllipsis(!ellipsis);setCounter(counter + 0);};// 自定义收起文案const renderFold = () => {return (<a className="ant-typography-fold" onClick={onFold}>{foldSlot ? (foldSlot) : (<span>收起<i className="iconfont icon-jiantou-shaixuanzhankai icon-fold"></i></span>)}</a>);};return (<div className={style['container']}><Paragraphkey={counter}ellipsis={{rows,expandable: true,symbol,onExpand,}}>{props?.children}{ellipsis && renderFold()}</Paragraph></div>);
};export default Example;
组件css
.container {:global {.ant-typography {margin-bottom: 0;}.ant-typography-expand,.ant-typography-fold {color: #089cdb;font-size: 13px;cursor: pointer;height: 17px;line-height: 17px;margin-left: 4px;.iconfont.icon-jiantou-shaixuanzhankai {display: inline-block;font-size: 10px;transform: rotate(90deg);}.iconfont.icon-jiantou-shaixuanzhankai.icon-fold {transform: rotate(-90deg);margin-left: 4px;}}}
}
页面使用组件
import ExpandText from '@/components/ExpandText';
import style from './index.less';export type ExampleType = unknown;
const Example: React.FC<ExampleType> = () => {return (<div className={style.container}><ExpandText>这里放入要展示的文案内容啊...</ExpandText></div>);
};export default Example;相关文章:
两种方式实现文本超出指定行数显示展开收起...
需要实现这样一个功能 默认高度下文本超出隐藏,点击展开可查看所有内容,点击收起可折叠 方法一:通过html和css实现 代码部分 html:<div className"expand-fold"><input id"check-box" type"checkbox&qu…...
Docker进阶篇-Docker网络
一、描述 1、docker不启动,默认网络情况 查看网卡情况使用,ifconfig或者ip addr ens33:本机网卡 lo:本机回环网络网卡 virbr0:在CentoS 7的安装过程中如果有选择相关虚拟化的的服务安装系统后,启动网卡时会发现 …...
用两个队列实现栈
这里写目录标题 用两个队列实现栈题目描述思路:结构逻辑图如下完整解析代码 用两个队列实现栈 leetcode 题目描述 思路: 准备两个队列,第一个队列依次出队到只剩一个数据时停止,将已出队的数据依次入队到第二个队列,…...
【数据分享】1929-2023年全球站点的逐年降雪深度数据(Shp\Excel\免费获取)
气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、能见度等指标,说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 之前我们分享过1929-2023年全球气象站点的逐年平均气温数据、逐年最高气温数据…...
Windows11安装运行Linux(Ubuntu)
一、安装windows支持 输入windows打开界面 选择虚拟机监控程序平台、适用于linux的子系统、虚拟机平台 在 Windows 系统中,"虚拟机平台"和"虚拟机监控程序平台"是两个与虚拟化相关的功能,但它们各自有着不同的作用和用途。 虚拟机…...
钉钉群机器人-发送群消息
1、钉钉群创建机器人 添加完成后,要记住 Webhook 路径; 2、机器人接入文档网址 自定义机器人接入 - 钉钉开放平台 3、JAVA代码 import com.dingtalk.api.DefaultDingTalkClient; import com.dingtalk.api.DingTalkClient; import com.dingtalk.api.re…...
OceanBase 4.2.2 GA 发布,全新特性快速预览!
在 2023 年度发布会上,OceanBase 沿着“一体化”产品战略思路,发布了一体化数据库的首个长期支持版本 4.2.1 LTS。作为 4.0 系列的首个 LTS 版本,该版本的定位是支撑客户关键业务稳定长久运行,我们非常认真的打磨了这个版本&#…...
IP代理類型詳解 | 基於網路協議、匿名性、IP來源
線上代理、HTTP代理、Socks4/5代理、動態住宅IP代理、專用代理、共用代理、開放代理、匿名代理、反向代理……是否令你感到困惑?閱讀本片文章瞭解所有。可以將代理視為你與所需網站Web伺服器之間的中間人。它接收你的請求,然後將請求發送到Web伺服器。然…...
uniapp中使用EelementPlus
uniapp的强大是非常震撼的,一套代码可以编写到十几个平台。这个可以在官网上进行查询uni-app官网。主要还是开发小型的软件系统,使用起来非常的方便、快捷、高效。 uniapp中有很多自带的UI,在创建项目的时候,就可以自由选择。而E…...
Swift Vapor 教程(查询数据、插入数据)
上一篇简单写了 怎么创建 Swift Vapor 项目以及在开发过程中使用到的软件。 这一篇写一个怎么在创建的项目中创建一个简单的查询数据和插入数据。 注:数据库配置比较重要 先将本地的Docker启动起来,用Docker管理数据库 将项目自己创建的Todo相关的都删掉…...
QT自用,勿点
自己有接近2年的前端经验(html,js,jq,vue之类的),但是一直对QT不是很熟悉,之前零散的学了一些,但是平时不怎么做界面,这几天系统的学一下。 1.7 创建第一个Qt项目_哔哩哔哩_bilibili 文档: *Qt中的信号槽…...
计组学习笔记2024/2/5
记录每天学到了什么,同时在挪移图片过程中再次理解加深印象 学计算机最重要的是理解,而不是整齐的笔记,不要主次搞混,所以以后记笔记的模式也要改一下(主要还是自己太菜,还达不到一边做到整齐笔记的同时还能够有时间做到理解,所以只能舍弃整齐时间保留理解时间)(不过如果有现成…...
Redis(三)(实战篇)
查漏补缺 1.spring 事务失效 有时候我们需要在某个 Service 类的某个方法中,调用另外一个事务方法,比如: Service public class UserService {Autowiredprivate UserMapper userMapper;public void add(UserModel userModel) {userMapper.…...
MacOS系统电脑远程桌面控制windows系统电脑【内网穿透】
最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 文章目录 1. 测试本地局域网内远程控制1.1 Windows打开远程桌面1…...
Verilog实现2进制码与BCD码的互相转换
1、什么是BCD码? BCD码是一种2进制的数字编码形式,用4位2进制数来表示1位10进制中的0~9这10个数。这种编码技术,最常用于会计系统的设计里,因为会计制度经常需要对很长的数字做准确的计算。相对于一般的浮点式记数法,…...
Codeforces Round 901 (Div. 2) C. Jellyfish and Green Apple (思维)
题目链接 代码 (判空): #include<bits/stdc.h> using namespace std; #define endl "\n" typedef long long ll; typedef pair<int, int> PII; typedef pair<PII, int> PIII; const int inf 0x3f3f3f3f; const ll infinf 0x3f3f3f3f3f3f3f3f;/…...
K8s 集群可观测性-数据分流最佳实践
简介 在微服务架构下,一个 k8s 集群中经常会部署多套业务,同时也意味着不同团队、不同角色、不同的业务会在同一集群中,需要将不同业务的数据在不同的空间进行管理和查看。 在传统的主机环境下,这个是可以通过不同的主机部署 Da…...
muduo库的模拟实现——工具部分
文章目录 一、Buffer模块1.为什么需要Buffer缓冲区2.Buffer模块的设计3.Buffer模块的实现4.Buffer缓冲区的其它设计方案 二、Socket模块1.Socket模块的设计2.Socket代码实现 三、Acceptor模块1.Acceptor模块的设计与实现2.Acceptor模块完整代码实现 四、定时器模块1.时间轮的思…...
SpringBoot接入微信公众号【服务号】
SpringBoot接入微信公众号【服务号】 一、服务号注册 注册地址:https://mp.weixin.qq.com/cgi-bin/registermidpage?actionindex&langzh_CN 注册流程参考:https://kf.qq.com/touch/faq/150804UVr222150804quq6B7.html?platform15 二、服务号配…...
2023 英特尔On技术创新大会直播 |探索视觉AI的无限可能
2023 英特尔On技术创新大会直播 | 探索视觉AI的无限可能 前言一未来的 AI:释放视觉 AI 真正潜力二AI技术突破、视觉Al挑战及前沿研究创新三全尺度视觉学习全尺度视觉学习示例1.GridConv 实现三维人体姿态估计更高准确率2.KW 预训练及迁移模型性能3.无数据增强稠密对…...
Qwen3.5-2B轻量模型评测:端侧推理延迟、功耗、准确率三维平衡点实测
Qwen3.5-2B轻量模型评测:端侧推理延迟、功耗、准确率三维平衡点实测 1. 模型概述 Qwen3.5-2B是通义千问团队推出的轻量化多模态基础模型,属于Qwen3.5系列的小参数版本(20亿参数)。该模型专为低功耗、低门槛部署场景设计…...
Wan2.2-I2V-A14B镜像免配置:所有路径预设标准化(/workspace/model /output)
Wan2.2-I2V-A14B镜像免配置:所有路径预设标准化(/workspace/model /output) 1. 镜像概述与核心优势 Wan2.2-I2V-A14B是一款专为文生视频任务优化的私有部署镜像,基于RTX 4090D 24GB显存显卡和CUDA 12.4环境深度定制。这个镜像的…...
手把手教你用Strongswan App通过IKEv2 EAP认证连接Freeradius(附调试技巧)
移动端安全连接实战:Strongswan与Freeradius的IKEv2 EAP认证深度配置指南 在移动办公日益普及的今天,企业级VPN解决方案需要兼顾安全性与易用性。Strongswan作为开源的IPsec实现,配合Freeradius进行EAP认证,能够为Android设备提供…...
别再为OpenGL窗口发愁了!用Clion+Freeglut 3.4.0快速搭建你的第一个3D立方体(Windows 11环境)
用ClionFreeglut快速搭建3D立方体的完整指南 为什么选择Freeglut而不是GLFW? 对于刚接触OpenGL的开发者来说,第一个拦路虎往往不是图形学原理本身,而是如何快速搭建一个可运行的开发环境。市面上有GLFW、SDL、GLUT等多种窗口管理库…...
m4s-converter:让B站缓存重获新生的轻量级格式转换工具
m4s-converter:让B站缓存重获新生的轻量级格式转换工具 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 当你辛苦缓存的B站视频因下架…...
javaweb农家乐民宿客房美食预订活动管理系统
目录 同行可拿货,招校园代理 ,本人源头供货商系统功能模块划分核心业务流程设计数据分析功能技术实现要点 项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作 同行可拿货,招校园代理 ,本人源头供货商 系统功能模块划分 用户管理…...
基于FireRedASR-AED-L与AIGC技术:自动生成语音错误分析报告
基于FireRedASR-AED-L与AIGC技术:自动生成语音错误分析报告 想象一下这个场景:你的团队刚刚完成了一轮大规模的语音识别系统测试,收集了上千小时的音频数据。接下来,你需要从海量的识别结果中,找出哪些词识别错了&…...
选AI面试软件,为何一定要看中防作弊、可解释、全场景?
想象一下:你花了半个月筛选简历,终于确定了100个面试候选人,却发现一半人在用AI生成器写答案、用提词器念稿,甚至找人替考;好不容易拿到AI评分,却看不懂分数怎么来的,候选人质疑时你根本没法解释…...
[Python3高阶编程] - 横跨同步异步的利器: asgiref.sync
一、asgiref.sync 是什么?asgiref.sync 是 ASGI(Asynchronous Server Gateway Interface)参考实现库 asgiref 中的核心子模块,主要用于安全地桥接同步代码与异步代码。📌 一句话总结: 它让你在异步环境中调…...
极验三代验证码全流程解析:从注册请求到ajax.php验证
1. 极验三代验证码技术架构解析 极验三代验证码作为当前主流的交互式安全验证方案,其技术架构设计体现了多重防御思想。整个验证流程采用分阶段验证机制,每个环节都设置了独立的安全校验点。从技术实现角度看,系统由前端SDK、验证逻辑引擎和风…...
