flex布局下,將內容限定在容器內(如內容超出以省略號顯示)的實現方案


當文字超出容器寬度時,以省略號顯示,這一需求在項目中十分常見,但是在flex布局下,可能會遇到問題,如省略號不顯示,內容超出容器等問題,本文通過demo測試案例,記錄下問題及解決方案。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style>
			.wrapper {
				width: 200px;
				display: flex;
			}
			.div1, .div2 {
				flex: 1;/*占比,最小寬度*/
				border: 1px solid blue;	
			}
			p {
				overflow: hidden;
				text-overflow: ellipsis;
				white-space: nowrap;
			}
		</style>
	</head>
	<body>
		<div class="wrapper">
			<div class="div1">
				<p>啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊</p>
			</div>
			<div class="div2">
				<p>啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊</p>
			</div>
		</div>
	</body>
</html>

如上代碼所示,我們發現,文字內容並沒有被限制在flex容器里面,以省略號顯示,經過調試發現,flex水平布局的容器,flex的值表示的是寬度占比,同時,類似於設置了一個最小寬度min-width。(此時,當給容器的寬設置了一個小於占比 * 總寬的width值,是起不到作用的,但是設置了一個大於占比 * 總寬的width值時,寬度有效,並撐開外部容器。如果不設置寬度值,則當內容大於占比時,容器仍由內容撐開)。

有了以上實踐理解之后,得到解決方案如下兩種:

  • 為內容的父級容器(本例中是.div1, .div2)設置overflow: hidden;
  • 為內容的父級容器(本例中是.div1, .div2)設置一個小於占比的寬度,如width: 0;

補充於2019年8月6日

之前的表述有點繞,現在理解下來,實質就是:設置flex的值,等同於設置了一個min-width,而min-width什么時候能看到起作用呢,就是在內容很少的時候,內容少時,該容器的寬以min-width為准,內容多時,該容器的寬就是內容的寬。max-width與width的關系是同樣道理的,height也是一樣的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM