您现在的位置是:首页 > Javascript
当前栏目
[javascript] 实现展开全文和收起全文效果
2023-02-18 15:41:53 时间
在展示大量文本的时候,很多网站会在页面上出现一个展开全文的文字按钮 , 点击这个按钮才会展开全部内容 .
使用jquery比较容易实现 , 最开始我想直接根据vuejs的语法来实现效果 , 结果失败 , 还是jq做起来简单
思路是 , 获取当前文本的div高度 ,超过一定高度就增加一个class值 . 它旁边的点击展开全文默认隐藏 , 超过高度展示 .
展开全文点击后更换文字内容为收起全文
在vuejs中也可以正常使用jquery , 增加一个method
displayAll(){ $(function(){ let obj=$("body").find(".mailMainIntro"); let readMore=$(".readMore"); readMore.hide(); obj.removeClass("mainIntroZhe"); obj.each(function(){ let height=$(this).height(); let text=$(this).text(); console.log(height,text); if(height>67){ $(this).addClass("mainIntroZhe"); $(this).next().show(); } }); readMore.unbind("click").click(function(e){ let text=$(this).text(); if(text=="展开全文"){ $(this).text("收起全文"); $(this).prev().removeClass("mainIntroZhe"); } if(text=="收起全文"){ $(this).text("展开全文"); $(this).prev().addClass("mainIntroZhe"); } return; }); }); }
html部分是这样的
<el-row v-for="(item, index) in weiboList" :key="index" class="mainAccountBox"> <el-card :body-style="{ padding: '10px' }"> <el-col :span="3"> <el-avatar :size="60"> <img :src="item.img" class="image"> </el-avatar> </el-col> <el-col :span="21"> <div class="mainAccountList"> <div class="title">{{item.name}}</div> <div class="mailMainIntro" v-html="item.text" > </div> <div class="readMore">展开全文</div> <div class="turnWeibo" v-if="item.weibo!=null&&item.weibo.length!=0"> <div class="title">@{{item.weibo.name}}</div> <div class="mailMainIntro" v-html="item.weibo.text"></div> <div class="readMore">展开全文</div> </div> <div class="mainTime"> {{item.create_time}} <span v-html="item.source"></span> </div> <div class="bottom"> <el-button type="primary" v-on:click="copySpecialTopicUrl(item.weibo_url)" class="button">复制URL</el-button> <el-button type="primary" v-on:click="copySpecialTopicUrl('http://t.cn/'+item.short_url)" class="button">复制短URL</el-button> <el-button type="success" class="button">推至CMS</el-button> </div> </div> </el-col> <div class="clearfix"></div> </el-card> </el-row>
ajax获取完数据后就执行一下displayAll方法
getWeiboList: function () { let _this = this; let data={}; if(this.weiboSearch != ""){ data.word=this.weiboSearch; } if(this.pickTime != ""){ data.dt=this.pickTime; } $.get('index.php?r=media/getdata',data, function (rs) { let res= JSON.parse(rs); _this.weiboList=res.result.rows; _this.displayAll(); }).then(()=>{ this.getTodayNums(); }); },
相关文章
- 渗透测试-登陆口js前端加密绕过
- [你必须知道的JavaScript]解构赋值
- JavaScript基础
- 手写一个格式化json工具
- threejs旋转入门
- 我用nodejs实现了热加载接口文件,感觉又离“serverless”进了一步
- nodejs 解决sql注入方案
- nvm-windows管理nodejs版本神器——代理和镜像配置
- 关于node代码如何丝滑执行多条命令行这件事
- JavaMoney规范(JSR 354)与对应实现解读
- Node.js 应用全链路追踪技术——[全链路信息获取]
- api接口返回动态的json格式?我太难了,尝试一下 linq to json
- 对 JsonConvert 的认识太肤浅了,终于还是遇到了问题
- Node.js 模块化你所需要知道的事
- 初识 D3.js :打造专属可视化
- knockoutjs如何动态加载外部的file作为component中的template数据源
- NodeJs和NPM的基本操作
- 使用 System.Text.Json 时,如何处理 Dictionary 中 Key 为自定义类型的问题
- 如何使用 System.Text.Json 序列化 DateTimeOffset 为 Unix 时间戳
- javascript使用正则表达式替换或者捕获子字符串