display:flex佈局下white-space:nowrap失效問題解決

Flowering_Vivian發表於2020-11-30

文字長度過長顯示省略號的樣式設定方法眾所周知:

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

然而有一次,我在專案中用到white-space: nowrap的時候,發現它失效了,我的專案是flex佈局,寬度自適應的部分,white-space: nowrap撐開了內容區的長度,省略號是顯示了,但是父元素的自適應寬度完全不對了。

頁面部分佈局如下:

<template>
	<div class="parent">
		<el-col :span="6" v-for="item in list" :key="item.id">
			<h3>{{ item.title }}</h3>
			......
		</el-col>
	</div>
</template>

樣式如下:

	.parent {
		flex: auto;
	    min-height: 100vh;
	    display: flex;
	    flex-direction: column;
	}
	.parent h3 {
		white-space: nowrap;
	    overflow: hidden;
	    text-overflow: ellipsis;
	}
}

查了一下才知道,原來是因為display:flex影響的,white-space:nowrap會影響flex佈局下未設定寬度的元素,所以給設定了display:flex的父元素設定一下min-width: 0;即可解決問題。

.parent {
	flex: auto;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
	min-width: 0;
}

相關文章