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

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