自適應寬度元素單行文本省略用法探究

單行文本省略是現代網頁設計中非常常用的技術,幾乎每個站點都會用到。單行文本省略適用于顯示摘要信息的場景,如列表標題、文章摘要等。在響應式開發中,自適應寬度元素單行文本省略容易失效不起作用,對網頁開發這造成困擾。因此,本文將要要探究自適應寬度元素單行文本省略用法。現代瀏覽器都支持單行文本顯示生省略號(...)樣式,一般情況下,實現單行文本省略只需要給元素添加下面三個CSS樣式:

.demo{text-overflow:ellipsis;white-space: nowrap;overflow: hidden;
}

?

單行文本省略和元素及其父元素的width屬性都無關

有很多文章提到單行文本省略時都會添加多一個條件,那就是設置width屬性。事實真的是這樣嗎?通過下面的實例去檢驗一下就可以證明這個結論。

實例1:在body添加一個p標簽和一個span標簽,并設置單行文本省略:

<style>
body,p,span{margin:0;padding:0;
}p,
span{text-overflow:ellipsis;white-space: nowrap;overflow: hidden;
}
</style>
<body>
    <p>單行文本省略,單行文本省略,單行文本省略,單行文本省略,單行文本省略,單行文本省略,單行文本省略,單行文本省略,單行文本省略,單行文本省略,單行文本省略</p><span>單行文本省略,單行文本省略,單行文本省略,單行文本省略,單行文本省略,單行文本省略,單行文本省略,單行文本省略,單行文本省略,單行文本省略,單行文本省略</span>
</body>

運行結果是,p標簽內文本成功省略,span標簽內文本省略失敗,結果如下圖:

最后,我嘗試著給p標簽設置寬度為auto或100%,結果不變;給p標簽和span標簽設置固定寬度值為300px,結果不變;用其他標簽把p標簽和span標簽包裹起來,結果不變;給包裹元素設置固定寬度值,結果還是一樣的。這就足以證明了單行文本省略和元素及其父元素的width屬性都無關。

?

單行文本省略和元素及其父元素的display屬性有關

什么屬性會影響單行文本省略呢?在實例1中,我特意用來一個p標簽和一個span標簽,span標簽無法省略。經過測試發現display屬性為inline和inline-block的元素都無法實現省略。這證明單行文本省略與元素的display屬性有關。

?

1)table元素(或display為table元素)內單行文本省略,需要給table元素(或display為table元素)添加table-layout:fixed樣式

設置為table布局元素的子元素單行文本省略不起作用,例如:

<style>
body,p,span,img{margin:0;padding:0;
}p,
span{text-overflow:ellipsis;white-space: nowrap;overflow: hidden;
}.demo{display:table;width:100%;padding:15px 0;border-top:1px solid #ddd;
}.demo .left,
.demo .right{display:table-cell;
}.demo .left{width:120px;min-width:120px;height:90px;background-color:blue;
}.demo .left img{display:block;
}.demo .right{vertical-align: top;padding-left:15px;
}                       
</style>
<body>
    <div class="demo">
        <div class="left"><img src="img/1879408419498933204.jpg" width="100%" height="auto" /></div>
        <div class="right">
            <h2>這是一個標題</h2>
            <p>這是一段介紹文字。這是一段介紹文字。這是一段介紹文字。這是一段介紹文字。這是一段介紹文字。這是一段介紹文字。這是一段介紹文字。這是一段介紹文字。這是一段介紹文字。</p>
        </div>
    </div>
</body>

這個實例中,demo元素設置為dispaly:table,其子元素left和right設置為display:table-cell,這種布局方式導致了元素right內的h2和p的文本省略樣式都不起作用,運行結果如下圖:

為了使元素right內的h2和p的文本省略樣式起作用,必須在元素demo(即設置display:table的元素)添加一條樣式table-layout:fixed,這個解決方式同樣適用于table元素。添加這個樣式后,運行結果如下圖:

?

2)display為flex元素的子元素flex-item如果是自適應寬度時,flex-item內的子元素實現單行文本省略,需要給flex-item添加overflow:hidden樣式

display為flex元素的子元素flex-item如果是自適應寬度時,flex-item內的子元素單行文本省略樣式不起作用,例如:

<style>
body,h2,p,span,img{margin:0;padding:0;box-sizing:border-box;
}.demo{display:flex;display:-webkit-flex;width:100%;padding:15px 0;border-top:1px solid #ddd;
}.left,
.right{height:90px;
}.demo .left{width:120px;background-color:red;flex-shrink: 0;
}.demo .right{flex:auto;-webkit-flex:auto;padding-left:15px;
}h2,
p,
span{text-overflow:ellipsis;white-space: nowrap;overflow: hidden;
}</style>
<body>
    <div class="demo"><div class="left"><img src="img/1879408419498933204.jpg" width="100%" height="auto" /></div><div class="right"><h2>這是一個標題</h2><p>這是一段介紹文字。這是一段介紹文字。這是一段介紹文字。這是一段介紹文字。這是一段介紹文字。這是一段介紹文字。這是一段介紹文字。這是一段介紹文字。這是一段介紹文字。</p></div></div>
