通过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遍历input取得input的name
Apr 27 Javascript
jquery 多级下拉菜单核心代码
May 21 Javascript
jQuery Dialog 弹出层对话框插件
Aug 09 Javascript
JavaScript实现LI列表数据绑定的方法
Aug 04 Javascript
初步使用Node连接Mysql数据库
Mar 03 Javascript
Bootstrap源码解读模态弹出框(11)
Dec 28 Javascript
微信小程序 sha1 实现密码加密实例详解
Jul 06 Javascript
详谈commonjs模块与es6模块的区别
Oct 18 Javascript
jQuery实现标签子元素的添加和赋值方法
Feb 24 jQuery
vue 利用路由守卫判断是否登录的方法
Sep 29 Javascript
vue-router 前端路由之路由传值的方式详解
Apr 30 Javascript
详解vue-cli项目在IE浏览器打开报错解决方法
Dec 10 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
对squid中refresh_pattern的一些理解和建议
2009/04/17 PHP
PHP中使用imagick实现把PDF转成图片
2015/01/26 PHP
php动态生成缩略图并输出显示的方法
2015/04/20 PHP
PHP实现的服务器一致性hash分布算法示例
2018/08/09 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
浅谈php常用的7大框架的优缺点
2020/07/20 PHP
快速排序 php与javascript的不同之处
2011/02/22 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
2014/07/18 Javascript
javascript中一些util方法汇总
2015/06/10 Javascript
javascript学习小结之prototype
2015/12/03 Javascript
JS实现数组按升序及降序排列的方法
2017/04/26 Javascript
详解vue项目构建与实战
2017/06/27 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
浅谈Vue 初始化性能优化
2017/08/31 Javascript
JavaScript 作用域scope简单汇总
2019/10/23 Javascript
[15:28]DOTA2 HEROS教学视频教你分分钟做大人-剧毒术士
2014/06/13 DOTA
[52:36]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python使用os模块的os.walk遍历文件夹示例
2014/01/27 Python
Python中使用items()方法返回字典元素对的教程
2015/05/21 Python
python读取oracle函数返回值
2016/07/18 Python
python PyTorch参数初始化和Finetune
2018/02/11 Python
Django中间件基础用法详解
2019/07/18 Python
pytorch多进程加速及代码优化方法
2019/08/19 Python
python有几个版本
2020/06/17 Python
Python selenium环境搭建实现过程解析
2020/09/08 Python
阿迪达斯俄罗斯官方商城:adidas俄罗斯
2017/03/08 全球购物
激光脱毛、蓝光和护肤:Tria Beauty
2019/03/28 全球购物
如何在Oracle中查看各个表、表空间占用空间的大小
2015/10/31 面试题
如何在C# winform中异步调用web services
2015/09/21 面试题
《自然之道》教学反思
2014/02/11 职场文书
高中生的自我评价
2014/03/04 职场文书
品质主管岗位职责
2014/03/16 职场文书
基层党支部承诺书
2015/04/30 职场文书
忠犬八公的故事观后感
2015/06/05 职场文书
员工安全责任协议书
2016/03/22 职场文书
postgresql如何找到表中重复数据的行并删除
2023/05/08 MySQL