html文本超出隐藏,展开和收起。

主要是实现当文本的长度超出一定的长度时,文本剩余的部分省略,出现展开,点击展开,文本全部显示,点击收起,文本回复省略显示。

之前文本的超出多少行省略显示主要是用到以下的css样式来控制

 text-overflow: -o-ellipsis-lastline;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;/*行数*/
    line-clamp: 2;/*行数*/
    -webkit-box-orient: vertical;

现在来实现根据文本的长度,超出省略显示
效果如下:
在这里插入图片描述
在这里插入图片描述
主要用到的是封装好的插件函数,主要代码如下:

(function($) {
				/*
				 * 使用方法:1. $("you Dom ClassName or ID").overTexts({ texts:"you need overhide text...." });//这种的初始的,不带参数的,默认参数是 20字长 且显示展开和收起的
				 * texts: "测试文本...此处省略200字...测试文本",
				 * textLength: "20", //你需要定义超过多少字,就显示收起
				 * overText: "展开",  //你需要设置的默认名称,展开 显示
				 * openText: "收起",  //你需要设置的默认名称,收起 收缩
				 * ooType: "2" //展开和收缩的类型, 0 不显示展开和收缩,仅为省略号 || 1 显示展开,不显示收缩 ||2 显示展开和收缩 || 3显示省略号
				 * 
				 * */
				$.fn.overTexts = function(options) {
					var ooText,t1;
					var dft = {
						//初始化的参数配置
						texts: "展开和收缩的类型, 0 不显示展开和收缩,仅为省略号 || 1 显示展开,不显示收缩 ||2 显示展开和收缩",
						textLength: "40",
						overText: "展开",
						openText: "收起",
						ooType: "2" //展开和收缩的类型, 0 不显示展开和收缩,仅为省略号 || 1 显示展开,不显示收缩 ||2 显示展开和收缩 || 3显示省略号
					}
					var opt = $.extend(dft, options);
					ooText = opt.texts;			//临时装载 数据 用于填充到data-text内的
					if (options.ooType == '0') {
						$(this).html("<div class='moreText' data-text="+opt.texts+">" + opt.texts + "</div>");
					}
					if (options.ooType == '1') {
							ooText = opt.texts;
						if (opt.texts.length > opt.textLength) {
							t1 = opt.texts.substring(0, opt.textLength) + "<a class='moreoh'   >"+opt.overText+"</a>";
						}else{
							t1 = opt.texts;
						}
						$(this).html("<div class='moreText' data-text="+ooText+">" + t1 + "</div>");
					}
					if (options.ooType == '2') {
						if (opt.texts.length > opt.textLength) {
							t1 = opt.texts.substring(0, opt.textLength) +'...'+ "<a class='moreoh' >"+opt.overText+"</a>";
						}else{
							t1 = opt.texts;
						}
						
					}
					if (options.ooType == '3') {
						if (opt.texts.length > opt.textLength) {
							t1 = opt.texts.substring(0, opt.textLength) + "...";
						}else{
							t1 = opt.texts;
						}
						
					}
					//无论何种结果,均执行此
					$(this).html("<div class='moreText' data-text="+ooText+">" + t1 + "</div>");
					//此处判断 就是 已经有展开或者收起了
					if($(this).find("a").hasClass("moreoh")){
						//事件委托,让他可以执行
						$(".moreText").on("click","a.moreoh",function(){//更多或者收起的点击事件
								var moreoh = $(this).find("a.moreoh");//我是更多或者收起的dom
							if(moreoh.context.innerText== opt.overText){//如果我此时是展开
								if(opt.ooType==2){
									t1 = opt.texts+ "<a class='moreoh' >"+opt.openText+"</a>";
									moreoh.context.innerText = opt.openText;
									$(this).parents(".moreText").html(t1);
								}else{
									t1=opt.texts;
									$(this).parents(".moreText").html(t1);
								}
								
							}
							if(moreoh.context.innerText== opt.openText){//如果我此时是收起
								t1 = opt.texts.substring(0, opt.textLength) + '...'+"<a class='moreoh'    >"+opt.overText+"</a>";
								moreoh.context.innerText = opt.overText;
								$(this).parents(".moreText").html(t1);
							}
						});
					}
					
				}
			})(jQuery);

使用如下:

 <div class="tip_txt"></div>
$(".tip_txt").overTexts({
					texts: '在Web1.0时代,由于网速和终端能力的限制,大部分网站只能呈现简单的图文信息,并不能满足用户在界面上的需求,对界面技术的要求也不高。随着硬件的完善、高性能浏览器的出现和宽带的普及,技术可以在用户体验方面实现更多种可能,前端技术领域迸发出旺盛的生命力。',
					textLength: "50",
					overText: "展开",
					openText: "收起",
					ooType: "2" 					
				});
  • 13
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
你可以通过 HTML 和 JavaScript 实现点击展开更多和收起的效果。一种常见的实现方式是使用 `<div>` 元素和 CSS 样式来控制文本的显示和隐藏,结合 JavaScript 来实现点击事件。 下面是一个简单的示例代码,其中文本内容默认显示 3 行,点击按钮可以展开全部内容或收起部分内容: ```html <style> .content { overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 3; /* 显示 3 行 */ -webkit-box-orient: vertical; } .btn { cursor: pointer; color: blue; text-decoration: underline; } </style> <div class="content"> 这是一段比较长的文本内容,可能会超出默认显示的行数。这是一段比较长的文本内容,可能会超出默认显示的行数。这是一段比较长的文本内容,可能会超出默认显示的行数。这是一段比较长的文本内容,可能会超出默认显示的行数。 </div> <div class="btn" onclick="toggle()">展开更多</div> <script> function toggle() { var content = document.querySelector('.content'); var btn = document.querySelector('.btn'); if (content.classList.contains('expanded')) { // 当前是展开状态 content.classList.remove('expanded'); btn.textContent = '展开更多'; } else { // 当前是收起状态 content.classList.add('expanded'); btn.textContent = '收起'; } } </script> ``` 在上面的代码中,我们使用 CSS 样式控制 `.content` 元素的显示和隐藏,并且使用 JavaScript 来切换展开收起状态。点击 `.btn` 元素时,调用 `toggle()` 函数来切换状态,并且修改按钮的文本内容。同时,我们可以通过 CSS 样式来控制展开状态和收起状态的样式。 注意:上面的代码示例只是一个简单的实现方式,具体的实现方法可能会根据实际情况有所不同。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值