有这么个需要,列表中显示内容,默认显示3行文字,文本内容超出3行文字,显示展开/收起箭头
当前的实现是截取固定长度的文本,使之最多显示三行,现在遇到一个问题是,文本长度相同,文本
全是中文 和 不全是中文 所显示的行数是不同,有没有什么好的方式可以适应
我现在想到的一个笨方法是,逐个字符判断,如果是中文的长度+2,如果是非中文的长度+1,然后在根据总数来截取不同的长度
PS:本方法只是个想法,还未进行验证
环境要求:最低支持IE8
有这么个需要,列表中显示内容,默认显示3行文字,文本内容超出3行文字,显示展开/收起箭头
当前的实现是截取固定长度的文本,使之最多显示三行,现在遇到一个问题是,文本长度相同,文本
全是中文 和 不全是中文 所显示的行数是不同,有没有什么好的方式可以适应
我现在想到的一个笨方法是,逐个字符判断,如果是中文的长度+2,如果是非中文的长度+1,然后在根据总数来截取不同的长度
PS:本方法只是个想法,还未进行验证
环境要求:最低支持IE8
需要配置JS来判断文字内容是否超过设定的容器的初始高度,如果超过就设置折叠的CSS否者不设置
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.container{
position: absolute;
left:10px;
right:10px;
width: 200px;
border: 1px solid red;
position: relative;
}
.content{
font-size: 16px;
line-height: 1.5;
width: 100%;
color: #556170;
word-break: break-all;
text-align: justify;
margin: 0;
position: relative;
}
.collapse .content::after{
content: ' ... ';
position: absolute;
right: 0;
bottom: 0;
background: linear-gradient(to right, transparent, #ffffff 50%);
padding-left: 20px;
}
.collapse .expand-collapse::after{
content: '展开';
display: block;
color:red;
width: 100%;
text-align: right;
}
.expand .expand-collapse::after{
content: '收缩';
display: block;
color:red;
width: 100%;
text-align: right;
}
.collapse .content{
overflow: hidden;
height: 50px;
padding: 0;
margin: 0;
}
</style>
</head>
<body>
<div class="container">
<p class="content ">当前的实现是截取固定长度的文本,使之最多显示三行,现在遇到一个问题是,文本长度相同,文本
全是中文 和 不全是中文 所显示的行数是不同,有没有什么好的方式可以适应</p>
<div class="expand-collapse"></div>
</div>
<script>
var expandCollapseDiv;
var containerBoundingClientRect=document.querySelector(".container").getBoundingClientRect();
var contentBoundingClientRect=document.querySelector(".content").getBoundingClientRect();
if(containerBoundingClientRect.height>50){
document.querySelector(".container").setAttribute("class","container collapse");
}else{
document.querySelector(".container").setAttribute("class","container");
document.querySelector(".container").removeChild(document.querySelector(".expand-collapse"))
}
document.querySelector(".container").addEventListener("click",function(){
if(!expandCollapseDiv){
expandCollapseDiv=document.querySelector(".expand-collapse");
}
console.log(event.target);
if(event.target===expandCollapseDiv){
if(document.querySelector(".container").getAttribute("class").split(" ").indexOf("collapse")!==-1){
document.querySelector(".container").setAttribute("class","container expand");
}else{
document.querySelector(".container").setAttribute("class","container collapse");
}
}
},false);
</script>
</body>
</html>
超出部分2行自动换行,第二行是省略号 :
text-overflow:
-o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
13 回答12.7k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
6 回答786 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
换个设计展示形式吧, 就和移动端字号自适应,文字超出两行必须加个详情俩字一样,很难受。