小技巧!CSS 整塊文本溢出省略特性探究

大家好,我是若川。歡迎加我微信 ruochuan12,長期交流學習。今天的文章很有意思,講一講整塊文本溢出省略打點的一些有意思的細節。點擊下方卡片關注我,或者查看源碼系列文章。

文本超長打點

我們都知道,到今天(2021/03/06),CSS 提供了兩種方式便于我們進行文本超長的打點省略。

對于單行文本,使用單行省略:

{width:?200px;white-space:?nowrap;overflow:?hidden;text-overflow:?ellipsis;
}
image

而對于多行文本的超長省略,使用 -webkit-line-clamp 相關屬性,兼容性也已經非常好了:

{width:?200px;overflow?:?hidden;text-overflow:?ellipsis;display:?-webkit-box;-webkit-line-clamp:?2;-webkit-box-orient:?vertical;
}

CodePen Demo -- inline-block 實現整塊的溢出打點[1]

問題一:超長文本整塊省略

基于上述的超長打點省略方案之下,會有一些變化的需求。譬如,我們有如下結構:

<p><a?href="/"?class="avatar"></a><div?class="info"><p?class="person-card__name">Sb?Coco</p><p?class="person-card__desc"><span>FE</span><span>UI</span><span>UX?Designer</span><span>前端工程師</span></p></div>
</p>

對于上述超出的情況,我們希望對于超出文本長度的整一塊 -- 前端工程師,整體被省略。

如果我們直接使用上述的方案,使用如下的 CSS,結果會是這樣,并非我們期待的整塊省略:

.person-card__desc?{width:?200px;white-space:?nowrap;overflow:?hidden;text-overflow:?ellipsis;
}

display: inline 改為 display: inline-block 實現整塊省略

這里,如果我們需要實現一整塊的省略,只需要將包裹整塊標簽元素的 spandisplayinline 改為 inline-block 即可。

.person-card__desc?span?{display:?inline-block;
}

這樣,就可以實現,基于整塊的內容的溢出省略了。完整的 Demo,你可以戳這里:

CodePen Demo - 整塊超長溢出打點省略[2]

問題二:iOS 不支持整塊超長溢出打點省略

然而,上述方案并非完美的。經過實測,上述方案在 iOSSafari 下,沒能生效,表現為這樣:

查看規范 - CSS Basic User Interface Module Level 3 - text-overflow[3],究其原因,在于 text-overflow 只能對內聯元素進行打點省略。(Chrome 對此可能做了一些優化,所以上述非 iOS 和 Safari 的場景是正常的)

所以猜測是因為經過了 display: inline-block 的轉化后,已經不再是嚴格意義上的內聯元素了。

解決方案,使用多行省略替代單行省略

當然,這里經過試驗后,發現還是有解的,我們在開頭還提到了一種多行省略的方案,我們將多行省略的代碼替換單行省略,只是行數 -webkit-line-clamp: 2 改成一行即可 -webkit-line-clamp: 1

.person-card__desc?{width:?200px;white-space:?normal;overflow?:?hidden;text-overflow:?ellipsis;display:?-webkit-box;-webkit-line-clamp:?1;-webkit-box-orient:?vertical;
}
.person-card__desc?span?{display:?inline-block;
}

這樣,在 iOS/Safari 下也能完美實現整塊的超長打點省略:

CodePen Demo -- iOS 下的整塊超長溢出打點省略方案[4]

值得注意的是,在使用 -webkit-line-clamp 的方案的時候,一定要配合 white-space: normal 允許換行,而不是不換行。這一點,非常重要。

這樣,我們就實現了全兼容的整塊的超長打點省略了。

當然,-webkit-line-clamp 本身也是存在一定的兼容性問題的,實際使用的時候還需要具體去取舍。

最后

好了,本文到此結束,一個簡單的 CSS 小技巧,希望對你有幫助 :)

更多精彩 CSS 技術文章匯總在我的 Github -- iCSS[5] ,持續更新,歡迎點個 star 訂閱收藏。

如果還有什么疑問或者建議,可以多多交流,原創文章,文筆有限,才疏學淺,文中若有不正之處,萬望告知。

參考資料

[1]

CodePen Demo -- inline-block 實現整塊的溢出打點: https://codepen.io/Chokcoco/pen/JjbBpdN

[2]

CodePen Demo - 整塊超長溢出打點省略: https://codepen.io/Chokcoco/pen/XWNPdpK?editors=1100

[3]

