天天看點

html 點選展開顯示全部,多行溢出省略号顯示及點選展開(css/js)實作!

html 點選展開顯示全部,多行溢出省略号顯示及點選展開(css/js)實作!

關于多行溢出顯示省略号的問題,如果是根據字元的長度個數限制 超過部分替換為省略号,這種還是很好處理的,關鍵是根據行數,在未知情況下你不知道需要多少内容,去填滿一個元素,做起來還是比較麻煩的,網上很多種亂七八糟的方案,拿過來又不能直接用,,我就結合網上的思路重新整理修改一波可以直接用的幾種方案。

一、單行溢出出現省略号顯示:

張藝興張藝興張藝興張藝興張藝興

樣式:

.p{

width:1rem;

overflow:hidden;//超出部分隐藏

white-space:nowrap;//禁止換行

text-overflow:ellipsis//省略号

}

複制代碼

圖:

html 點選展開顯示全部,多行溢出省略号顯示及點選展開(css/js)實作!

二、多行溢出出現省略号(css方案):

這樣方案簡單易懂,但是存在相容性,隻适用于在webkit浏覽器或者移動端。

小綿羊小綿羊小綿羊小綿羊小綿羊小綿羊

樣式:

.p{

width:1rem;

height:0.4rem;//需要設定高度

//必須結合的屬性,将對象作為彈性伸縮盒對象的子元素的排列仿古式

display:-webkit-box;

-webkit-box-orient:vertical;

text-overflow:ellipsis;

-webkit-line-clamp:2;//例如超過2行顯示省略号

overflow:hidden;

}

複制代碼

注意:這種用css解決的方案存在相容性問題,這裡提一個小捷徑,如果你使用css出現了相容問題,可以嘗試下把樣式寫在行内,可能會解決相容哦。(沒有絕對性,隻是經驗。。。。哈哈)

那麼有沒有完美的方案,也不存在相容的方案呢?強大的js可以解決,隻不過有點難,但是比較保險的。。。。

三、多行溢出出現省略号(js方案):

按鈕

data(){

return {val:""}

},

methods:{

btn(){

//參數1 元素id 參數2 要限制的行數 參數3 輸入的值

this.moreline('boxid',3,this.val)//傳3表示超過3行時省略号顯示。

},

moreline(id,rows,str){

var boxid = document.getElementById(id);

var computedStyle = document.defaultView.getComputedStyle(boxid,null);

var lineHeight = computedStyle.lineHeight;

var top = rows*parseInt(lineHeight);

var tempstr = str;

boxid.innerHTML = tempstr;

var len = tempstr.length;

var i = 0;

if(boxid.offsetHeight<=top){

}else{

var temp = "";

boxid.innerHTML = temp;

while(boxid.offsetHeight<=top){

temp = tempstr.substring(0,i+1);

i++;

boxid.innerHTML = temp;

}

var slen = temp.length;

tempstr = temp.substring(0,slen-1);

len = tempstr.length;

boxid.innerHTML = tempstr.substring(0,len-1)+"...";

boxid.height = top+"rem";

}

}

}

}

複制代碼

結果圖:

html 點選展開顯示全部,多行溢出省略号顯示及點選展開(css/js)實作!

使用js實作不太容易了解,目前最靠譜,方法封裝好,靈活使用,可根據各自的需要通過傳參數滿足各自的需要。

新增點選可展開功能及代碼:

moreline(id,rows,str){

var boxid = document.getElementById(id);

var computedStyle = document.defaultView.getComputedStyle(boxid,null);

var lineHeight = computedStyle.lineHeight;

var top = (rows+1)*parseInt(lineHeight);

var tempstr = str;

boxid.innerHTML = tempstr;

var len = tempstr.length;

var i = 0;

if(boxid.offsetHeight>top){

var temp = "";

boxid.innerHTML = temp;

while(boxid.offsetHeight<=top){

temp = tempstr.substring(0,i+1);

i++;

boxid.innerHTML = temp;

}

tempstr = temp.substring(0,temp.length-1);

len = tempstr.length;

boxid.innerHTML = tempstr.substring(0,len-3)+"..."+`展開`;

boxid.height = top+"rem";

let en = document.querySelector(".a")

en.onclick = function(){

boxid.innerHTML = str;

}

}

}

複制代碼

效果圖:

html 點選展開顯示全部,多行溢出省略号顯示及點選展開(css/js)實作!

點選展開:

html 點選展開顯示全部,多行溢出省略号顯示及點選展開(css/js)實作!

作者:一直在路上的小仙女

連結:juejin.cn/post/692135…

來源:掘金

著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。