通过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 常见对象类创建代码与优缺点分析
Dec 07 Javascript
基于jquery打造的百分比动态色彩条插件
Sep 19 Javascript
JavaScript:new 一个函数和直接调用函数的区别分析
Jul 10 Javascript
判断客户浏览器是否支持cookie的示例代码
Dec 23 Javascript
javascript动态判断html元素并执行不同的操作
Jun 16 Javascript
js表单元素checked、radio被选中的几种方法(详解)
Aug 22 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
Dec 01 Javascript
详解如何将 Vue-cli 改造成支持多页面的 history 模式
Nov 20 Javascript
使用vue制作探探滑动堆叠组件的实例代码
Mar 07 Javascript
详解在vue-cli项目下简单使用mockjs模拟数据
Oct 19 Javascript
多页vue应用的单页面打包方法(内含打包模式的应用)
Jun 11 Javascript
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
Jul 24 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
雄兵连三大错觉:凯莎没了,凉冰阵亡了,华烨觉得自己又行了
2020/04/09 国漫
PHP批量上传图片的具体实现方法介绍.
2014/02/26 PHP
PHP中require和include路径问题详解
2014/12/25 PHP
thinkphp验证码的实现(form、ajax实现验证)
2016/07/28 PHP
基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能
2017/02/24 PHP
利用PHP判断是否是连乘数字串的方法示例
2017/07/03 PHP
laravel实现查询最后执行的一条sql语句的方法
2019/10/09 PHP
Fastest way to build an HTML string(拼装html字符串的最快方法)
2011/08/20 Javascript
jQuery bxCarousel实现图片滚动切换效果示例代码
2013/05/15 Javascript
javascript 表格内容排序 简单操作示例代码
2014/01/03 Javascript
javascript 动态创建表格
2015/01/08 Javascript
js获取微信版本号的方法
2015/05/12 Javascript
javascript实现tab切换的两个实例
2015/11/05 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
JS验证不重复验证码
2017/02/10 Javascript
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
mui 打开新窗口的方式总结及注意事项
2017/08/20 Javascript
vue使用$emit时,父组件无法监听到子组件的事件实例
2018/02/26 Javascript
微信小程序代码上传、审核发布小程序
2019/05/18 Javascript
JavaScript数组类型Array相关的属性与方法详解
2020/09/08 Javascript
wxPython学习之主框架实例
2014/09/28 Python
用Python进行一些简单的自然语言处理的教程
2015/03/31 Python
python中通过预先编译正则表达式提高效率
2017/09/25 Python
超简单使用Python换脸实例
2019/03/27 Python
Python登录系统界面实现详解
2019/06/25 Python
python+numpy实现的基本矩阵操作示例
2019/07/19 Python
python对Excel的读取的示例代码
2020/02/14 Python
HTML5本地存储之Web Storage应用介绍
2013/01/06 HTML / CSS
斯洛伐克香水和化妆品购物网站:Parfemy-Elnino.sk
2020/01/28 全球购物
如何让Java程序执行效率更高
2014/06/25 面试题
贷款承诺书范文
2014/05/19 职场文书
公司委托书格式
2014/08/01 职场文书
2015年秋季灭鼠工作总结
2015/07/27 职场文书
python迷宫问题深度优先遍历实例
2021/06/20 Python
解决Jenkins集成SonarQube遇到的报错问题
2021/07/15 Java/Android
解决linux下redis数据库overcommit_memory问题
2022/02/24 Redis