</body>

在這個flex布局的實例中,元素right的寬度時自適應的,元素right內的h2和p元素單行文本省略樣式都不起作用。如果去掉標簽直接在元素right內添加文本,并為元素right添加單行文本省略樣式,這時單行文本省略樣式卻可以正常工作。該實例的運行結果如下圖:

在這個實例中,為元素right添加overflow:hidden樣式后,單行文本省略樣式工作正常,運行結果如下圖:

?

?

總結:

1)單行文本省略必須滿足三個CSS樣式:text-overflow:ellipsis,white-space: nowrap,overflow: hidden。

2)單行文本省略和元素及其父元素的width屬性都無關

3)table元素(或display為table元素)內單行文本省略,需要給table元素(或display為table元素)添加table-layout:fixed樣式

4)display為flex元素的子元素flex-item如果是自適應寬度時,flex-item內的子元素實現單行文本省略,需要給flex-item添加overflow:hidden樣式

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

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

相關文章

P3390 【模板】矩陣快速冪

題目背景 矩陣快速冪 題目描述 給定n*n的矩陣A&#xff0c;求A^k 輸入輸出格式 輸入格式&#xff1a; 第一行&#xff0c;n,k 第2至n1行&#xff0c;每行n個數&#xff0c;第i1行第j個數表示矩陣第i行第j列的元素 輸出格式&#xff1a; 輸出A^k 共n行&#xff0c;每行n個數&…

c#精彩編程200例百度云_永安市教育局被授予“人工智能編程教育試驗區”

11月28日&#xff0c;“第二屆人工智能與機器人教育大會青少年人工智能與編程教育主題論壇”在廈門召開。永安市教育局被中國教育發展戰略學會人工智能與機器人教育專委會授予“人工智能編程教育試驗區”牌匾&#xff0c;巴溪灣小學、西門小學、三中、一中附屬學校、實驗小學等…

python中+=和=+的區別

本文原創&#xff0c;版權屬作者個人所有&#xff0c;如需轉載請聯系作者本人。Q&微&#xff1a;155122733 -------------------------------------------------------------------------------------------------------- a1 代表在原值上更改 aa1相當于先定義一個變量&…

Spring Data JPA和分頁

讓我們從支持分頁的經典JPA方法開始。 考慮一個簡單的域類–一個具有名字&#xff0c;姓氏的“成員”。 為了支持在成員列表上進行分頁&#xff0c;JPA方法是支持一種查找器&#xff0c;該查找器將獲取第一個結果&#xff08;firstResult&#xff09;的偏移量和要檢索的結果&am…

南陽理工 題目63 小猴子下落

小猴子下落 時間限制&#xff1a;3000 ms | 內存限制&#xff1a;65535 KB 難度&#xff1a;3 描述 有一顆二叉樹&#xff0c;最大深度為D,且所有葉子的深度都相同。所有結點從左到右從上到下的編號為1,2,3&#xff0c;&#xff0c;2的D次方減1。在結點1處放一個小猴子&#…

vue 方法獲取返回值_vue.js - vuex異步提交,怎么獲取返回數據

問 題 做登錄頁面時,在vuex中的action異步提交后獲取的數據在mutations中存儲在state里面,但是總感覺不對,沒有返回數據,我前端頁面怎么獲取數據,用mapgetter獲取不到數據,是不是他不是實時更新的,而且輸出的mapgetter輸出的數據還在action的前面。下面是我前端部分代碼…

Windows環境下安裝、卸載Apache

安裝Apache 服務 打開 Apcahe的目錄 &#xff0c;打開bin目錄&#xff0c; 如&#xff1a;E:\wamp\Apache24\bin &#xff0c;打開目錄&#xff0c;Shift鍵 鼠標右鍵 &#xff0c; 點擊 在此處打開命令窗口或者W快捷鍵直接到此處&#xff0c; 也可以Window鍵r&#xff0c;輸入…

css清浮動

我們在平常做項目的時候&#xff0c;float這個css屬性經常會用到。元素浮動會讓元素脫離文檔流&#xff0c;從而不能撐開父級的內容。今天我將展示常見的清除浮動的方法。 什么是浮動 浮動元素脫離文檔流并且向左或者向右移動&#xff0c;直到浮動元素的邊緣碰到父級框或者另…

小心緩存管理器

