[HTML+CSS+Vue.js] 超长文本等内容默认折叠显示,点击展开全文,再点击收起(仿知乎效果)

article/2025/8/28 5:10:00

今天在做一个仿博客主页,日记的部分想做成折叠展开的效果,这样比较有利于浏览和交互,然后想起知乎问答的页面效果,就很符合我想要的样式:
截图示例
因为之前没做过,不知从何下手,在网上查了大半天,一直想找最方便最简洁的代码……可惜大部分都很复杂,看着费劲,但确实给了我很多启发,于是我灵光一闪,开始自己头脑风暴:

  • 需求: 浏览时默认只显示前三行文本,剩余部分折叠,点击“展开阅读全文”显示完整文本,再点击文末的“收起”恢复折叠状态
  • 美化: “展开阅读全文”折叠杆挡住面板下端,并呈现半透明渐变效果
  • 技术: HTML + CSS + Vue.js

HTML代码:

<div id="example"><!-- 利用v-if…v-else切换 展开 和 收起 两个画面,template包裹多个元素 --><template v-if="isHide"><!-- 只显示摘要的画面 --><div class="hideBg"><p class="summary">{{ content }}</p><div class="showBtn"><!-- 绑定点击事件onShow,点击展开全文 --><a href="#" @click.stop.prevent="onShow">展开阅读全文&nbsp;<!-- 向下的角箭头符号,用css画 --><span class="downArrow"></span></a></div></div></template><template v-else><!-- 显示完整内容的画面 --><div class="showBg"><p>{{ content }}</p><div class="hideBtn"><!-- 绑定点击事件onHide,点击收起内容 --><a href="#" @click.stop.prevent="onHide">收起&nbsp;<!-- 向上的角箭头符号 --><span class="upArrow"></span></a></div></div></template>
</div>

CSS代码:

/* 摘要背景板 */
.hideBg {width: 500px;background-color: #e9ecef;margin: 1.5rem;padding: 1.5rem;padding-bottom: 0;    /* 方便渐变层遮挡 */position: relative;    /* 用于子元素定位 */
}
/* 全文背景板,基本与摘要相同 */
.showBg {width: 500px;background-color: #e9ecef;margin: 1.5rem;padding: 1.5rem;
}
/* 摘要内容 */
.summary {overflow: hidden;    /* 隐藏溢出内容 */text-overflow: clip;    /* 修剪文本 */display: -webkit-box;    /* 弹性布局 */-webkit-box-orient: vertical;    /* 从上向下垂直排列子元素 */-webkit-line-clamp: 3;    /* 限制文本仅显示前三行 */
}
#example p {text-indent: 2em;
}
/* 展开按钮 */
.showBtn {width: 100%;    /* 与背景宽度一致 */height: 3rem;position: absolute;    /* 相对父元素定位 */top: 3rem;    /* 刚好遮挡在最后两行 */left: 0;z-index: 0;    /* 正序堆叠,覆盖在p元素上方 */text-align: center;background: linear-gradient(rgba(233,236,239,.5), white);    /* 背景色半透明到白色的渐变层 */padding-top: 3rem;
}
/* 收起按钮 */
.hideBtn {text-align: right;
}
#example a {text-decoration: none;    /* 清除链接默认的下划线 */
}
/* 向下角箭头 */
.downArrow {display: inline-block;width: 8px;    /* 尺寸不超过字号的一半为宜 */height: 8px;border-right: 1px solid;    /* 画两条相邻边框 */border-bottom: 1px solid;transform: rotate(45deg);    /* 顺时针旋转45° */margin-bottom: 3px;
}
/* 向上角箭头,原理与下箭头相同 */
.upArrow {display: inline-block;width: 8px;height: 8px;border-left: 1px solid;border-top: 1px solid;transform: rotate(45deg);margin-top: 3px;
}

JS代码:

