国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > CSS > 正文

CSS 實現元素較寬不能被完全展示時將其隱藏的方法

2024-07-11 08:25:35
字體:
來源:轉載
供稿:網友

遇到一個需求,需要實現的樣式是固定寬度的容器里一排顯示若干個標簽,數量不定,每個標簽的長度也不定。當到了某個標簽不能被完全展示下時則不顯示。大致效果如下,標簽只顯示一排,多了放不下了就不顯示了。
 

標簽部分 DOM 結構如下 

<div class="labels"> <span class="label">Cooking</span> <span class="label">Coding</span> <span class="label">Travel</span> <span class="label">Photography</span> <span class="label">Reading</span></div>

乍一看這個問題很簡單嘛,本著樣式問題盡量不用 js 解決的原則,寫了下面這堆樣式,完美實現效果??梢钥闯鰜碜詈髢蓚€ .label 由于會超出 .labels 的寬度,被折到了下一行,然后又被 .labels 的 overflow: hidden 隱藏。

.label { display: block; height: 24px; line-height: 24px; padding: 0 10px; background-color: #e1ecf4; border-radius: 12px; font-size: 14px; flex-shrink: 0; // label 不收縮,長度為內容長度 & + .label { margin-left: 5px; }}.labels { height: 24px; // 一行 label 的高度 overflow: hidden; display: flex; flex-wrap: wrap; justify-content: flex-start;}

但是剛高興沒多久,突然發現了問題,如果第一個標簽的長度就超出了容器的寬度的話,并不會被整個隱藏,只是內容被截斷了,像下面這樣
 

 

這個問題困擾了我好一陣時間,一直在想 css 里有什么屬性可以在子元素寬度超過父容器時把它整個隱藏(而非僅僅隱藏超出父容器的部分)。各種思索都沒有結果正準備放棄萬分糾結到底用不用 js 實現時, 突然冒出來一個想法 既然現在被折行的元素可以被隱藏掉,那讓第一個標簽也折行不就行了嘛 。

那么怎么讓第一個標簽折行呢,想到一個比較 trick 的方法,讓它不再是第一個元素就可以利用 flex 的特性把它折行了~ 于是,在所有 .label 元素之前,添加了一個 .placeholder 元素只有 1px 寬,高度為 100%。 Inspect 元素的話可以看到確實 .placeholder 元素占據了第一行的位置,實現了我們想要的效果~

 

其實利用這個想法,使用 float 也可以實現同樣的效果。雖然有點 trick 并且還是借助了一個額外的 DOM 元素,不過效果還是完美實現了的~ 附上 codepen 鏈接供參考 https://codepen.io/Simona_Deng/pen/dJvvBR

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西吉县| 建瓯市| 鸡西市| 大洼县| 疏附县| 信宜市| 思南县| 晴隆县| 锦州市| 静安区| 微山县| 通山县| 桐城市| 通化县| 新绛县| 静海县| 共和县| 寿光市| 长春市| 宜良县| 蒙阴县| 琼中| 渑池县| 嘉峪关市| 襄城县| 方城县| 鄂温| 当阳市| 彝良县| 上虞市| 甘泉县| 鄯善县| 日土县| 苍南县| 防城港市| 西林县| 磴口县| 梓潼县| 城固县| 六盘水市| 财经|