純CSS實(shí)現(xiàn)“文本溢出截?cái)嗍÷浴钡膸追N方法

在我們的日常開發(fā)工作中,文本溢出截?cái)嗍÷允呛艹R姷囊环N需考慮的業(yè)務(wù)場景細(xì)節(jié)??瓷先?“稀松平常” ,但在實(shí)現(xiàn)上卻有不同的區(qū)分,是單行截?cái)噙€是多行截?cái)啵慷嘈械慕財(cái)嗯袛嗍腔谛袛?shù)還是基于高度?這些問題之下,都有哪些實(shí)現(xiàn)方案?他們之間的差異性和場景適應(yīng)性又是如何?
一般來說,在做這樣文字截?cái)嘈Ч麜r(shí)我們更多是希望:
- 兼容性好,對各大主流瀏覽器有好的支持
- 響應(yīng)式截?cái)啵鶕?jù)不同寬度做出調(diào)整
- 文本超出范圍才顯示省略號,否則不顯示省略號
- 省略號位置顯示剛好
基于上述的準(zhǔn)則,下面我們通過編碼實(shí)踐,給出一些答案。
單行文本溢出省略
核心 CSS 語句
- overflow: hidden;(文字長度超出限定寬度,則隱藏超出的內(nèi)容)
- white-space: nowrap;(設(shè)置文字在一行顯示,不能換行)
- text-overflow: ellipsis;(規(guī)定當(dāng)文本溢出時(shí),顯示省略符號來代表被修剪的文本)
優(yōu)點(diǎn)
- 兼容性好,對各大主流瀏覽器有好的支持
- 響應(yīng)式截?cái)?,根?jù)不同寬度做出調(diào)整
- 文本溢出范圍才顯示省略號,否則不顯示省略號
- 省略號位置顯示剛好
短板
- 只支持單行文本截?cái)啵⒉恢С侄嘈?/li>
適用場景
- 適用于單行文本溢出顯示省略號的情況
Demo
<div class="demo"> 床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光 </div>
.demo { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
效果示例
多行文本溢出省略(-webkit-line-clamp)
核心 CSS 語句
- overflow: hidden;(文本溢出限定的寬度就隱藏內(nèi)容)
- -webkit-line-clamp: 2;(用來限制在一個(gè)塊元素顯示的文本的行數(shù), 2 表示最多顯示 2 行。 為了實(shí)現(xiàn)該效果,它需要組合其他的WebKit屬性)
- display: -webkit-box;(和 -webkit-line-clamp: 2;結(jié)合使用,將對象作為彈性伸縮盒子模型顯示 )
- -webkit-box-orient: vertical;(和 -webkit-line-clamp: 2;結(jié)合使用 ,設(shè)置或檢索伸縮盒對象的子元素的排列方式 )
- text-overflow: ellipsis;(多行文本的情況下,用省略號“…”隱藏溢出范圍的文本)
優(yōu)點(diǎn)
- 響應(yīng)式截?cái)啵鶕?jù)不同寬度做出調(diào)整
- 文本溢出范圍才顯示省略號,否則不顯示省略號
- 瀏覽器原生實(shí)現(xiàn),所以省略號位置顯示剛好
短板
兼容性一般: -webkit-line-clamp 屬性只有 WebKit 內(nèi)核的瀏覽器才支持
適用場景
多適用于移動端頁面,因?yàn)橐苿釉O(shè)備瀏覽器更多是基于 WebKit 內(nèi)核
Demo
<div class="demo"> 床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光 </div>
.demo { display: -webkit-box; overflow: hidden; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
效果示例
多行文本溢出省略(偽元素 + 定位)
核心 CSS 語句
- position: relative; (為偽元素絕對定位)
- overflow: hidden; (文本溢出限定的寬度就隱藏內(nèi)容)
- position: absolute;(給省略號絕對定位)
- line-height: 18px; (結(jié)合元素高度,高度固定的情況下,設(shè)定行高, 控制顯示行數(shù))
- height: 36px; (設(shè)定當(dāng)前元素高度)
- ::after {} (設(shè)置省略號樣式)
- word-break: break-all; (如果文本中有英文,可以使一個(gè)單詞能夠在換行時(shí)進(jìn)行拆分)
優(yōu)點(diǎn)
- 兼容性好,對各大主流瀏覽器有好的支持
- 響應(yīng)式截?cái)?,根?jù)不同寬度做出調(diào)整
短板
- 無法識別文字的長短,無論文本是否溢出范圍,一直顯示省略號省略號
- 顯示可能不會剛剛好,有時(shí)會遮住一半文字,跟文字沒有貼合的很緊密
適用場景
文字內(nèi)容較多,確定文字內(nèi)容一定會超過容器的
Demo
<div class="demo"> 床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光 </div>
.demo { position: relative; line-height: 18px; height: 36px; overflow: hidden; word-break: break-all; } .demo::after { content:"..."; font-weight:bold; position:absolute; bottom:0; right:0; padding:0 20px 1px 45px; /* 為了展示效果更好 */ background: -webkit-gradient(linear, left top, right top, from(rgba(255, 255, 255, 0)), to(white), color-stop(50%, white)); background: -moz-linear-gradient(to right, rgba(255, 255, 255, 0), white 50%, white); background: -o-linear-gradient(to right, rgba(255, 255, 255, 0), white 50%, white); background: -ms-linear-gradient(to right, rgba(255, 255, 255, 0), white 50%, white); background: linear-gradient(to right, rgba(255, 255, 255, 0), white 50%, white); }
效果示例
多行文本溢出省略(Float)
核心 CSS 語句
- line-height: 20px;(結(jié)合元素高度,高度固定的情況下,設(shè)定行高, 控制顯示行數(shù))
- overflow: hidden;(文本溢出限定的寬度就隱藏內(nèi)容)
- float: right/left;(利用元素浮動的特性實(shí)現(xiàn))
- position: relative;(根據(jù)自身位置移動省略號位置, 實(shí)現(xiàn)文本溢出顯示省略號效果)
- word-break: break-all;(如果文本中有英文,可以使一個(gè)單詞能夠在換行時(shí)進(jìn)行拆分)
優(yōu)點(diǎn)
- 兼容性好,對各大主流瀏覽器有好的支持
- 響應(yīng)式截?cái)?,根?jù)不同寬度做出調(diào)整
- 文本溢出范圍才顯示省略號,否則不顯示省略號
短板
省略號顯示可能不會剛剛好,有時(shí)會遮住一半文字,跟文字沒有貼合的很緊密
適用場景
文字內(nèi)容較多,確定文字內(nèi)容一定會超過容器的
Demo
<div class="demo"> <div class="text"> 床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光床前明月光 </div> </div>
.demo { height: 40px; line-height: 20px; overflow: hidden; } .demo .text { float: right; margin-left: -5px; width: 100%; word-break: break-all; } .demo::before { float: left; width: 5px; content: ""; height: 40px; } .demo::after { float: right; content: "..."; height: 20px; line-height: 20px; padding-right: 5px; text-align: right; width: 3em; margin-left: -3em; position: relative; left: 100%; top: -20px; padding-right: 5px; /* 為了展示效果更好 */ background: -webkit-gradient( linear, left top, right top, from(rgba(255, 255, 255, 0)), to(white), color-stop(50%, white) ); background: -moz-linear-gradient( to right, rgba(255, 255, 255, 0), white 50%, white ); background: -o-linear-gradient( to right, rgba(255, 255, 255, 0), white 50%, white ); background: -ms-linear-gradient( to right, rgba(255, 255, 255, 0), white 50%, white ); background: linear-gradient( to right, rgba(255, 255, 255, 0), white 50%, white ); }
效果示例
到此這篇關(guān)于純CSS實(shí)現(xiàn)“文本溢出截?cái)嗍÷?rdquo;的幾種方法的文章就介紹到這了,更多相關(guān)CSS文本溢出截?cái)嗍÷詢?nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!
相關(guān)文章
css實(shí)現(xiàn)單行文本溢出顯示省略號的示例代碼
這篇文章主要給大家介紹了使用CSS中的text-overflow屬性來實(shí)現(xiàn)單行文本溢出顯示省略號,文章中有詳細(xì)的實(shí)現(xiàn)代碼,感興趣的同學(xué)可以自己動手嘗試一下2023-09-07- 在實(shí)際開發(fā)的過程中,內(nèi)容溢出是經(jīng)常見到的。這篇文章主要介紹了淺談css溢出機(jī)制探究,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-09-18
- 這篇文章主要介紹了css多行文本溢出時(shí)出現(xiàn)省略號的示例的相關(guān)資料,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-13
- 本篇文章主要介紹了純CSS定制文本省略的方法大全,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-16
- 這篇文章主要介紹了css實(shí)現(xiàn)文本溢出顯示省略號的方法和示例分享,推薦給大家。2014-12-23
- li中的文本超出行寬自動隱藏,在一些新聞?lì)惖牧斜響?yīng)用中還是比較實(shí)用的,具體的實(shí)現(xiàn)css樣式如下,感興趣的朋友可以參考下,希望對大家有所幫助2013-09-29
css overflow溢出隱藏(文字溢出時(shí)的自動隱藏處理)
css溢出隱藏一般用于當(dāng)內(nèi)容太大以至于無法適應(yīng)指定的區(qū)域時(shí),通過設(shè)置css下的overflow屬性來隱藏其內(nèi)容2013-03-07標(biāo)題長度溢出時(shí),自動顯示為省略“...”的Css text-overflow
內(nèi)容超出后自動隱藏并加省略標(biāo)記(...)引號的Css text-overflow:ellipsis; o...2011-07-27CSS教程:關(guān)于文字溢出問題的研究-CSS教程-網(wǎng)頁制作-網(wǎng)頁教學(xué)網(wǎng)
首先引起對這個(gè)溢出問題進(jìn)行研究是因?yàn)榭吹揭粋€(gè)朋友的帖子,里面提到ie7下出現(xiàn)的文字溢出問題; 于是又重新翻了以前懌飛斑竹的帖子,他提到的是注釋引起的文字溢出問題2008-10-17- 設(shè)置text-overflow: ellipsis;即可實(shí)現(xiàn)文本溢出省略的效果,本文主要介紹了CSS 文字溢出:ellipsis在IE上不起效果的解決,具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-23