如果使用spring和JPA&#xff0c;則很有可能利用ehcache&#xff08;或其他緩存提供程序&#xff09;。 您可以在兩種不同的情況下進行此操作&#xff1a;JPA 2級緩存和spring方法緩存。 在配置應用程序時&#xff0c;通常會設置JPA提供程序的二級緩存提供程序&#xff08;在我…

DirectX11 學習筆記7 - 支持自由移動的攝像機

如今將又一次制定一個camera攝像機。能夠自由移動。比方前進 后退&#xff0c;上游 下潛。 各個方向渲染之類的。 首先設置按鍵。 這個時候須要在 XWindow.h 里面 bool XWindow::frame() {//推斷是否按下ESC鍵if(x_input->isKeyDown(VK_ESCAPE))return false;//假設A,S,D,W,…

騰訊吃雞 android,騰訊吃雞手游《光榮使命》正式上線:安卓/iOS不限號測試

IT之家11月29日消息 今天下午&#xff0c;騰訊首款百人戰術競技手游《光榮使命》在安卓、iOS雙平臺正式上線&#xff0c;開啟全面測試。(官網下載&#xff1a;點此鏈接&#xff0c;雙平臺已開放下載。)該游戲采用第三人稱射擊視角&#xff0c;玩家化身參與“使命行動”軍事演習…

lazada鋪貨模式的選品_lazada小白的運營難點→鋪貨與精細化運營的優劣勢詳解

lazada是鋪貨還是精細化經營第一種鋪貨鋪貨作為平臺早期都是比較受歡迎的&#xff0c;平臺的蠻荒期&#xff0c;成長期當中&#xff0c;鋪貨的商家是非常受歡迎的&#xff0c;因為平臺需要更多SKU產品&#xff0c;去吸引買家&#xff0c;鋪貨這個時候是最好的也是能最快的成長起…

ife 零基礎學院 day 2

第二天&#xff1a;給自己做一個在線簡歷吧 最后的驗證&#xff0c;提出了幾個問題&#xff0c;嘗試解答一下 HTML是什么&#xff0c;HTML5是什么 HTML的定義摘抄自w3school的HTML 簡介 HTML 是用來描述網頁的一種語言。 HTML 指的是超文本標記語言 (Hyper Text Markup Langua…

excel數據生成sql?insert語句

excel數據生成sql insert語句 excel表格中有A、B、C三列數據&#xff0c;希望導入到數據庫users表中&#xff0c;對應的字段分別是name,sex,age 。 在你的excel表格中增加一列&#xff0c;利用excel的公式自動生成sql語句&#xff0c;方法如下&#xff1a; 1、增加一列&#xf…

Java中的推斷異常

借用和竊取其他語言的概念和想法總是很高興的。 Scala的Option是我真正喜歡的一個主意&#xff0c;因此我用Java編寫了一個實現。 它包裝了一個可能為null或不為null的對象&#xff0c;并提供了一些可按某種功能使用的方法。 例如&#xff0c;isDefined方法添加了一種面向對象的…

重載,覆蓋,隱藏

轉載于:https://www.cnblogs.com/jhcelue/p/7145525.html

Animate.css介紹

Animate.css簡介 animate.css 動畫庫&#xff0c;預設了抖動&#xff08;shake&#xff09;、閃爍&#xff08;flash&#xff09;、彈跳&#xff08;bounce&#xff09;、翻轉&#xff08;flip&#xff09;、旋轉&#xff08;rotateIn/rotateOut&#xff09;、淡入淡出&#x…

logstash 吞吐量優化_1002-談談ELK日志分析平臺的性能優化理念

在生產環境中&#xff0c;我們為了更好的服務于業務&#xff0c;通常會通過優化的手段來實現服務對外的性能最大化&#xff0c;節省系統性能開支&#xff1b;關注我的朋友們都知道&#xff0c;前段時間一直在搞ELK&#xff0c;同時也記錄在了個人的博客篇章中&#xff0c;從部署…

spark SQL(三)數據源 Data Source----通用的數據 加載/保存功能

Spark SQL 的數據源------通用的數據 加載/保存功能 Spark SQL支持通過DataFrame接口在各種數據源上進行操作。DataFrame可以使用關系變換進行操作&#xff0c;也可以用來創建臨時視圖。將DataFrame 注冊為臨時視圖允許您對其數據運行SQL查詢。本節介紹使用Spark Data Sou…

sqlserver日期函數

SQLServer時間日期函數詳解,SQLServer,時間日期, 1. 當前系統日期、時間 select getdate() 2. dateadd 在向指定日期加上一段時間的基礎上&#xff0c;返回新的 datetime 值 例如&#xff1a;向日期加上2天 select dateadd(day,2,2004-10-15) --返回&#xff1a…