通过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 win 7透明弹出层效果的简单代码
Aug 06 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
Jul 28 Javascript
微信小程序 Nginx环境配置详细介绍
Feb 14 Javascript
angular2中Http请求原理与用法详解
Jan 11 Javascript
解决使用vue.js路由后失效的问题
Mar 17 Javascript
vue左右侧联动滚动的实现代码
Jun 06 Javascript
微信小程序实现左右联动的实战记录
Jul 05 Javascript
Angular6新特性之Angular Material
Dec 28 Javascript
JavaScript this使用方法图解
Feb 04 Javascript
redux处理异步action解决方案
Mar 22 Javascript
记一次react前端项目打包优化的方法
Mar 30 Javascript
js实现简单贪吃蛇游戏
May 15 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
全国FM电台频率大全 - 30 宁夏回族自治区
2020/03/11 无线电
PHP图片上传代码
2013/11/04 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
2014/04/29 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
2014/11/19 PHP
php实现的树形结构数据存取类实例
2014/11/29 PHP
php实现refresh刷新页面批量导入数据的方法
2014/12/23 PHP
如何通过Linux命令行使用和运行PHP脚本
2015/07/29 PHP
js为数字添加逗号并格式化数字的代码
2013/08/23 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
js 动态修改css文件的方法
2014/08/05 Javascript
Js 正则表达式知识汇总
2014/12/02 Javascript
JavaScript获取Url里的参数
2014/12/18 Javascript
javascript字符串与数组转换汇总
2015/05/26 Javascript
深入理解JavaScript中的箭头函数
2015/07/28 Javascript
详解JavaScript对象和数组
2015/12/03 Javascript
jQuery定义插件的方法
2015/12/18 Javascript
Vue.js计算属性computed与watch(5)
2016/12/09 Javascript
vuejs如何配置less
2017/04/25 Javascript
php 修改密码实现代码
2017/05/24 Javascript
vue-router 组件复用问题详解
2018/01/22 Javascript
微信小程序实现导航栏选项卡效果
2020/06/19 Javascript
200行代码实现blockchain 区块链实例详解
2018/03/14 Javascript
vue项目中vue-i18n和element-ui国际化开发实现过程
2018/04/25 Javascript
SVG实现时钟效果
2018/07/17 Javascript
python实现寻找最长回文子序列的方法
2018/06/02 Python
Python错误处理操作示例
2018/07/18 Python
Python3爬虫使用Fidder实现APP爬取示例
2018/11/27 Python
Python Tensor FLow简单使用方法实例详解
2020/01/14 Python
Python要如何实现列表排序的几种方法
2020/02/21 Python
如何打包Python Web项目实现免安装一键启动的方法
2020/05/21 Python
汉森批发:Hansen Wholesale
2018/05/24 全球购物
西班牙购买隐形眼镜、眼镜和太阳镜网站:Lentiamo.es
2020/06/11 全球购物
土木工程实习生自我鉴定
2013/09/19 职场文书
加拿大留学自荐信
2014/01/28 职场文书
安全标语大全
2014/06/10 职场文书
辩论会主持词
2015/07/03 职场文书