我想复制Vue.js Textarea组件的autosize library。我发现我无法获得以下几个属性的值:boxSizing,paddingTop,paddingBottom,borderTopWidth,borderBottomWidth to calculate heightOffset
const style = window.getComputedStyle(this.$refs.textarea, null);
if (style.boxSizing === 'content-box') {
heightOffset = -(parseFloat(style.paddingTop + parseFloat(style.paddingBottom));
} else {
heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
}
模板:
<textarea
class="answer"
ref="textarea"
v-bind:placeholder="placeholder"
v-on:keydown="setHeight"
v-bind:style="{ height: areaHeight + 'px' }"
>
</textarea>
在组件中:
data: function () {
return {
placeholder: "Your answer",
areaHeight: 24
}
},
methods: {
setHeight: function(e) {
var ta = this.$refs.textarea;
console.log("ta.paddingTop: " + ta.paddingTop); //undefined
console.log("ta.style.paddingTop: " + ta.style.paddingTop); //""
console.log("ta.paddingBottom: " + ta.paddingBottom); //undefined
console.log("ta.style.paddingBottom: " + ta.style.paddingBottom); //""
console.log("ta.borderTopWidth: " + ta.borderTopWidth); //undefined
console.log("ta.style.borderTopWidth: " + ta.style.borderTopWidth); //""
console.log("ta.borderBottomWidth: " + ta.borderBottomWidth); //undefined
console.log("ta.style.borderBottomWidth: " + ta.style.borderBottomWidth); //""
this.areaHeight = this.$refs.textarea.scrollHeight;
if (e.keyCode === 13) {
this.areaHeight += 24;
}
if (e.keyCode === 8) {
this.areaHeight -= 24;
if(this.areaHeight <= 0) this.areaHeight = 24;
}
}
https://stackoverflow.com/questions/50724053
复制相似问题