【vue】輸入框和文本域切換

輸入框的樣子?

文本域的樣子

當輸入框出現滾動條的時候,就自動切換成文本域;當文本域到1行并且寬度小于輸入框寬度時切換成輸入框

<div class="left_box_inpt"><divclass="right_box_inpt":class="{notclickable: inputdisabled,}">//文本域<divv-if="isOverflow"style="display: flex;width: 98%;margin: 10px auto 0;border-radius: 25px !important;background-color: #fff;"><el-inputref="inputRef"id="text-input"v-model="memory"@input="oninput"@keyup.enter.native="sub()"type="textarea"resize="none":autosize="{ minRows: 1, maxRows: 4 }":style="{ width: textareawidth + 'px' }"></el-input></div>// 輸入框<divstyle="display: flex;width: 100%;border-radius: 25px !important;background-color: #fff;"><el-inputv-if="!isOverflow"ref="inputRef"id="text-input"v-model="memory"@input="oninput"@keyup.enter.native="sub()":disabled="inputdisabled"></el-input><divstyle="display: flex;line-height: 50px;padding: 0 10px;margin-left: auto;"><el-tooltipclass="item"effect="dark":content="$t('upload')"placement="top"><el-uploadref="upload"action="#"multiple:http-request="httpRequest":before-upload="beforeUpload":show-file-list="false"accept=".pdf,.docx,.xlsx"><el-buttonclass="subbtn"type="text"style="padding: 17px 0"icon="el-icon-circle-plus-outline":disabled="inputdisabled"></el-button></el-upload></el-tooltip><spanstyle="width: 1px;height: 15px;background-color: #dcdfe6;margin: auto 10px;"></span><el-tooltipclass="item"effect="dark":content="$t('send')"placement="top"><el-button:disabled="BtnDisabled"class="subbtn"type="text"@click="sub()"><imgv-if="BtnDisabled"src="@/assets/right1.png"style="width: 15px"/><imgv-elsesrc="@/assets/right3.png"style="width: 15px"/></el-button></el-tooltip></div></div></div></div>
<script>
export default {data () {return {memory: "", //發送信息BtnDisabled :false,isOverflow: false,//切換輸入框為文本框inputoffsetWidth: "",//輸入框的寬度textareawidth: "100%"//文本域的寬度};},methods: {// 監聽輸入框oninput (e) {if (e !== "") {this.BtnDisabled = false;} else {this.BtnDisabled = true;}// 輸入框超出變成文本框this.$nextTick(() => {const inputInner = this.$refs.inputRef.$el.querySelector('.el-input__inner');const textareaInner = this.$refs.inputRef.$el.querySelector('.el-textarea__inner');if (inputInner) {this.isOverflow = inputInner.scrollWidth > inputInner.offsetWidth;this.inputoffsetWidth = inputInner.offsetWidthsetTimeout(() => {this.$refs.inputRef.focus()}, 100)}if (textareaInner) {// 是不是1行if (textareaInner.scrollHeight < 52) {// 改變寬度this.textareawidth = this.getBLen(e) * 7 + 35if (this.textareawidth < this.inputoffsetWidth) {this.isOverflow = false;setTimeout(() => {this.$refs.inputRef.focus()this.textareawidth = '100%'}, 100)}}}});},// 獲取字符串的字節長度,中文2個、英文1個getBLen (str) {if (str == null) return 0;if (typeof str != "string") {str += "";}return str.replace(/[^\x00-\xff]/g, "01").length;},}
}
</script>

this.getBLen(e) * 7 + 35? ? ? 這個應該是字符串長度乘以字體px加光標顯示寬度,但是實際上按照實際數據來會出很大偏差,所以我自己檢測了一下,最后才定下適合我的數據。

這個終究是估算的,所有多少會有些偏差,我目前也沒找到其他方法,所以最終還是需要你們自行結合實際情況。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/45966.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45966.shtml
英文地址,請注明出處:http://en.pswp.cn/web/45966.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

OpenResty使用Lua筆記

文章目錄 一、基礎1、常用2、使用局部變量3、模塊化 二、性能提升1、使用fft調用shell2、不要在循環中拼接字符串3、不要頻繁修改table4、不要在table中用nil5、做好異常處理6、ngx.var 的性能提升 三、拓展1、加載字符串為動態方法 一、基礎 1、常用 OpenResty 中文官網&…

Open3D 最小二乘法擬合點云平面

目錄 一、概述 1.1最小二乘法原理 1.2實現步驟 1.3應用場景 二、代碼實現 2.1關鍵函數 2.2完整代碼 三、實現效果 3.1原始點云 3.2matplotlib可視化 3.3平面擬合方程 前期試讀&#xff0c;后續會將博客加入該專欄&#xff0c;歡迎訂閱 Open3D點云算法與點云深度學習…

【學術會議征稿】第四屆人工智能、虛擬現實與可視化國際學術會議(AIVRV 2024)

第四屆人工智能、虛擬現實與可視化國際學術會議&#xff08;AIVRV 2024&#xff09; 2024 4th International Conference on Artificial Intelligence, Virtual Reality and Visualization 第四屆人工智能、虛擬現實與可視化國際學術會議&#xff08;AIVRV 2024&#xff09;將…

用python寫一個爬蟲,爬取google中關于蛇的照片

為了爬取Google中關于蛇的照片&#xff0c;我們可以利用Python中的第三方庫進行網頁解析和HTTP請求。請注意&#xff0c;這種爬取行為可能違反Google的使用條款&#xff0c;因此建議在合法和允許的情況下使用。以下是一個基本的Python爬蟲示例&#xff0c;使用Requests庫發送HT…

git 指令速查

1. 創建命令 Create Git 指令命令說明git clone 克隆遠程倉庫git init初始化本地 git 倉庫(即創建新的本地倉庫)2. 本地更改 Local Changes Git 指令命令說明git status查看當前分支狀態git diff查看已跟蹤文件的變更git add 將指定的文件添加到暫存區git add .將所有有變更的…

簡約唯美的404HTML源碼

源碼介紹 簡約唯美的404HTML源碼,很適合做網站錯誤頁,將下面的源碼放到一個空白的html里面,然后上傳到服務器里面即可使用 效果預覽 完整源碼 <!DOCTYPE html> <html><head><meta charset="utf-8"><title>404 Error Example<…

第二證券:市場估值依然處于較低區域 適合中長期布局

A股中報成績預告顯示相比2024Q1&#xff0c;2024Q2企業產品銷量或訂單已有回暖&#xff0c;但價格反轉暫未大面積到來&#xff0c;“量增價平、部分板塊以價換量”是2024H1 A股成績預告較顯著的量價特征&#xff0c;這與微觀庫存周期有待回暖相匹配。此外中游部分環節出現不同程…

Vue 3中使用 Lottie 動畫

一、Lottie動畫簡介 Lottie是由Airbnb開源的面向Android、iOS、Web和Windows的動畫庫,開發者可以使用它在Web、iOS、Android等平臺上實現高性能的體驗豐富的矢量動畫。 在早期的前端開發中,Flash是網頁動畫之王,不過它的規范約束隨意,造成很多時設計出來的產品都無法符合…

新版網頁無插件H.265播放器EasyPlayer.js如何測試demo視頻?

H5無插件流媒體播放器EasyPlayer屬于一款高效、精煉、穩定且免費的流媒體播放器&#xff0c;可支持多種流媒體協議播放&#xff0c;支持H.264與H.265編碼格式&#xff0c;性能穩定、播放流暢&#xff1b;支持WebSocket-FLV、HTTP-FLV&#xff0c;HLS&#xff08;m3u8&#xff0…

富格林:直面暗箱減少出金虧損

富格林悉知&#xff0c;在交易的過程中&#xff0c;投資者就算做好了十足的把握&#xff0c;也難免會出現出金虧損的情況。在這里建議新手投資者&#xff0c;在準備投資交易的時候&#xff0c;一定要做好充分的準備工作&#xff0c;了解黃金投資哪些暗箱陷阱&#xff0c;同時學…

【Linux】進程信號 --- 信號產生

&#x1f466;個人主頁&#xff1a;Weraphael ?&#x1f3fb;作者簡介&#xff1a;目前正在學習c和算法 ??專欄&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起進步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指點一二 如果文章對…

【轉型Web3開發第二課】Dapp開發入門基礎 | 02 | MetaMask配置網絡

本文首發于公眾號&#xff1a;Keegan小鋼 前言 完成了《轉型 Web3 開發第一課》之后&#xff0c;得到了不少讀者的認可&#xff0c;很多都在問什么時候開始下一課&#xff0c;近期終于抽出了時間開始搞起這第二課。 這第二課的主題為「Dapp開發入門基礎」&#xff0c;即想要轉…

淺談Visual Studio 2022

Visual Studio 2022&#xff08;VS2022&#xff09;提供了眾多強大的功能和改進&#xff0c;旨在提高開發者的效率和體驗。以下是一些關鍵功能的概述&#xff1a;12 64位支持&#xff1a;VS2022的64位版本不再受內存限制困擾&#xff0c;主devenv.exe進程不再局限于4GB&#xf…

【ffmpeg命令入門】重新編碼媒體流、設置碼率、設置幀速率

文章目錄 前言ffmpeg的描述重新編碼媒體流重新編碼媒體流的命令ffmpeg支持的媒體流 設置視頻碼率視頻碼率是什么設置視頻的碼率 設置文件幀數率幀數率是什么ffmpeg設置幀數率 總結 前言 在數字媒體處理領域&#xff0c;ffmpeg是一款非常強大的工具&#xff0c;它可以用來進行媒…

在線生成privacy-policy和 service-agreement

生成ppsa 網站 下面兩個是要收費的 局部功能可用 #1 Privacy Policy Generator - Privacy Policieshttps://termify.io/ 下面這個網站 創建一個是免費的 如果想要privacy-policy和 service-agreement 需要創建兩個賬戶 Termly

Java學習|JSON 處理庫:Gson、FastJson、Jackson的比較與使用指南

文章目錄 一、Gson簡介與使用注意事項1.1 簡介1.2 使用注意事項1.3 代碼示例序列化反序列化 二、FastJson簡介與使用注意事項2.1 簡介2.2 使用注意事項2.3 代碼示例序列化反序列化 三、Jackson簡介與使用注意事項3.1 簡介3.2 使用注意事項3.3 代碼示例序列化反序列化 四、關聯和…

svn不能記住密碼,反復彈出GNOME,自動重置svn.simple文件

1. 修改文件 打開 ~/.subversion/auth/svn.simple/xxx 更新前 K 15 svn:realmstring V 32 xxxxx //svn 地址&#xff0c;庫的地址 K 8 username V 4 xxx //用戶名 END在頂部插入下面內容&#xff0c; 注意&#xff0c;如果密碼不對&#xff0c;則文件文法正常生效 更新后…

37、PHP 實現一個鏈表中包含環,請找出該鏈表的環的入口結點

題目&#xff1a; 題目描述 PHP 實現一個鏈表中包含環&#xff0c;請找出該鏈表的環的入口結點。 描述&#xff1a; 一個鏈表中包含環&#xff0c;請找出該鏈表的環的入口結點。 <?php /*class ListNode{var $val;var $next NULL;function __construct($x){$this->v…

自動駕駛車道線檢測系列—3D-LaneNet: End-to-End 3D Multiple Lane Detection

文章目錄 1. 摘要概述2. 背景介紹3. 方法3.1 俯視圖投影3.2 網絡結構3.2.1 投影變換層3.2.2 投影變換層3.2.3 道路投影預測分支 3.3 車道預測頭3.4 訓練和真實值關聯 4. 實驗4.1 合成 3D 車道數據集4.2 真實世界 3D 車道數據集4.3 評估結果4.4 評估圖像僅車道檢測 5. 總結和討論…

windows下gcc編譯C、C++程序 MinGW編譯器

文章目錄 1、概要2、MinGW安裝2.1 編譯器下載2.2 編譯器安裝2.3 設置環境變量2.4 查看gcc版本信息 3、編譯C、C程序3.1 編寫Hello World.c3.2 編譯C程序3.3 運行程序3.4 編譯C程序 1、概要 GCC原名為GNU C語言編譯器&#xff08;GNU C Compiler&#xff09;&#xff0c;只能處…