通过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下拉缓冲菜单示例代码
Aug 30 Javascript
js监听鼠标事件控制textarea输入字符串的个数
Sep 29 Javascript
jQuery对指定元素中指定字符串进行替换的方法
Mar 17 Javascript
JavaScript实现简单图片翻转的方法
Apr 17 Javascript
JS实现兼容性好,带缓冲的动感网页右键菜单效果
Sep 18 Javascript
angularjs $http调用接口的方式详解
Aug 13 Javascript
关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性)
Sep 04 Javascript
微信开发之微信jssdk录音功能开发示例
Oct 22 Javascript
详解原生JS回到顶部
Mar 25 Javascript
vue中的mescroll搜索运用及各种填坑处理
Oct 30 Javascript
vue实现登录拦截
Jun 29 Javascript
JavaScript实现图片放大预览效果
Nov 02 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
短波的认识
2021/03/01 无线电
PHP Stream_*系列函数
2010/08/01 PHP
PHP编码转换
2012/11/05 PHP
PHP将字符分解为多个字符串的方法
2014/11/22 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
2015/05/08 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
jQuery照片伸缩效果不影响其他元素的布局
2014/05/09 Javascript
javascript模拟post提交隐藏地址栏的参数
2014/09/03 Javascript
2014最热门的JavaScript代码高亮插件推荐
2014/11/25 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
js获取微信版本号的方法
2015/05/12 Javascript
jquery自定义表格样式
2015/11/23 Javascript
Javascript计算二维数组重复值示例代码
2016/12/18 Javascript
AngularJS 文件上传控件 ng-file-upload详解
2017/01/13 Javascript
纯JS实现轮播图
2017/02/22 Javascript
详解angular用$sce服务来过滤HTML标签
2017/04/11 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
ionic3实战教程之随机布局瀑布流的实现方法
2017/12/28 Javascript
微信小程序button组件使用详解
2018/01/31 Javascript
javascript将非数值转换为数值
2018/09/13 Javascript
vue-cli项目修改文件热重载失效的解决方法
2018/09/19 Javascript
详解Vue中watch的详细用法
2018/11/28 Javascript
Vue+Node实现的商城用户管理功能示例
2019/12/23 Javascript
[03:12]完美世界DOTA2联赛PWL DAY9集锦
2020/11/10 DOTA
Python调用C# Com dll组件实战教程
2017/10/12 Python
快速了解python leveldb
2018/01/18 Python
Python中list的交、并、差集获取方法示例
2019/08/01 Python
Python如何使用k-means方法将列表中相似的句子归类
2019/08/08 Python
微信小程序实现可实时改变转速的css3旋转动画实例代码
2018/09/11 HTML / CSS
毕业生个人的求职信范文
2013/12/03 职场文书
高校教师自荐信范文
2014/03/13 职场文书
2014司机年终工作总结
2014/12/05 职场文书
归元寺导游词
2015/02/06 职场文书
青岛海底世界导游词
2015/02/11 职场文书
国家助学贷款承诺书
2015/04/30 职场文书