通过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 表单中textarea字数限制实现代码
Dec 07 Javascript
jquery实现智能感知连接外网搜索
May 21 Javascript
javascript实现无限级select联动菜单
Jan 02 Javascript
js实现无缝滚动图
Feb 22 Javascript
js 只比较时间大小的实例
Oct 26 Javascript
React BootStrap用户体验框架快速上手
Mar 06 Javascript
Vue实现远程获取路由与页面刷新导致404错误的解决
Jan 31 Javascript
函数式编程入门实践(一)
Apr 20 Javascript
vue element upload组件 file-list的动态绑定实现
Oct 11 Javascript
基于vue-cli3和element实现登陆页面
Nov 13 Javascript
JavaScript定时器使用方法详解
Mar 26 Javascript
vue实现移动端div拖动效果
Mar 03 Vue.js
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+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
2019/06/14 PHP
php给数组赋值的实例方法
2019/09/26 PHP
Whatever:hover 无需javascript让IE支持丰富伪类
2010/06/29 Javascript
javascript简单实现命名空间效果
2014/03/06 Javascript
jQuery学习笔记之Ajax用法实例详解
2015/12/01 Javascript
BootStrap中的table实现数据填充与分页应用小结
2016/05/26 Javascript
js中json处理总结之JSON.parse
2016/10/14 Javascript
利用jQuery.Validate异步验证用户名是否存在(推荐)
2016/12/09 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
D3.js中强制异步文件读取同步的几种方法
2017/02/06 Javascript
Angularjs之ngModel中的值验证绑定方法
2018/09/13 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
2018/10/12 Javascript
微信小程序左右滚动公告栏效果代码实例
2019/09/16 Javascript
JS实现transform实现扇子效果
2020/01/17 Javascript
Webpack中SplitChunksPlugin 配置参数详解
2020/03/24 Javascript
python3之微信文章爬虫实例讲解
2017/07/12 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
2018/11/07 Python
Python爬虫——爬取豆瓣电影Top250代码实例
2019/04/17 Python
Tensorflow分批量读取数据教程
2020/02/07 Python
关于Python Tkinter Button控件command传参问题的解决方式
2020/03/04 Python
pytorch 中forward 的用法与解释说明
2021/02/26 Python
is_file和file_exists效率比较
2021/03/14 PHP
使用HTML5捕捉音频与视频信息概述及实例
2018/08/22 HTML / CSS
html5使用canvas绘制太阳系效果
2014/12/15 HTML / CSS
去加拿大的旅行和假期:Canadian Affair
2016/10/25 全球购物
俄罗斯香水和化妆品购物网站:Л’Этуаль
2018/05/10 全球购物
美国手机支架公司:PopSockets
2019/11/27 全球购物
Can a struct inherit from another class? (结构体能继承类吗)
2014/07/22 面试题
古汉语文学求职信范文
2014/03/16 职场文书
办公室主任个人对照检查材料思想汇报
2014/10/11 职场文书
2014年图书馆工作总结
2014/11/25 职场文书
升职自我推荐信范文
2015/03/25 职场文书
毕业实习感受与体会
2015/05/26 职场文书
Python 把两层列表展开平铺成一层(5种实现方式)
2021/04/07 Python
分析SQL窗口函数之排名窗口函数
2022/04/21 Oracle