如何让Element UI中同一行相邻列的高度自动适应内容?

如何让Element UI中同一行相邻列的高度自动适应内容?

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样式:

  1. 移除el-col的高度限制: 删除el-col中任何显式或隐式的高度设置(例如height: 100%;)。让el-col的高度完全由其子元素内容决定。

  2. 调整el-row的布局: 确保el-row的布局允许子元素高度自动扩展。 如果使用了align-items: center;,则将其移除或改为align-items: stretch;(stretch是默认值,可以省略)。这将允许el-col的高度根据内容自动调整。

  3. 可选:内容垂直居中: 如果需要内容垂直居中,可以在.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高度的样式。

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享