element ui布局:解决同一行相邻列高度不一致问题
在使用element ui构建页面时,经常会遇到同一行内,相邻列的高度因内容差异而无法自动匹配的问题。本文将分析此问题并提供有效的解决方案。
问题描述
假设我们使用el-row和el-col构建如下布局:
<el-row class="row"> <el-col class="col"> <span class="label">上平行度</span> <span class="value">较长文本内容...</span> </el-col> <el-col class="col"> <span class="label">平行度ok/ng</span> <span class="value">短文本</span> </el-col> </el-row>
即使设置.label和.value的height: auto;,由于el-col或其他样式限制,短列的高度可能无法与长列一致。
问题分析
问题根源在于el-col默认高度行为以及父元素的布局方式。 el-col的高度受其内容影响,但如果父元素(el-row)的布局方式限制了子元素高度的自动调整,则会导致高度不一致。
解决方案
为了让列高自动适应内容,我们需要调整css样式:
-
移除el-col的高度限制: 删除el-col中任何显式或隐式的高度设置(例如height: 100%;)。让el-col的高度完全由其子元素内容决定。
-
调整el-row的布局: 确保el-row的布局允许子元素高度自动扩展。 如果使用了align-items: center;,则将其移除或改为align-items: stretch;(stretch是默认值,可以省略)。这将允许el-col的高度根据内容自动调整。
-
可选:内容垂直居中: 如果需要内容垂直居中,可以在.label和.value上应用display: flex;和align-items: center;。
修改后的css示例:
.row { border-bottom: solid .0625rem #9c9c9c; display: flex; /* align-items: stretch; (默认值,可以省略) */ .col { display: flex; flex-direction: column; /* 确保label和value垂直排列 */ span:not(:last-child) { border-right: solid .0625rem #9c9c9c; } ::v-deep span { flex: 1; /* 允许span高度自动扩展 */ word-break: break-all; word-wrap: break-word; /* height: 23px; 移除固定高度 */ /* line-height: 23px; 移除固定行高 */ text-align: center; /* 可选:水平居中 */ } .label { background-color: #e0e0e0; color: #000000; font-weight: bold; height: auto; display: flex; align-items: center; /* 垂直居中 */ } .value { height: auto; display: flex; align-items: center; /* 垂直居中 */ } } }
通过以上调整,el-col的高度将根据其内容自动调整,从而解决同一行相邻列高度不一致的问题。 记住移除任何强制设置el-col高度的样式。
以上就是如何让element ui中同一行相邻列的高度自动适应内容?的详细内容,更多请关注代码网其它相关文章!
发表评论