el-input宽度跟随输入内容自适应的实现方法

 更新时间:2023年08月11日 10:46:34   作者:echo-_-  
这篇文章主要给大家介绍了关于el-input宽度跟随输入内容自适应的实现方法,我们再实际应用中可能需要input文本框能够根据输入字符的所占据的宽度自动调节尺寸,需要的朋友可以参考下

前言

用了很多次el-input输入框,但是没有对这一个实现方式做深一步的思考,这次就把自己整理的方式记录下来;

在这里插入图片描述

如果默认直接使用,这里的input输入框的宽度是width:100%。继承它的父级的宽度。

思路1:

1.首先我们可以获取输入内容的宽度,然后给定一个span标签,使其的宽度撑开input的宽度。

<div class="inputStyle">
      <el-input
        @input="getValue"
        v-model="value1"
        :style="{ width: spanWidth }"
      ></el-input>
      <span class="spanText">{{ spanText }}</span>
    </div>

这里需要实时监听输入内容的宽度

methods: {
    getValue(val) {
      this.spanText = val;
      const spanStyle = document.querySelector(".spanText");
      this.$nextTick(() => {    // 如果不用$nextTick的话页面并不会更新,它是在下次dom更新后再渲染到页面上
        this.spanWidth =
          spanStyle.offsetWidth < 160
            ? "160px"
            : spanStyle.offsetWidth + 30 + "px";
      });
    },
  },

css部分:

.inputStyle {
  margin-top: 30px;
  width: 300px;
}
.spanText {
  font-size: 12px;
  position: absolute;
  left: 0;
  padding: 0 15px;
  white-space: nowrap;
  visibility: hidden;
}

在这里插入图片描述

// 这个方法有点不那么自然,如果输入英文和中文,会造成有一点间隙的存在,如果大家优化的话可以自行发挥,能力有限这个是最简单的版本…

思路2:

使用slot :Select 组件头部内容。然后设置样式即可,不用监听,展现效果上会比较好一点。

 <el-input v-model="value1" class="inputStyle">
        <template slot="prefix">
          {{ value1 }}
        </template>
      </el-input>

css部分:

.inputStyle {
  margin-top: 30px;
  text-align: start;    // 这里一样要设置,否则不是对齐的居中状态
  min-width: 160px;   //这里给一个最小宽度
}
.el-input {
   width: auto;  // 这里一定要设置为auto 否则由于input是默认width :100%的
}
.inputStyle >>> .el-input__prefix {
  display: inline-block;
  position: relative;
  border: 1px solid #dcdfe6;
  box-sizing: border-box;
  color: #606266;
  font-size: inherit;
  height: 40px;
  line-height: 40px;
  padding: 0 30px;
  transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
  padding-left: 30px;
  left: 0;
  visibility: hidden;
}
.inputStyle >>> .el-input__inner {
  position: absolute;
}

效果如下:

在这里插入图片描述

总结 

到此这篇关于el-input宽度跟随输入内容自适应实现的文章就介绍到这了,更多相关el-input宽度跟随内容自适应内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • el-form中的rules未生效的解决方法

    el-form中的rules未生效的解决方法

    本文主要介绍了el-form中的rules未生效的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • vue项目纯前端实现的模板打印功能示例代码

    vue项目纯前端实现的模板打印功能示例代码

    在Vue项目中,通过使用vue-print-nb插件,可以实现页面的打印功能,这篇文章主要介绍了vue项目纯前端实现的模板打印功能的相关资料,需要的朋友可以参考下
    2024-10-10
  • 解决ele ui 表格表头太长问题的实现

    解决ele ui 表格表头太长问题的实现

    这篇文章主要介绍了解决ele ui 表格表头太长问题的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 基于better-scroll 实现歌词联动功能的代码

    基于better-scroll 实现歌词联动功能的代码

    BetterScroll 是一款重点解决移动端(已支持 PC)各种滚动场景需求的插件,BetterScroll 是使用纯 JavaScript 实现的,这意味着它是无依赖的。本文基于better-scroll 实现歌词联动功能,感兴趣的朋友跟随小编一起看看吧
    2020-05-05
  • vue中rem的配置的方法示例

    vue中rem的配置的方法示例

    这篇文章主要介绍了vue中rem的配置的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • Vue3封装全局函数式组件方法总结

    Vue3封装全局函数式组件方法总结

    函数式组件就是没有管理任何状态,也没有监听任何传递给它的状态,也没有生命周期方法,它只是一个接受一些 prop 的函数,下面这篇文章主要给大家介绍了关于Vue3封装全局函数式组件方法的相关资料,需要的朋友可以参考下
    2023-06-06
  • vue使用vue-cropper实现图片裁剪之单图裁剪的步骤

    vue使用vue-cropper实现图片裁剪之单图裁剪的步骤

    本文介绍在若依系统中使用vue-cropper实现固定尺寸图片裁剪上传的步骤,包括安装、引入、封装子组件、父级调用及参数接收,ruoyi.css已集成相关样式,感兴趣的朋友跟随小编一起看看吧
    2025-08-08
  • vue实现手机号码的校验实例代码(防抖函数的应用场景)

    vue实现手机号码的校验实例代码(防抖函数的应用场景)

    这篇文章主要给大家介绍了关于vue实现手机号码的校验的相关资料,主要是防抖函数的应用场景,文中通过示例代码介绍的非常详细,对大家学习或者使用vue具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • Vue路由跳转传参或打开新页面跳转的方法总结

    Vue路由跳转传参或打开新页面跳转的方法总结

    这篇文章主要给大家介绍了关于Vue路由跳转传参或打开新页面跳转的相关资料,在使用Vue.js开发单页面应用时常常会遇到路由跳转传参的需求,需要的朋友可以参考下
    2023-07-07
  • vue-meta实现router动态设置meta标签的方法

    vue-meta实现router动态设置meta标签的方法

    这篇文章主要介绍了vue-meta实现router动态设置meta标签,实现思路非常简单内容包括mata标签的特点和mata标签共有两个属性,分别是http-equiv属性和name属性,本文通过实例代码给大家详细讲解需要的朋友可以参考下
    2022-11-11

最新评论