通过javascript实现段落的收缩与展开


Posted in Javascript onJune 26, 2019

主要是使用-webkit-line-clamp这个属性进行限制显示行数,通过计算文字在标签内的显示高度来计算当前文字行数,再与需要限制的行数进行对比,来确定是否显示

   代码如下:

<!--Created by lmj on 2017/8/10.-->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
<title>段落的收起与展开</title>
<script src="js/jquery.js"></script>
<style type="text/css">
.info-shrink-text {
display: -webkit-box;
overflow: hidden;
text-overflow: ellipsis;
-webkit-box-orient: vertical;
}
#info-manager-content {
text-indent: 2em;
font-size: 12px;
color: #404040;
font-family: 微软雅黑;
}
.more-text {
display: -webkit-box;
width: 100%;
-webkit-box-sizing: border-box;
-webkit-box-pack: end;
padding-right: 10px;
color: #00a5e0;
font-size: 14px;
}
</style>
</head>
<body>
<div class="ui-tab">
<P id="info-manager-content" class="info-shrink-text">
测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.
测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.
测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.
测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.
测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.
测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.
测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.测试段落的展开与收起.
测试段落的展开与收起.测试段落</P>
<div class="more-text">查看更多</div>
</div>
<script type="text/javascript">
var isHide = true;
var textContainer;
function initView() {
textContainer = $("#info-manager-content");
var single=document.createElement("div");
// 设置文字样式
single.style.cssText = "padding:0;visibility:hidden;font-familly:微软雅黑;font-size:12px";
single.innerHTML = "单";
document.body.appendChild(single);
//获取该样式下的单个文字的高度
var singleHeight = single.offsetHeight;
document.body.removeChild(single);
//获取整个段落的高度
var paragraphHeight = textContainer.innerHeight();
//设置你要限制的高度
var limitHeight = 50;
//当前文本行数
var currentLine = (paragraphHeight/singleHeight).toFixed(0);
//转化为行数
var lineCount = (limitHeight / singleHeight).toFixed(0);
// alert(singleHeight+"----"+paragraphHeight+"---"+lineCount+"---"+currentLine);
// 修改段落限制行数
textContainer.attr("style", "-webkit-line-clamp:" + lineCount);
// 设置按钮的显示或隐藏
if (currentLine >= lineCount) {
$(".more-text").show();
isHide = true;
} else {
$(".more-text").hide();
}
}
initView();
window.onresize = function () {
initView();
};
//添加点击事件
$(".more-text").on("click", function () {
if (isHide) {
textContainer.removeClass("info-shrink-text");
$(this).text("收起");
isHide = false;
} else {
textContainer.addClass("info-shrink-text");
$(this).text("查看更多");
isHide = true;
}
});
</script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
利用jQuery实现可以编辑的表格
May 26 Javascript
浅谈javascript中的call、apply、bind
Mar 06 Javascript
浅谈JavaScript的push(),pop(),concat()方法
Jun 03 Javascript
javascript 实现动态侧边栏实例详解
Nov 11 Javascript
web.js.字符串与正则表达式操作
May 13 Javascript
详解从angular-cli:1.0.0-beta.28.3升级到@angular/cli:1.0.0
May 22 Javascript
浅谈struts1 &amp; jquery form 文件异步上传
May 25 jQuery
基于openlayers4实现点的扩散效果
Aug 17 Javascript
Vue3.0 响应式系统源码逐行分析讲解
Oct 14 Javascript
vue随机验证码组件的封装实现
Feb 19 Javascript
vscode 使用Prettier插件格式化配置使用代码详解
Aug 10 Javascript
JS+CSS实现炫酷光感效果
Sep 05 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
Jun 26 #Javascript
Vue实现日历小插件
Jun 26 #Javascript
微信小程序入口场景的问题集合与相关解决方法
Jun 26 #Javascript
Vue组件实现触底判断
Jun 26 #Javascript
vue-week-picker实现支持按周切换的日历
Jun 26 #Javascript
CKeditor4 字体颜色功能配置方法教程
Jun 26 #Javascript
Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示
Jun 26 #Javascript
You might like
详解PHP序列化反序列化的方法
2015/10/27 PHP
PHP将数据导出Excel表中的实例(投机型)
2017/07/31 PHP
PHP删除数组中指定下标的元素方法
2018/02/03 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
php实现的PDO异常处理操作分析
2018/12/27 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
2020/01/02 PHP
jquery基础教程之deferred对象使用方法
2014/01/22 Javascript
JS判断移动端访问设备并加载对应CSS样式
2014/06/13 Javascript
JS添加删除DIV的简单实例
2016/07/08 Javascript
AngularJS删除路由中的#符号的方法
2016/09/20 Javascript
详解ECharts使用心得总结
2016/12/06 Javascript
mongoose设置unique不生效问题的解决及如何移除unique的限制
2017/11/07 Javascript
Vue 进入/离开动画效果
2017/12/26 Javascript
vue cli构建的项目中请求代理与项目打包问题
2018/02/26 Javascript
Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现
2019/04/01 Javascript
关于微信小程序map组件z-index的层级问题分析
2019/07/09 Javascript
JS highcharts实现动态曲线代码示例
2020/10/16 Javascript
python操作gmail实例
2015/01/14 Python
Python使用Tkinter实现机器人走迷宫
2018/01/22 Python
Python对切片命名的实现方法
2018/10/16 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
2019/08/15 Python
开启Django博客的RSS功能的实现方法
2020/02/17 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
意大利制造的西装、衬衫和针对男士量身定制的服装:Lanieri
2018/04/08 全球购物
Bulk Powders意大利:运动补充在线商店
2019/02/09 全球购物
过滤器的用法
2013/10/08 面试题
化工专业个人的求职信范文
2013/11/28 职场文书
高中考试作弊检讨书
2014/01/14 职场文书
农民工工资发放承诺书
2014/03/31 职场文书
职业生涯规划书结束语
2014/04/15 职场文书
企业文明单位申报材料
2014/05/16 职场文书
十佳家长事迹材料
2014/08/26 职场文书
学生会感恩节活动方案
2014/10/11 职场文书
幼儿园小班教师随笔
2015/08/14 职场文书
OpenCV-Python直方图均衡化实现图像去雾
2021/06/07 Python