通过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 相关文章推荐
jqeury eval将字符串转换json的方法
Jan 20 Javascript
JavaScript 原型继承
Dec 26 Javascript
javascript按位非运算符的使用方法
Nov 14 Javascript
js Array操作的最简短最容易理解方法
Dec 09 Javascript
jquery操作checkbox实现全选和取消全选
May 02 Javascript
在Javascript中处理字符串之big()方法的使用
Jun 08 Javascript
Jsonp post 跨域方案
Jul 06 Javascript
判断输入的字符串是否是日期格式的简单方法
Jul 11 Javascript
Vue2.0 多 Tab切换组件的封装实例
Jul 28 Javascript
简单实现jQuery上传图片显示预览功能
Jun 29 jQuery
JavaScript canvas动画实现时钟效果
Feb 10 Javascript
基于javascript实现日历功能原理及代码实例
May 07 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 服务器调试 Zend Debugger 的安装教程
2009/09/25 PHP
PHP中计算字符串相似度的函数代码
2012/12/29 PHP
laravel中的一些简单实用功能
2018/11/03 PHP
Javascript this关键字使用分析
2008/10/21 Javascript
js页面跳转常用的几种方式
2010/11/25 Javascript
jquery实现超简洁的TAB选项卡效果代码
2015/08/28 Javascript
JS去除空格和换行的正则表达式(推荐)
2016/06/14 Javascript
Bootstrap的Refresh Icon也spin起来
2016/07/13 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
2016/09/08 Javascript
vue+vuex+axios实现登录、注册页权限拦截
2018/03/09 Javascript
通过一次报错详细谈谈Point事件
2018/05/17 Javascript
微信小程序中时间戳和日期的相互转换问题
2018/07/09 Javascript
JSON生成Form表单的方法示例
2018/11/21 Javascript
微信小程序开发之点击按钮退出小程序的实现方法
2019/04/26 Javascript
node将geojson转shp返回给前端的实现方法
2019/05/29 Javascript
五分钟搞懂Vuex实用知识(小结)
2019/08/12 Javascript
Vue组件通信$attrs、$listeners实现原理解析
2020/09/03 Javascript
设计模式中的原型模式在Python程序中的应用示例
2016/03/02 Python
java中两个byte数组实现合并的示例
2018/05/09 Python
Python中使用遍历在列表中添加字典遇到的坑
2019/02/27 Python
Gauss-Seidel迭代算法的Python实现详解
2019/06/29 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
2020/05/22 Python
Python 如何创建一个简单的REST接口
2020/07/30 Python
5款实用的python 工具推荐
2020/10/13 Python
Django搭建项目实战与避坑细节详解
2020/12/06 Python
详解CSS的border边框属性及其在CSS3中的新特性
2016/05/10 HTML / CSS
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
css3实现超立体3D图片侧翻倾斜效果
2014/04/16 HTML / CSS
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
Meli Melo官网:名媛们钟爱的英国奢侈手包品牌
2017/04/17 全球购物
类成员函数的重载、覆盖和隐藏区别
2016/01/27 面试题
社区党员先进事迹
2014/01/22 职场文书
校园标语大全
2014/06/19 职场文书
2014年爱国卫生工作总结
2014/11/22 职场文书
2014年音乐教师工作总结
2014/12/03 职场文书
2016新年年会主持词
2015/07/06 职场文书