用css實現(xiàn)文本內(nèi)容溢出省略顯示總結(jié)

2017.3.16 讀了前端早讀課程《如何用css實現(xiàn)多行文本省略顯示》,決定自己寫一下demo,并總結(jié)一下。

初讀想法:

A.最近剛學(xué)了css3的一些基礎(chǔ)知識,所以一開始看到這個標(biāo)題時,我是想用css3中

text-overflow:ellipse;不過只能實現(xiàn)單行文本顯示,實現(xiàn)效果如下:


文本溢出


單行文本強制顯示

代碼:

css樣式


B.也想過用js實現(xiàn),當(dāng)文本內(nèi)容超過元素的高度或?qū)挾葘崿F(xiàn)時,讓一個帶有省略號的模塊顯示出來。不過我還沒試下。

接下來,我就試下文章所說的方法:

首先先實現(xiàn)如圖效果:


main內(nèi)容超過父元素高度時。


將endword移動wrap的右下角

#wrap .endWord{

width:80px;

background:rgba(78,199,81,0.4);

float:right;

position:relative;

top:-20px;/*top值根據(jù).endword大小進行調(diào)整*/

left:300px;}

main高度未超過父元素時

將父元素wrap設(shè)置為overflow:hidden,看下效果:

將父元素設(shè)置為overflow:hidden,main

接下來就將leftSide塊的寬度變小,并設(shè)置main的寬度為父元素的100%。(我在main塊里插入了一篇長文章,使其height大于父元素的height)

并將main左移5px,此時main能鋪滿整個父元素,但此時endWord塊去哪了????

#wrap{

width:400px;

height:200px;

margin:20px auto;

}

#wrap .leftSide{

width:5px;

height:100%;

float:left;

}

#wrap .main{

width:100%;

margin-left:-5px;//將main左移5px

float:right;

}

#wrap .endWord{

width:100px;

position:realtive;

left:400px;

top:-20px;

}

看到下圖的時候,我是有點不想接受的?。。?!

我覺得出現(xiàn)這樣的原因有:將endWord塊設(shè)為position:relative時,它仍處于頁面流中,

將sideLeft寬度設(shè)為5px,然而此時endWord的寬度仍為100px;此時原本位置已放不下endWord。

所以要在原來的位置放置endWord塊,只能使其盒子模型小于等于leftSide的寬度。

故進一步改動endWord的css代碼

#wrap .endWord{

width:100px;

position:realtive;

left:400px;

top:-20px;

margin-left:-400px;

padding-right:5px;

}

可以用fireBug禁用下left:400px;top:-20px;看下效果

最終效果如下:

我再稍微改了下頁面的樣式,增一些交互行為:

當(dāng)文章內(nèi)容超過外層元素wrap高度時,顯示省略號,點擊省略號可實現(xiàn)全文本顯示,在文章結(jié)尾有個up標(biāo)簽,可點擊恢復(fù)原本頁面。

最終效果:


css代碼:

div,p,span{

padding:0px;

margin:0px; }

#wrap{

width:400px;

height:305px;

margin:20px auto;

border:1px solid #EFEFEF;

/*background-color:rgba(126,241,225,0.5);*/

background-image:linear-gradient(to bottom,#77DFE8,rgba(0,0,0,0.3));

clear:both;/*清楚浮動*/

overflow:hidden;

box-shadow:2px 3px 10px rgba(0,0,0,0.3);

}

#wrap .leftSide{

/*將寬度設(shè)為5px*/

width:5px;

height:100%;

/*background:rgba(231,51,118,0.3);*/

float:left;

}

#wrap .main{

/*使main占滿整個父元素*/

width:100%;

/*background:rgba(235,234,38,1);*/

float:right;

margin-left:-5px;

text-indent:2em;

font-size:15px;

line-height:30px;

}

#wrap .main .nameTab{

display:inline-block;

font-size:14px;

color:rgba(236,236,236,1.00);

text-align:center;

}

#wrap .endWord{

width:20px;

/*background:rgba(78,199,81,0.4);*/

float:right;

position:relative;

left:400px;

top:-20px;

/*設(shè)置,使其盒子模型=leftSide的寬度=5px*/

margin-left:-20px;

padding-right:5px;

cursor:pointer;

}

#up{

float:right;

color:rgba(44,225,172,1.00);

cursor:pointer;}



js操作:

//獲取wrap元素

//獲取wrap元素的高度,oject.syle.attr只能獲取內(nèi)聯(lián)樣式的值,用getComputedStyle獲取元素的高度

var wrapBox=document.getElementById('wrap');

var wrapBoxH=getComputedStyle(wrapBox,false)['height'];

//點擊省略號全文顯示

var endWordBox=document.querySelector('.endWord');

endWordBox.addEventListener('click',showF,true);

function showF(){

//h獲取main的高度,將wrap高度設(shè)置為main的高度

var object=document.querySelector('.main');

var height=getComputedStyle(object,false)['height'];

console.log(height);

wrapBox.style.height=height;

}

//點擊up文章收起

var upBox=document.querySelector('#up');

upBox.addEventListener('click',hideF,true);

function hideF(){

wrapBox.style.height=wrapBoxH;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、垂直對齊 如果你用CSS,則你會有困惑:我該怎么垂直對齊容器中的元素?現(xiàn)在,利用CSS3的Transform,...
    kiddings閱讀 3,297評論 0 11
  • 各種純css圖標(biāo) CSS3可以實現(xiàn)很多漂亮的圖形,我收集了32種圖形,在下面列出。直接用CSS3畫出這些圖形,要比...
    劍殘閱讀 9,981評論 0 8
  • 不會用代碼框,所以看著有些亂套,,,,html部分 <!DOCTYPE html> 迅雷看看 ...
    這就是個帥氣的名字閱讀 1,913評論 0 0
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    wzhiq896閱讀 2,119評論 0 2
  • 《與君相戀100次》可以說是一個歷史性的電影。引進大陸公映不說,我最可愛的坂口小哥也終于,終于演的不再是男二了! ...
    是萌萌醬紫閱讀 593評論 0 1

友情鏈接更多精彩內(nèi)容