el-input寬度跟隨輸入內(nèi)容自適應(yīng)的實現(xiàn)方法
前言
用了很多次el-input輸入框,但是沒有對這一個實現(xiàn)方式做深一步的思考,這次就把自己整理的方式記錄下來;
如果默認直接使用,這里的input輸入框的寬度是width:100%。繼承它的父級的寬度。
思路1:
1.首先我們可以獲取輸入內(nèi)容的寬度,然后給定一個span標簽,使其的寬度撐開input的寬度。
<div class="inputStyle"> <el-input @input="getValue" v-model="value1" :style="{ width: spanWidth }" ></el-input> <span class="spanText">{{ spanText }}</span> </div>
這里需要實時監(jiān)聽輸入內(nèi)容的寬度
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; }
// 這個方法有點不那么自然,如果輸入英文和中文,會造成有一點間隙的存在,如果大家優(yōu)化的話可以自行發(fā)揮,能力有限這個是最簡單的版本…
思路2:
使用slot :Select 組件頭部內(nèi)容。然后設(shè)置樣式即可,不用監(jiān)聽,展現(xiàn)效果上會比較好一點。
<el-input v-model="value1" class="inputStyle"> <template slot="prefix"> {{ value1 }} </template> </el-input>
css部分:
.inputStyle { margin-top: 30px; text-align: start; // 這里一樣要設(shè)置,否則不是對齊的居中狀態(tài) min-width: 160px; //這里給一個最小寬度 } .el-input { width: auto; // 這里一定要設(shè)置為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; }
效果如下:
總結(jié)
到此這篇關(guān)于el-input寬度跟隨輸入內(nèi)容自適應(yīng)實現(xiàn)的文章就介紹到這了,更多相關(guān)el-input寬度跟隨內(nèi)容自適應(yīng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
教你如何使用VUE組件創(chuàng)建SpreadJS自定義單元格
這篇文章主要介紹了使用VUE組件創(chuàng)建SpreadJS自定義單元格的方法,通常我們使用組件的方式是,在實例化Vue對象之前,通過Vue.component方法來注冊全局的組件,文中通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧2022-01-01Vue-cli3 $ is not defined錯誤問題及解決
這篇文章主要介紹了Vue-cli3 $ is not defined錯誤問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07vue項目打包后上傳至GitHub并實現(xiàn)github-pages的預(yù)覽
這篇文章主要介紹了vue項目打包后上傳至GitHub并實現(xiàn)github-pages的預(yù)覽,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05vue-music關(guān)于Player播放器組件詳解
這篇文章主要為大家詳細介紹了vue-music關(guān)于Player播放器組件的相關(guān)資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-11-11基于vue開發(fā)微信小程序mpvue-docs跳轉(zhuǎn)頁面功能
這篇文章主要介紹了基于vue寫微信小程序mpvue-docs跳轉(zhuǎn)頁面,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-04-04vue配置electron使用electron-builder進行打包的操作方法
這篇文章主要介紹了vue配置electron使用electron-builder進行打包的操作方法,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2024-08-08Vue2.x配置路由導(dǎo)航守衛(wèi)實現(xiàn)用戶登錄和退出
之前在Vue的學(xué)習(xí)中通過路由導(dǎo)航守衛(wèi)控制實現(xiàn)了用戶登錄模塊的功能,本文基于Vue2.x進行實現(xiàn),在此將實現(xiàn)過程進行記錄與總結(jié),感興趣的可以了解一下2021-08-08