Vue實(shí)現(xiàn)input寬度隨文字長度自適應(yīng)操作
業(yè)務(wù)需求,輸入文字,后面的元要緊隨其后,奈何input默認(rèn)是有寬度,我想要達(dá)到,輸入文字,動(dòng)態(tài)改變input的寬度,試了很多方法,目前自己琢磨一種,有遇到問題的可以參考一下,
直接貼代碼
<div class="textcontain"> <input type="text" v-model.number="item.cardComboMoney" maxlength="5" placeholder="設(shè)定數(shù)值" oninput="value=value.replace(/^(0+)|[^\d]+/g,'')" :disabled='disabled' :style="{width:text(item.cardComboMoney)}" > <span class="textshow" v-if="item.cardComboMoney!=0&&item.cardComboMoney!=''" >元</span> </div>
computed: { text () { return function (value) { if (value == '' || value == 0) { return '100%' } else { return String(value).length * 0.32 + 'rem' } } } },
利用計(jì)算屬性,計(jì)算當(dāng)前字體的長度,我這里最多允許輸入5個(gè)字符的長度,所以這樣計(jì)算影響不大
補(bǔ)充知識(shí):input寬度自適應(yīng)(解決文字占位寬度不同所引起的問題)
問題描述:
input在輸入的時(shí)候,要能讓input的寬度隨著輸入的文字自動(dòng)增寬。
思路1:獲取文字的內(nèi)容,然后通過文字.length * font-size計(jì)算文字的寬度,但是由于文字“i”與“中”顯然占位寬度不同而引起寬度差
思路:
設(shè)置一個(gè)隱藏的span,使其font屬性與input統(tǒng)一,然后獲取span的寬度,賦值給input
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script> <title>input寬度自適應(yīng)</title> <style> body { font-size: 16px; font-family: Arial, Helvetica, sans-serif; } #my-input { width: 20px; padding: 0; font-size: 16px; font-family: Arial, Helvetica, sans-serif; } #my-span { position: absolute; left: 0; visibility: hidden; } </style> </head> <body> <!-- 思路:將文字內(nèi)容賦值給隱藏的span,然后將input的寬度設(shè)置為span的寬度 --> <span id="my-span"></span> <input type="text" id="my-input" oninput="changeWidth()"> <script> function changeWidth() { var mySpan = $("#my-span"); var myInput = $("#my-input"); mySpan.html(myInput.val()); //給span賦值 if (mySpan.width() > 20) { myInput.css('width', mySpan.width()); } } </script> </body> </html>
以上這篇Vue實(shí)現(xiàn)input寬度隨文字長度自適應(yīng)操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
針對Vue路由history模式下Nginx后臺(tái)配置操作
這篇文章主要介紹了針對Vue路由history模式下Nginx后臺(tái)配置操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10ant-design-vue前端UI庫,如何解決Table中時(shí)間格式化問題
這篇文章主要介紹了ant-design-vue前端UI庫,如何解決Table中時(shí)間格式化問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03VUE-ElementUI?時(shí)間區(qū)間選擇器的使用
這篇文章主要介紹了VUE-ElementUI?時(shí)間區(qū)間選擇器的使用,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05vue如何基于el-table實(shí)現(xiàn)多頁多選及翻頁回顯過程
在最近的一個(gè)項(xiàng)目中我需要實(shí)現(xiàn)表格的翻頁,并且還要實(shí)現(xiàn)全選、多選功能,下面這篇文章主要給大家介紹了關(guān)于vue如何基于el-table實(shí)現(xiàn)多頁多選及翻頁回顯過程的相關(guān)資料,需要的朋友可以參考下2022-12-12vue3頁面query參數(shù)變化并重新加載頁面數(shù)據(jù)方式
在Web開發(fā)中,頁面間的跳轉(zhuǎn)及數(shù)據(jù)刷新是常見問題,通過使用$router.push和$router.replace方法,可以控制頁面跳轉(zhuǎn)的行為,具體操作時(shí),若發(fā)現(xiàn)頁面ID變更后數(shù)據(jù)未刷新,可通過給router-view標(biāo)簽添加key值解決,若使用keep-alive2024-10-10解決v-for中使用v-if或者v-bind:class失效的問題
今天小編就為大家分享一篇解決v-for中使用v-if或者v-bind:class失效的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09實(shí)現(xiàn)shallowReadonly和isProxy功能示例詳解
這篇文章主要為大家介紹了實(shí)現(xiàn)shallowReadonly和isProxy功能示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12