使用el-row让文字水平居中且根据textarea拉伸位置不改变

文章介绍了如何在ElementUI中使用el-row组件结合flex布局,使文字水平居中并确保textarea的高度自适应。通过添加特定CSS样式,解决了传统方法无法实现的随textarea拉伸的问题。

使用el-row让文字水平居中且根据textarea拉伸位置不改变

  • el-row是element的分栏布局方式
  • 话不多说看代码:
 <el-row :gutter="0" type="flex" align="middle">
    <el-col :span="3">
       <el-card shadow="hover" >
           ******
       </el-card>
       </el-col>
       <el-col :span="9">
         <el-input style="width:100%" v-model="****.*****" readonly placeholder="****" class="inputstyle"></el-input>
       </el-col>
</el-row>

添加 **type=“flex” align=“middle”**两行代码效果图:
在这里插入图片描述
所以我们不能使用这种方法、正确的方式是。直接上代码:

/*使用felx布局来解决这个问题*/
<el-row :gutter="0" >
  <el-col :span="3">
    <el-card shadow="hover" class="cardstyle_col">
      ****
    </el-card>
    </el-col>
    <el-col :span="21">
      <el-input type="textarea" v-model="****.****" clearable readonly class="textareastyle" placeholder="placeholder"></el-input>
    </el-col>
</el-row>

/*样式*/
.textareastyle {
        display: inline-block; /*行内元素使用flex布局*/
        width: 100%;
        line-height: 35px;
        font-size: 12px;
        resize: none;
    }
.cardstyle_col {
        text-align: center;
        background-color: #F8F8F9;
        height: 100%;
        border-radius: 4px;
        line-height: 100%;
        width: 100%;
        vertical-align: middle;
        display: flex;
        flex-direction: column;
        justify-content: center;
    }

然后我们就解决了这个水平居中的问题且样式也好看、直接上图
在这里插入图片描述
这样就可以随着textarea去变动、不管你怎么拉伸都没事、
学会了吗.

<think> 我们之前已经讨论过如何让文本域宽度可拖动,通过设置CSS属性`resize: vertical;`。现在用户再次询问,可能是想确认或者需要更多细节。 根据引用[1]和引用[2],用户知道使用`type="textarea"`可以创建一个可拖动的文本域,但希望禁止水平拖动。我们的解决方案是使用CSS。 具体步骤: 1. 在组件的样式中,针对`el-textarea__inner`这个类(这是Element UI内部为文本域输入框设置的类)设置`resize`属性。 2. 将`resize`设置为`vertical`,这样用户就只能垂直拖动调整高度,而能水平调整宽度。 注意:由于Element UI的文本域实际上是一个`textarea`元素,它被包裹在带有`el-textarea`类的div中,而具体的文本域元素具有`el-textarea__inner`类。 代码实现: 在Vue组件的`<style>`部分(如果使用了scoped,确保选择器正确)添加以下样式: ```css /* 在scoped的情况下,使用深度选择器或者直接使用类名 */ /* 方法1:使用深度选择器(当style有scoped时) */ ::v-deep .el-textarea__inner { resize: vertical; } /* 方法2:如果未使用scoped,直接写 */ .el-textarea__inner { resize: vertical; } ``` 另外,引用[2]提到可以通过`:rows`属性设置文本域的初始行数(高度),但这与拖动无关。 所以,回答用户:在el-form-item里的el-input type=textarea设置宽度可拖动的方法是使用CSS,具体为设置`.el-textarea__inner`的`resize`属性为`vertical`。 同时,我们生成相关问题: 1. 如何让文本域只能水平拖动(调整宽度)而能垂直拖动(调整高度)? 2. 如何完全禁止文本域的拖动(既调整宽度也调整高度)? 3. 如何设置文本域的最小和最大高度? </think> 要在 `el-form-item` 中的 `el-input type="textarea"` 设置宽度可拖动,可通过以下两种方法实现: ### 方法 1:使用 CSS 样式(推荐) 在组件的 `<style>` 部分添加以下 CSS 规则: ```html <template> <el-form-item label="描述"> <el-input type="textarea" v-model="formData.desc"></el-input> </el-form-item> </template> <style scoped> /* 禁止水平拖动 */ ::v-deep .el-textarea__inner { resize: vertical; /* 只允许垂直拖动 */ min-height: 80px; /* 可选:设置最小高度 */ } </style> ``` **效果**: - 文本域只能垂直拖动调整高度,宽度固定- `resize: vertical` 是核心属性,控制拖动方向 - `::v-deep` 用于穿透 scoped 样式作用域[^1] ### 方法 2:设置行数限制(辅助方案) 结合 `:rows` 属性限制初始高度: ```html <el-input type="textarea" v-model="formData.desc" :rows="4" <!-- 固定显示4行高度 --> style="resize: vertical" <!-- 直接内联样式 --> ></el-input> ``` **注意**:`rows` 只控制初始高度,仍需配合 `resize: vertical` 才能完全锁定宽度[^2] ### 完整示例 ```html <template> <el-form :model="formData"> <el-form-item label="参数信息"> <el-input type="textarea" v-model="formData.desc" :rows="3" placeholder="宽度可拖动的文本域" ></el-input> </el-form-item> </el-form> </template> <script> export default { data() { return { formData: { desc: '' } } } } </script> <style scoped> ::v-deep .el-textarea__inner { resize: vertical; min-width: 100%; /* 保持宽度自适应 */ } </style> ``` ### 关键点说明 1. `resize: vertical` 是核心解决方案,需作用于 Element UI 内部类名 `.el-textarea__inner` 2. 使用 `::v-deep` 或 `/deep/` 穿透 scoped 样式限制 3. 可配合 `:rows` 设置初始高度(默认 2 行)[^2] 4. 添加 `min-width: 100%` 可让文本域宽度自适应父容器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值