通过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 相关文章推荐
JS按位非(~)运算符与~~运算符的理解分析
Jul 31 Javascript
基于Jquery实现的一个图片滚动切换
Jun 21 Javascript
JS对象转换为Jquery对象示例
Jan 26 Javascript
asp.net中oracle 存储过程(图文)
Aug 12 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
Jul 05 Javascript
Angularjs实现搜索关键字高亮显示效果
Jan 17 Javascript
JavaScript条件判断_动力节点Java学院整理
Jun 26 Javascript
Vue项目中quill-editor带样式编辑器的使用方法
Aug 08 Javascript
webpack4.x开发环境配置详解
Aug 04 Javascript
vue 实现搜索的结果页面支持全选与取消全选功能
May 10 Javascript
浅谈vue权限管理实现及流程
Apr 23 Javascript
原生js实现轮播图特效
May 04 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 面向对象 PHP5 中的常量
2010/05/05 PHP
php笔记之:AOP的应用
2013/04/24 PHP
深入php self与$this的详解
2013/06/08 PHP
PHP实现指定字段的多维数组排序函数分享
2015/03/09 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
jQuery中绑定事件的命名空间详解
2011/04/05 Javascript
js中return false(阻止)的用法
2013/08/14 Javascript
深入理解jquery自定义动画animate()
2016/05/24 Javascript
AngularJS自定义插件实现网站用户引导功能示例
2016/11/07 Javascript
浅谈layer的iframe弹窗给里面的标签赋值的问题
2016/11/10 Javascript
Bootstrap基本样式学习笔记之表单(3)
2016/12/07 Javascript
Jquery Easyui搜索框组件SearchBox使用详解(19)
2016/12/17 Javascript
javascript prototype原型详解(比较基础)
2016/12/26 Javascript
node.js中express中间件body-parser的介绍与用法详解
2017/05/23 Javascript
使用JS编写的随机抽取号码的小程序
2017/08/11 Javascript
如何将你的AngularJS1.x应用迁移至React的方法
2018/02/01 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
Windows系统配置python脚本开机启动的3种方法分享
2015/03/10 Python
python 实现在txt指定行追加文本的方法
2018/04/29 Python
python 借助numpy保存数据为csv格式的实现方法
2018/07/04 Python
Pycharm设置去除显示的波浪线方法
2018/10/28 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
python去重,一个由dict组成的list的去重示例
2019/01/21 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
2019/08/08 Python
python实现五子棋游戏(pygame版)
2020/01/19 Python
美国在线乐器和设备商店:Musician’s Friend
2018/07/06 全球购物
草莓网官网:StrawberryNET
2019/08/21 全球购物
泰国最新活动和优惠:Megatix
2020/05/07 全球购物
应届毕业生自我评价分享
2013/12/15 职场文书
教你打造完美的创业计划书
2014/01/06 职场文书
上班迟到检讨书
2014/01/10 职场文书
2014年度个人工作总结范文
2015/03/09 职场文书
同事欢送会致辞
2015/07/31 职场文书
开学随笔
2015/08/15 职场文书
利用Python判断你的密码难度等级
2021/06/02 Python
JPA如何使用entityManager执行SQL并指定返回类型
2021/06/15 Java/Android