Vue實(shí)現(xiàn)input寬度隨文字長(zhǎng)度自適應(yīng)操作

業(yè)務(wù)需求,輸入文字,后面的元要緊隨其后,奈何input默認(rèn)是有寬度,我想要達(dá)到,輸入文字,動(dòng)態(tài)改變input的寬度,試了很多方法,目前自己琢磨一種,有遇到問(wèn)題的可以參考一下,
直接貼代碼
<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’ : > <span 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)前字體的長(zhǎng)度,我這里最多允許輸入5個(gè)字符的長(zhǎng)度,所以這樣計(jì)算影響不大
補(bǔ)充知識(shí):input寬度自適應(yīng)(解決文字占位寬度不同所引起的問(wèn)題)
問(wèn)題描述:
input在輸入的時(shí)候,要能讓input的寬度隨著輸入的文字自動(dòng)增寬。
思路1:獲取文字的內(nèi)容,然后通過(guò)文字.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' 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寬度隨文字長(zhǎng)度自適應(yīng)操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. PHP基礎(chǔ)之生成器4——比較生成器和迭代器對(duì)象2. CentOS郵箱服務(wù)器搭建系列——SMTP服務(wù)器的構(gòu)建( Postfix )3. ASP新手必備的基礎(chǔ)知識(shí)4. Docker 啟動(dòng)Redis 并設(shè)置密碼的操作5. asp文件用什么軟件編輯6. python 爬取豆瓣網(wǎng)頁(yè)的示例7. vue限制輸入數(shù)字或者保留兩位小數(shù)實(shí)現(xiàn)8. 利用CSS制作3D動(dòng)畫(huà)9. python如何操作mysql10. JS中6個(gè)對(duì)象數(shù)組去重的方法

網(wǎng)公網(wǎng)安備