vue实现点击换行
Vue 实现点击换行的方法
在 Vue 中实现点击换行功能,可以通过监听点击事件并动态修改文本内容来实现。以下是几种常见的实现方式:
使用 v-model 和 @click 绑定
通过 v-model 绑定输入框或文本域的值,并在点击事件中手动添加换行符 \n。
<template>
<div>
<textarea v-model="text" @click="addNewLine"></textarea>
<p>{{ text }}</p>
</div>
</template>
<script>
export default {
data() {
return {
text: ''
}
},
methods: {
addNewLine() {
this.text += '\n'
}
}
}
</script>
使用 contenteditable 属性
通过 contenteditable 属性使元素可编辑,并在点击时插入换行符。
<template>
<div>
<div
contenteditable="true"
@click="insertNewLine"
v-html="content"
></div>
</div>
</template>
<script>
export default {
data() {
return {
content: '点击添加换行'
}
},
methods: {
insertNewLine() {
this.content += '<br>'
}
}
}
</script>
动态渲染换行符
如果需要将换行符渲染为 HTML 的 <br> 标签,可以使用 v-html 或过滤器。
<template>
<div>
<textarea v-model="text" @click="addNewLine"></textarea>
<div v-html="textWithBreaks"></div>
</div>
</template>
<script>
export default {
data() {
return {
text: ''
}
},
computed: {
textWithBreaks() {
return this.text.replace(/\n/g, '<br>')
}
},
methods: {
addNewLine() {
this.text += '\n'
}
}
}
</script>
使用 pre 标签保留换行符
pre 标签会保留文本中的换行符和空格,适合显示多行文本。

<template>
<div>
<textarea v-model="text" @click="addNewLine"></textarea>
<pre>{{ text }}</pre>
</div>
</template>
<script>
export default {
data() {
return {
text: ''
}
},
methods: {
addNewLine() {
this.text += '\n'
}
}
}
</script>
注意事项
- 如果使用
v-html,需注意防范 XSS 攻击,避免直接渲染用户输入的内容。 - 换行符在 HTML 中通常显示为空格,需通过
white-space: pre-line或<br>标签实现换行效果。






