iT邦幫忙

2023 iThome 鐵人賽

DAY 10
0
Vue.js

Vue3歡樂套件箱耶系列 第 10

開箱10:自適應高度TextArea~resize-textarea-vue3範例應用

  • 分享至 

  • xImage
  •  

本篇介紹根據內容自動更新文字區域的高度的工具resize-textarea-vue3

<input>只能輸入單行,而<textarea>則可輸入多行文字,且有cols和rows屬性可以設定一行有幾個字元、可以容納幾行,當輸入文字超過設定的行數時,會自動產生卷軸,這時候如果專案上的輸入框需求是在一定高度內不產生捲軸,且畫面不寫死高度的情況下,就會需要這個套件拉!(當然也可以不用套件自己寫程式判斷)

介紹

官網
https://github.com/DneshP/resize-textarea-vue3?ref=vuejsexamples.com

安裝

npm i resize-textarea-vue3

引用

main.js 全域

import { createApp } from 'vue'
import ResizeTextarea from 'resize-textarea-vue3'

const app = createApp({
....
})
app.use(ResizeTextarea)
.mount('#app')

典型應用

(單一組件內)

<template>
    <div id="wrapper">
        <resize-textarea
        :placeholder="placeholder"
        :rows="2"
        :cols="4"
        :maxHeight="150"
        v-model="textValue">
        </resize-textarea>
    </div>
    <script>
    export default {
        data() {
            return {
                placeholder: "This is a test message",
                textValue: "reSize",
            }
        },
    }
    </script>
</template>
屬性 預設值
placeholder Null
rows 2
cols 20
minHeight 0
maxHeight(最大高度) 50px
modelValue(輸入框的值) Null
autoResize true(預設會停用拖曳手柄)

今日姊姊Demo時間


成果

Demo網址:https://hahasister-ironman-project.netlify.app/#/resizeTextarea

<template>
    <div>
      <label for="textarea" class="block mb-2">我是使用Resize Textarea的</label>
      <resize-textarea
        :placeholder="placeholder"
        v-model="textValue"
        :minHeight="46"
        :rows="1"
        :maxHeight="300"
        class="bg-gray-50 border border-gray-300 text-gray-900 rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5"
      >
      </resize-textarea>
    </div>
</template>

<script setup>
import { ref } from 'vue';
const textValue = ref('');
const placeholder = ref('This is a test message');
</script>

這樣就完成拉!

備註:
在 CSS 可以設定 resize: none,可以停用拖曳手柄,若沒有特別設定,都是可以再調整大小的

那我們明天再見了~


上一篇
開箱9:輕鬆實現多行文本溢出顯示...~vue-ellipsis-3範例應用
下一篇
開箱11:文字轉語音不專業版~Speech Synthesis範例應用
系列文
Vue3歡樂套件箱耶30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言