vue2中或者js,页面中默认有一个标题,在标题后面通过绝对定位有一个加号图标,点击加号新增一个标题,加号的定位left值需要定位到最后一个标题的后面,当删除一个标题也是如此,详细代码怎么写
时间: 2024-02-06 12:12:17 浏览: 137
vue使用高德地图根据坐标定位点的实现代码
在Vue2中实现这个功能,可以通过以下步骤实现:
1. 在模板中定义一个标题列表和一个新增按钮:
```
<template>
<div>
<h2 v-for="(title, index) in titles" :key="index">{{ title }}</h2>
<span class="add-btn" ref="addBtn" @click="addTitle">+</span>
</div>
</template>
```
2. 在style中定义新增按钮的样式和位置:
```
<style>
.add-btn {
position: absolute;
top: 0;
right: 0;
margin: 10px;
font-size: 20px;
cursor: pointer;
}
</style>
```
3. 在Vue组件的data中定义标题列表和新增按钮的位置:
```
export default {
data() {
return {
titles: ['标题1', '标题2', '标题3'],
addBtnLeft: 0,
};
},
mounted() {
// 在页面加载完成后,获取新增按钮的位置并保存到data中
this.addBtnLeft = this.$refs.addBtn.offsetLeft;
},
methods: {
addTitle() {
// 在点击新增按钮时,向标题列表中添加一个新的标题
this.titles.push('新标题');
// 更新新增按钮的位置,使其定位到最后一个标题的后面
this.addBtnLeft = this.$refs.addBtn.offsetLeft;
},
removeTitle(index) {
// 在删除一个标题时,从标题列表中移除该标题
this.titles.splice(index, 1);
// 更新新增按钮的位置,使其定位到最后一个标题的后面
this.addBtnLeft = this.$refs.addBtn.offsetLeft;
},
},
};
```
4. 在模板中使用计算属性来动态更新新增按钮的位置:
```
<template>
<div>
<h2 v-for="(title, index) in titles" :key="index">{{ title }}</h2>
<span class="add-btn" ref="addBtn" :style="{ left: addBtnLeft + 'px' }" @click="addTitle">+</span>
</div>
</template>
<script>
export default {
data() {
return {
titles: ['标题1', '标题2', '标题3'],
addBtnLeft: 0,
};
},
mounted() {
// 在页面加载完成后,获取新增按钮的位置并保存到data中
this.addBtnLeft = this.$refs.addBtn.offsetLeft;
},
computed: {
lastTitleLeft() {
// 计算最后一个标题的位置
const lastTitle = this.$el.querySelector('h2:last-child');
return lastTitle ? lastTitle.offsetLeft + lastTitle.offsetWidth : 0;
},
},
methods: {
addTitle() {
// 在点击新增按钮时,向标题列表中添加一个新的标题
this.titles.push('新标题');
// 更新新增按钮的位置,使其定位到最后一个标题的后面
this.addBtnLeft = this.lastTitleLeft;
},
removeTitle(index) {
// 在删除一个标题时,从标题列表中移除该标题
this.titles.splice(index, 1);
// 更新新增按钮的位置,使其定位到最后一个标题的后面
this.addBtnLeft = this.lastTitleLeft;
},
},
};
</script>
<style>
.add-btn {
position: absolute;
top: 0;
margin: 10px;
font-size: 20px;
cursor: pointer;
}
</style>
```
以上就是一个简单的实现方式,可以根据实际需求进行调整。
阅读全文