Vue textarea 高度自适应
Vue textarea 高度自适应
- 主要用到两个属性offsetHeight,scrollHeight
- scrollHeight 是内容的滚动高度,包含没实现出来的
- offsetHeight 当前控件显示的高度,如果文字增多了,不做自适应,这个高度不变,scrolHeight变大,所以可以比较这两个值,修改textarea的高度后,offsetHeight也就变了。
<template>
<div>
<div class="address-container">
<label>当前地址</label>
<textarea ref="test" class="textarea-mine" v-model="currentValue"></textarea>
</div>
</div>
</template>
<script type="text/javascript">
export default {
data () {
return {
currentValue: ''
}
},
watch: {
currentValue (nv, ov) {
if (nv === ov) {
return
}
this.currentValue = nv
console.log('value changed')
this.changeHeight()
}
},
methods: {
changeHeight () {
let _this = this
this.$nextTick(() => {
var textArea = _this.$refs.test
var scrollHeight = textArea.scrollHeight // 控件所有的高度,包含滚动的那部分(不可见也会有高度)
var height = textArea.offsetHeight // 屏幕上显示的高度
if (height <= scrollHeight) {
textArea.style.height = 'auto' // 恢复默认值,这个作用就是根据内容自适应textarea高度
textArea.style.height = textArea.scrollHeight + 'px' // 拿到最新的高度改变textarea的高度
}
})
}
}
}
</script>
<style scoped>
.address-container {
position: relative;
display: flex;
align-items: center;
font-size: 15px;
}
.address-container label {
min-width: 4rem;
margin: 0px 5px;
}
.textarea-mine {
min-height: 20px;
padding: 5px;
width: 100%;
display: block;
flex: 1;
margin: 10px 5px;
font-size: 15px;
color: #0c0c0c;
outline: none;
border: none;
overflow-y: auto;
appearance: none;
text-align: inherit;
font-family: -apple-system-font, "Helvetica Neue", sans-serif, "Microsoft YaHei";
}
</style>
- 参考
scrollHeight: ENTIRE content & padding (visible or not)
Height of all content + paddings, despite of height of the element.
clientHeight: VISIBLE content & padding
Only visible height: content portion limited by explicitly defined height of the element.
offsetHeight: VISIBLE content & padding + border + scrollbar
Height occupied by the element on document.
本文来自博客园,作者:struggle_time,转载请注明原文链接:https://www.cnblogs.com/songliquan/p/12849507.html
分类:
Vue
标签:
Vue
, JavaScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?