CSS Basic User Interface Module Level 3 - text-overflow: https://drafts.csswg.org/css-ui-3/#text-overflow

[4]

CodePen Demo -- iOS 下的整塊超長溢出打點省略方案: https://codepen.io/Chokcoco/pen/XWNPdpK?editors=1100

[5]

Github -- iCSS: https://github.com/chokcoco/iCSS


最近組建了一個江西人的前端交流群,如果你也是江西人可以加我微信 ruochuan12 拉你進群。



·················?若川出品?·················

今日話題

略。歡迎分享、收藏、點贊、在看我的公眾號文章~

一個愿景是幫助5年內前端人走向前列的公眾號

可加我個人微信 ruochuan12,長期交流學習

推薦閱讀

我在阿里招前端,我該怎么幫你?(現在還能加我進模擬面試群)

如何拿下阿里巴巴 P6 的前端 Offer

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276030.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276030.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276030.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux配置ip地址 suse_SUSE Linux下設置IP的兩種方法

第一種SUSE Linux IP設置方法ifconfig eth0 192.168.1.22 netmask 255.255.255.0 uproute add default gw 192.168.1.2釋義&#xff1a;#IP配置&#xff0c;包括子網掩碼,看情況修改eth0和192.168.1.22#網關修改 ,看情況修改192.168.1.2第二種SUSE Linux IP設置方法在suse操作系…

寒假作業3:抓老鼠啊

7-1 抓老鼠啊~虧了還是賺了&#xff1f; &#xff08;20 分&#xff09; 某地老鼠成災&#xff0c;現懸賞抓老鼠&#xff0c;每抓到一只獎勵10元&#xff0c;于是開始跟老鼠斗智斗勇&#xff1a;每天在墻角可選擇以下三個操作&#xff1a;放置一個帶有一塊奶酪的捕鼠夾(T)&…

筆記本移交_創建完美的設計移交

筆記本移交重點 (Top highlight)Design specifications (specs) are guidelines that developers will use to implement a design. Think of an architect providing building blueprints to the construction team. Many designers think of specs as mindless zombie work. …

大手筆,送¥1599的Apple AirPods Pro和獨家禮物等

大家好&#xff0c;我是若川。為感謝公眾號讀者們長久以來的支持&#xff0c;本次我聯合幾位前端界大佬給大家送超級福利了。除了聯合福利之外&#xff0c;每位前端大佬還帶了專屬禮品送給大家&#xff0c;所有抽獎均可重復參與、可重復中獎&#xff0c;詳情見下文每個公眾號的…

jQuery1.4新特性

1. 傳參給 jQuery(…) 之前&#xff0c;jQuery可以通過 attr 方法設置元素的屬性&#xff0c;既可傳屬性的名和值&#xff0c;也可以是包含幾組特定 屬性名值對 的 對象。在 jQuery 1.4 中&#xff0c;你可以把一個參數對象作為第二個參數傳給 jQuery 函數本身&#xff0c;同時…

python pack unpack_golang 仿python pack/unpack

package includesimport ("bytes""encoding/binary""fmt"_"os""strconv""strings")type Protocolstruct{Format []string}//封包func (p *Protocol) Pack(args ...interface{}) []byte{la :len(args)ls :len(p.Fo…

JavaScript遞歸應用與實踐

遞歸簡單來說就是函數內調用自生的一種方法&#xff0c;形如&#xff1a; function foo(){foo() } 復制代碼下面我列舉一些常用的遞歸應用。 1. 求和&#xff0c;例如求1234...100之和 分析如下&#xff1a; sum(100)sum(99)100 sum(99)sum(98)99 ... sum(1)sum(0)1 復制代碼代…

一個好的設計師_是什么讓一個好的設計師

一個好的設計師重點 (Top highlight)The design manager role has grown considerably over the past five years. As design has been recognised as a business value-driver and organisations have increased their design maturity, we’ve seen lots more design managem…

PHP-Redis擴展安裝 error: ext/standard/php_smart_str.h: No such file or directory

在源碼編譯PHP-redis擴展時&#xff0c;遇到缺少頭文件問題【問題描述】error: ext/standard/php_smart_str.h: No such file or directory 【問題原因】PHP安裝好的頭文件目錄&#xff1a;/php/include/php/ext/standard/&#xff0c;這些頭文件&#xff0c;在php7之前的版本&…

相見恨晚的一款前端布局神器!