var vm = new Vue({el: '#example',data: {content: "中华人民共和国位于亚洲东部,太平洋西岸 [1]  ,是工人阶级领导的、以工农联盟为基础的人民民主专政的社会主义国家 [2]  。1949年(己丑年)10月1日成立 [3-4]  ,以五星红旗为国旗 [5]  ,《义勇军进行曲》为国歌 [6]  ,国徽内容包括国旗、天安门、齿轮和麦稻穗 [7]  ,首都北京 [8]  ,省级行政区划为23个省、5个自治区、4个直辖市、2个特别行政区 [9]  ,是一个以汉族为主体民族,由56个民族构成的统一多民族国家,汉族占总人口的91.51% [10]  。新中国成立后,随即开展经济恢复与建设 [11]  ,1953年开始三大改造 [12]  ,到1956年确立了社会主义制度,进入社会主义探索阶段 [13]  。文化大革命之后开始改革开放,逐步确立了中国特色社会主义制度。 [14] 中华人民共和国陆地面积约960万平方公里,大陆海岸线1.8万多千米,岛屿岸线1.4万多千米,内海和边海的水域面积约470多万平方千米。海域分布有大小岛屿7600多个,其中台湾岛最大,面积35798平方千米。 [1]  陆地同14国接壤,与6国海上相邻。",isHide: true    //初始值为true,显示为折叠画面},methods: {onShow: function(){this.isHide = false;    //点击onShow切换为false,显示为展开画面},onHide: function(){this.isHide = true;    //点击onHide切换为true,显示为折叠画面}}
})

效果示例:

在这里插入图片描述


http://chatgpt.dhexx.cn/article/2rjArWGF.shtml

相关文章

vue 展开全文,收起全文

样式效果 1.展开全文 2.收起全文 html <div class"content_box"><div class"cont_top"><div class"bluebox"></div><span>详情描述</span><span class"divider"></span></div&g…

html如何制作展开全文,如何实现文章内容页点击“展开阅读全文”的功能

我们在手机端看CSDN或知乎上的文章时&#xff0c;都会有一个点击展开阅读全文的按钮。这个功能效果使用还是很广泛的&#xff0c;网上也有很多这样的jq插件可以实现&#xff0c;今天小郭给大家分享一下自己在项目中常用到的js点击展开阅读全文的代码。 如下图&#xff1a; 完整…

令人头疼的“展开原文”,请收好这款神器!

互联网时代下&#xff0c;网上阅读资讯也早已成为用户习惯。 但近几年&#xff0c;随着互联网的发展&#xff0c;一个令人头疼的现象出现了&#xff0c;即网上越来越多文章&#xff0c;都需要点击一次&#xff0c;才能查看全文了&#xff0c;就像下面这样子…… 尤其对于网站的…

百度白皮书5.0解读如何合理设置展开全文功能

导读&#xff1a;2020年3月&#xff0c;百度发布了《百度APP移动搜索落地页体验白皮书5.0》。白皮书5.0发布后&#xff0c;收到许多开发者关于体验规范的反馈建议&#xff0c;针对开发者集中关心的规范问题&#xff0c;百度搜索将推出白皮书5.0系列解读文章&#xff0c;精准助力…

Mac快捷输入iPhone短信验证码

一、验证码输入&#xff1a; 二、设置步骤&#xff1a; iPhone&#xff1a;设置->短信->短信转发->打开 Mac开关

Web功能设计:验证码

验证码 简介实现简介 验证码(CAPTCHA——Completely Automated Public Turing test to tell Computers and Humans Apart,全自动区分计算机和人类的图灵测试),是一种区分用户是计算机还是人的公共全自动程序。作用:防止恶意破解密码、刷票、论坛灌水或某个黑客对某一个特定…

输入验证码投票功能的实现

点击投票的时候判断投票的时间是否在这个活动时间内 获取当前时间 传到后台和活动时间判断 投票的时间是否在这个活动时间之内 如果在的 话 弹出验证码 输入验证码投票 中间插一句验证码功能 前台 后台 生成和校验 在验证码有误之后 重新调用验证码方法刷新 验证码成…

登录时候输入验证码,验证码图片从服务器获取方法

登录时候输入验证码&#xff0c;验证码图片从服务器获取方法 小验证码图片 源码分享&#xff1a;http://pan.baidu.com/s/1skK7jRJ 展示效果&#xff1a; 登录时候输入验证码&#xff0c;验证码图片从服务器获取方法 - wangyue.123.com - moonstak jsp页面&#xff1a; <…

iOS 分割输入验证码的视觉效果

通常情况下&#xff0c;在用户注册或者登录的时候我们会用到手机验证码&#xff0c;而有时就会需要&#xff0c;分割输入验证码的视觉效果。 那这种情况&#xff0c;我们怎么实现呢&#xff1f; 在网上查了很多&#xff0c;好多都只是给了实现代码&#xff0c;给的东西都不是很…

input输入框模拟验证码输入效果

今天看到一个帖子&#xff0c;说到用input输入框模拟滴滴、摩拜等app验证码输入效果&#xff0c;提到了一个方案&#xff1a; 1、利用input来获得焦点&#xff0c;自动调用手机的数字键盘 2、实际将输入框用透明度隐藏 3、用label的for属性与input联动来显示输入的数字 于是…

vue实现验证码输入

需求&#xff1a;这种样式的验证码输入&#xff0c;进入页面时光标停留在第一个格子&#xff0c;随着输入的数字向后移动。 实现逻辑&#xff1a; ①首先考虑样式&#xff0c;将六个格子及获取光标的样式写出来。 ②需要一个input框作为输入&#xff0c;所以在页面上加input框&…

爬虫验证码-手动输入

一般网站登录的时候会有验证码的问题,下面是将验证码下载到本地,手动输入模拟登录。在请求的时候使用会话是为了保证获取的验证码、表单令牌等数据一致 import requestsfrom bs4 import BeautifulSoupheaders = {User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWeb…

小程序多个输入框输入验证码功能 实现

老套路,先上图 <view class"check"><!-- 输入核验码 --><view class"query"><view class"query_item_name">请输入核验码</view><view class"query_num_block"><input typenumber class"…

手机计算机上输入错误是什么意思,电脑输入验证码总是提示错误该怎么解决?...

不少同学都遇到过在页面中输入验证码总是错误的问题&#xff0c;并且不管更换几次验证码图片&#xff0c;依然提示验证码错误&#xff0c;着实影响心情&#xff0c;接下来小编总结了一部分造成验证码总是错误的原因以及解决办法&#xff0c;希望对大家有所帮助; 第一种&#xf…

Python模拟登陆古诗文网手动输入验证码显示验证码错误

Python模拟登陆古诗文网手动输入验证码显示验证码错误 import requests from lxml import etree sessionrequests.Session() headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36,}…

自定义验证码输入框:VerificationCodeView

先上两张效果图&#xff1a; 1.java类&#xff1a; package com...ui;import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Color; import android.text…

案例:登录中输入验证码(Session及JSP技术应用)

案例&#xff1a;登录中输入验证码(会话技术) 1.案例需求&#xff1a;1.访问带有验证码的登录页面login.jsp2.用户输入用户名&#xff0c;密码以及验证码如果用户和密码输入有误&#xff0c;跳转登录页面。提示&#xff1a;用户或密码错误如果验证码输入有误&#xff0c;跳转登…