一行資料文字內容太多,把頁面撐得很長影響美觀。該方法可以實現當一行文字內容超過固定長度後,收縮起來,顯示一個“展開”按鈕,使用者一點選後就顯示全部內容。當然多行文字也同樣適用,(若是全部是中文也可以使用判斷判斷字串長度的方法,中文佔用兩個字元,但是若文章中含有英文就不適合了,因為字母i所佔用的長度非常短一個漢字所佔用的字元多餘2個i,就會出現長短不一的情況;)本文所展示方法解決了這個問題。
HTML
<div style="width: 250px; position: absolute;">
<div id="content">
first my gaze toward the moon, but the moon shines on the ditch. “我本一心向明月,奈何明月照溝渠”
</div>
<a Onclick=`more()` id=`expand`>
展開
</a>
<a Onclick=`pack()` id="pack">
收起
</a>
</div>
css
#content{
width: 150px;
height: 25px;
float:left;
overflow: auto;
word-wrap:break-word;
word-break: break-all;
text-overflow:ellipsis;
white-space:nowrap;
}
a{
float:right;
margin-left: 30px;
position: absolute;
top: 0;
right: 0;
}
#pack{
display: none;
}
JS
window.onload=function(){
// element.scrollHeight---文章內容的實際高度 element.clientHeight---文章內容的顯示高度
// element.scrollWidth---文章內容的實際寬度 element.clientWidth ---文章內容的顯示寬度
var element=document.getElementById("content")
if(element.scrollHeight>element.clientHeight){
element.style=`overflow:hidden;`
}else{
document.getElementById("expand").style="display:none"
}
}
function more(){
document.getElementById("content").style=`overflow:visible; white-space:normal;`
document.getElementById("expand").style="display:none"
document.getElementById("pack").style="display:block"
}
function pack(){
document.getElementById("content").style=`display:block;overflow:hidden`
document.getElementById("expand").style="display:block"
document.getElementById("pack").style="display:none"
}