列表手动排序功能

在这里插入图片描述

<template>
    <transition-group class="sort-list" tag="ul">
        <li v-for="(item, index) in list" :key="item" class="sort-list-item">
            <span>{{ index + 1 + '、' + item }}</span>
            <div class="btn-icon">
                <a-icon
                    v-show="index !== list.length - 1"
                    class="pointer"
                    type="arrow-down"
                    title="下移"
                    @click="moveDown(index)"
                />
                <a-icon
                    v-show="index !== 0"
                    class="pointer"
                    type="arrow-up"
                    title="上移"
                    @click="moveUp(index)"
                />
            </div>
        </li>
    </transition-group>
</template>

<script>
export default {
    data() {
        return {
            list: [
                'Chinese',
                'Math',
                'Englist',
                'PE',
                'History',
                'Biology',
                'Chemistry',
                'Art',
                'Physics',
                'Computer',
            ],
        }
    },
    methods: {
        // 上移
        moveUp(index) {
            // 获取当前移动的项
            let tmp = this.list.splice(index, 1)
            // 将当前项添加到数组里面的上一项
            this.list.splice(index - 1, 0, tmp[0])
        },
        // 下移
        moveDown(index) {
            // 获取当前移动的项
            let tmp = this.list.splice(index, 1)
            // 将当前项添加到数组里面的下一项
            this.list.splice(index + 1, 0, tmp[0])
        },
    },
}
</script>

<style lang="less">
.sort-list {
    padding-left: 15px;
    padding-right: 15px;
    list-style: none;

    &-item {
        height: 30px;
        padding-right: 55px;
        line-height: 30px;
        transition: transform 0.5s;
        position: relative;
        border-bottom: 1px solid #ddd;
    }

    .btn-icon {
        position: absolute;
        right: 0;
        top: 0;
        z-index: 9;
        display: flex;
        justify-content: space-between;
        align-items: center;
        width: 40px;
        height: 30px;
        line-height: 30px;

        .pointer {
            cursor: pointer;
        }
    }
}
</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值