通过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中replaceAll()方法用法实例
Jan 16 Javascript
ECMAScript 5严格模式(Strict Mode)介绍
Mar 02 Javascript
JS根据key值获取URL中的参数值及把URL的参数转换成json对象
Aug 26 Javascript
jQuery鼠标悬浮链接弹出跟随图片实例代码
Jan 08 Javascript
JavaScript中的闭包
Feb 24 Javascript
JavaScript原生节点操作小结
Jan 17 Javascript
JS检测数组类型的方法小结
Mar 14 Javascript
JS实现仿UC浏览器前进后退效果的实例代码
Jul 17 Javascript
浅谈vue项目可以从哪些方面进行优化
May 05 Javascript
详解keep-alive + vuex 让缓存的页面灵活起来
Apr 19 Javascript
Node.js一行代码实现静态文件服务器的方法步骤
May 07 Javascript
jQuery中使用validate插件校验表单功能
May 24 jQuery
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
海贼王动画变成“真人”后,凯多神还原,雷利太帅了!
2020/04/09 日漫
PHP中空字符串介绍0、null、empty和false之间的关系
2012/09/25 PHP
Yii框架引入coreseek分页功能示例
2019/02/08 PHP
PHP单例模式数据库连接类与页面静态化实现方法
2019/03/20 PHP
JavaScript脚本性能的优化方法
2007/02/02 Javascript
得到文本框选中的文字,动态插入文字的js代码
2007/03/07 Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
2014/06/07 Javascript
javascript学习笔记之函数定义
2015/06/25 Javascript
JavaScript实现数据类型的相互转换
2016/03/06 Javascript
关于原生js中bind函数的简单实现
2016/08/10 Javascript
关于angularJs指令的Scope(作用域)介绍
2016/10/25 Javascript
JS小数转换为整数的方法分析
2017/01/07 Javascript
js实现按座位号抽奖
2017/04/05 Javascript
vue axios同步请求解决方案
2017/09/29 Javascript
Vue的路由动态重定向和导航守卫实例
2018/03/17 Javascript
Angularjs中date过滤器失效的问题及解决方法
2018/07/06 Javascript
ajax跨域访问遇到的问题及解决方案
2019/05/23 Javascript
微信小程序实用代码段(收藏版)
2019/12/17 Javascript
Vue 组件注册全解析
2020/12/17 Vue.js
跟老齐学Python之有容乃大的list(4)
2014/09/28 Python
Python中使用SAX解析xml实例
2014/11/21 Python
Python入门之三角函数全解【收藏】
2017/11/08 Python
TensorFlow利用saver保存和提取参数的实例
2018/07/26 Python
python3.6使用pickle序列化class的方法
2018/10/22 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
2018/11/06 Python
Linux上使用Python统计每天的键盘输入次数
2019/04/17 Python
python之mock模块基本使用方法详解
2019/06/27 Python
Pandas中resample方法详解
2019/07/02 Python
python 哈希表实现简单python字典代码实例
2019/09/27 Python
给我一面国旗 python帮你实现
2019/09/30 Python
Python按照list dict key进行排序过程解析
2020/04/04 Python
OpenCV+python实现实时目标检测功能
2020/06/24 Python
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
美国流行背包品牌:JanSport(杰斯伯)
2018/03/02 全球购物
教育课题研究自我鉴定范文
2013/12/28 职场文书
网络书店创业计划书
2014/02/07 职场文书