通过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 相关文章推荐
javascript 四则运算精度修正函数代码
May 31 Javascript
javascript中的parseInt和parseFloat区别
Jul 12 Javascript
详解jQuery插件开发中的extend方法
Nov 19 Javascript
Javascript中arguments用法实例分析
Jun 13 Javascript
Bootstrap风格的WPF样式
Dec 07 Javascript
浅谈js-FCC算法Friendly Date Ranges(详解)
Apr 10 Javascript
JavaScript实现简单的四则运算计算器完整实例
Apr 28 Javascript
Vue如何实现响应式系统
Jul 11 Javascript
微信小程序canvas拖拽、截图组件功能
Sep 04 Javascript
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
Sep 12 Javascript
JavaScript将数组转换为链表的方法
Feb 16 Javascript
详解js中的原型,原型对象,原型链
Jul 16 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 301转向实现代码
2008/09/18 PHP
PHP 开发环境配置(Zend Server安装)
2010/04/28 PHP
php动态绑定变量的用法
2015/06/16 PHP
PHP生成指定范围内的N个不重复的随机数
2019/03/18 PHP
js事件监听器用法实例详解
2015/06/01 Javascript
仿百度换肤功能的简单实例代码
2016/07/11 Javascript
Bootstrap导航条学习使用(二)
2017/02/08 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
前端图片懒加载(lazyload)的实现方法(提高用户体验)
2017/08/21 Javascript
详解react、redux、react-redux之间的关系
2018/04/11 Javascript
详解Axios 如何取消已发送的请求
2018/10/20 Javascript
vue组件中的样式属性scoped实例详解
2018/10/30 Javascript
js使用Promise实现简单的Ajax缓存
2018/11/14 Javascript
js中位运算的运用实例分析
2018/12/11 Javascript
详解微信小程序之一键复制到剪切板
2019/04/24 Javascript
vue 父组件中调用子组件函数的方法
2019/06/06 Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
2019/06/10 Javascript
Ajax请求时无法重定向的问题解决代码详解
2019/06/21 Javascript
JavaScript实现轮播图效果
2020/10/30 Javascript
Windows下安装python2.7及科学计算套装
2015/03/05 Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
2017/11/01 Python
Python使用folium excel绘制point
2019/01/03 Python
Pycharm保存不能自动同步到远程服务器的解决方法
2019/06/27 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
GDAL 矢量属性数据修改方式(python)
2020/03/10 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
2021/02/26 Python
python 制作磁力搜索工具
2021/03/04 Python
收集的7个CSS3代码生成工具
2010/04/17 HTML / CSS
Born鞋子官网:Born Shoes
2017/04/06 全球购物
Rag & Bone官网:瑞格布恩高级成衣
2018/04/19 全球购物
光声世纪笔试题目
2012/08/25 面试题
商务日语专业毕业生求职信
2013/10/26 职场文书
冰淇淋店的创业计划书
2014/02/07 职场文书
离婚协议书范本
2015/01/26 职场文书
2015年仓库工作总结
2015/04/09 职场文书
班主任工作经验交流会总结
2015/11/02 职场文书