大家好&#xff0c;我是若川。歡迎加我微信 ruochuan12&#xff0c;長期交流學習。今天給大家推薦一款非常實用的前端頁面布局神器&#xff0c;點擊下方卡片關注我&#xff0c;或者查看源碼系列文章。頁面和布局是一門前端程序員的必修課&#xff0c;css 從來也不是停留在面試八…

IC設計前端幾本經典書籍

No.1 Writing Testbenches, Functional Verification of HDL Modelsby Janick Bergeron本書主要以HDL&#xff08;verilog/vhdl&#xff09;為例&#xff0c;詳細講述了在IC DESIGN FLOW中Verification 以及Test的設計思想、方法和技巧&#xff0c;涵概了測試的各個方面&#x…

unreal無損音樂百度云_將網易云音樂專用的無損音樂格式轉換成全平臺通用的無損格式...

前幾天發現網易云音樂的ncm格式很坑爹&#xff0c;由于網易云的部分音樂采取了這種流媒體平臺模式&#xff0c;這種格式的歌曲下載到設備本地以后只有在網易云音樂的app上面才能播放&#xff0c;而且還要在會員生效期間才能播今天網易云弄出一個ncm&#xff0c;明天百度音樂來一…

鎖升級

JavaSE1.6為了減少獲得鎖和釋放鎖帶來的性能消耗&#xff0c;引入了“偏向鎖”和“輕量級鎖”。 在JavaSE1.6中&#xff0c;鎖一共有4種狀態&#xff0c;級別從低到高依次是&#xff1a;無鎖狀態、偏向鎖狀態、輕量級鎖狀態和重量級鎖狀態&#xff0c;這幾個狀態會隨著競爭情況…

ux和ui_首先要做的— UX / UI案例研究

ux和ui休息一下&#xff01; (Get some rest!) After four weeks of four-day design sprints each week, I welcomed the opportunity to work on this 9-day design challenge. With this also being an individual project, I allocated 50% of my time on the UX process a…

微信消息模板換行符轉義問題處理

通常的微信模板&#xff1a; Hello &#xff01;\n\n Are you OK&#xff1f; ① 直接定義字符串&#xff1b; ② 數據庫中讀取&#xff1b;這里需要說明的是 數據庫讀取 的內容&#xff0c;如果直接推送&#xff0c;\n\n是沒有被轉移為換行符的。此時需要&#xff1a; $tplStr…

Vue2 徹底從 Flow 重構為 TypeScript,煥然一新!

大家好&#xff0c;我是若川。歡迎加我微信 ruochuan12&#xff0c;長期交流學習。今天分享一篇技術熱點&#xff0c;眾所周知&#xff0c;前不久vue3不打算支持IE11&#xff0c;vue2將支持composition API&#xff0c;現在vue2用ts重構&#xff0c;試問&#xff1a;還學得動嘛…

紅米note5linux刷機包__最新最全的紅米Note5ROM刷機包下載、刷機教程_紅米Note5論壇_移動叔叔...

本帖最后由 壓力山大大叔 于 2018-5-15 00:52 編輯20180513跟新全屏手勢。看最后一張載圖。1&#xff1a;先解鎖&#xff0c;刷第三方&#xff0c;都是這個流程。2非常干凈&#xff0c;只有670兆&#xff0c;刷完沒有找到瀏覽器&#xff0c;刷前下載一個瀏覽器在手機里備用。3電…

每個網頁設計者都自以為是

&#xff08;一&#xff09;垃圾還是經典網頁技術更新很快&#xff0c;一個網站的界面設計壽命僅僅2-3年而已。不管是垃圾還是精品&#xff0c;都沒有所謂的經典。經典只存在于是哪個首次成功創新性的應用。網頁設計 者不管自己的學識、技術和經驗如何&#xff0c;都自以為自己…

文件夾的拷貝

文件夾用來把文件包裹起來&#xff0c;褪去這些外衣&#xff0c;說到底拷貝文件夾也就是拷貝文件 模擬實例&#xff1a;將F:/Picture/test 文件夾 拷貝到 F:/Picture/dir文件夾 該實例中test文件夾下只包含了test.txt文件 步驟分析&#xff1a; 1.通過路徑得到File對象 2.遞歸查…

【抽獎】若川誠邀你加前端群,長期交流學習~

最近有許多讀者朋友關注了我&#xff0c;加我好友沒有來得及拉群交流。另外偷偷告訴你&#xff1a;公眾號回復 411&#xff0c;參與抽獎&#xff0c;送極客時間100元以內的課程&#xff0c;今晚八點開獎&#xff0c;必須開獎前加了我的微信&&像是前端&&關注了我…