zoukankan      html  css  js  c++  java
  • 使用拖放排序插件Sortable.js

    ortable 是一个JavaScript库,用于在现代浏览器和触摸设备上重新排序拖放列表。不需要jQuery。支持 Meteor, AngularJS, React, Polymer, Vue, Knockout 和任何CSS库, 例如 Bootstrap.

    中文文档:http://www.sortablejs.com/

    安装方式:npm安装、bower安装、script引入都可,本文采用script方式引入

    线上demo:https://my.weblf.cn/alone_page/pages/sorttablejs.html

    代码:

    <!DOCTYPE html>
    <html lang="en">
     
    <head>
        <meta charset="utf-8">
        <meta name="viewport"
            content="width=device-width,initial-scale=1.0,maximum-scale=1,user-scalable=no,target-densitydpi=400">
        <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
        <meta http-equiv="Pragma" content="no-cache" />
        <meta http-equiv="Expires" content="0" />
        <title>拖放排序插件Sortable.js</title>
        <link rel="stylesheet" href="../statics/css/reset.css" id='reset'>
        <script type="text/javascript" src="../statics/js/public.js?ver=2" id='public'></script>
        <script type="text/javascript" src="../statics/js/vue2.6.11.js"></script>
        <script type="text/javascript" src="../statics/js/Sortable.min.js"></script>
     
    </head>
     
    <body>
        <div id="app" v-cloak :style="{'padding-top':isWeiXin?'0rem':'3rem'}">
            <!-- 头部 -->
            <div class="now_page_head" ref="now_page_head" v-if="!isWeiXin">
                拖放排序插件Sortable.js
                <img src="../statics/images/back.png" class="back" />
            </div>
            <!-- 页面的主要内容 -->
            <section class="content">
                <div class="list" ref="list">
                    <div class="oli" v-for="(item,index) in items" :key=index>
                        <p class="name">{{item.nm}}</p>
                    </div>
                </div>
                <div class="otitle">当前排序:</div>
                <span class="oli" v-for="(item,index) in items" :key=index>
                    {{item.nm}}、
                </span>
            </section>
     
            <!-- 页面结束 -->
        </div>
    </body>
     
    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                showSpinner: false,
                isWeiXin: window.TS_WEB.isWeiXin,
                items: [{
                    id: 1,
                    nm: '日元0'
                }, {
                    id: 2,
                    nm: '日元1'
                }, {
                    id: 3,
                    nm: '日元2'
                }, {
                    id: 4,
                    nm: '日元3'
                }]
            },
            components: {},
            computed: {},
            methods: {
     
            },
            created() {
     
            },
            mounted() {
                var _this = this;
                var $ul = this.$refs.list
                new Sortable($ul, {
                    onUpdate: function (event) {
                        //修改items数据顺序
                        var newIndex = event.newIndex,
                            oldIndex = event.oldIndex,
                            $li = $ul.children[newIndex],
                            $oldLi = $ul.children[oldIndex];
                        // 先删除移动的节点
                        $ul.removeChild($li)
                        // 再插入移动的节点到原有节点,还原了移动的操作
                        if (newIndex > oldIndex) {
                            $ul.insertBefore($li, $oldLi)
                        } else {
                            $ul.insertBefore($li, $oldLi.nextSibling)
                        }
                        // 更新items数组
                        var item = _this.items.splice(oldIndex, 1)
                        _this.items.splice(newIndex, 0, item[0])
                        // 下一个tick就会走patch更新
                    },
                    animation: 150,
                })
            },
        })
    </script>
    <style>
        .now_page_head {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 3rem;
            text-align: center;
            font-size: 1.27rem;
            line-height: 3rem;
            z-index: 11;
            transition: all 0.5s ease;
            background: #fff;
        }
     
        .back {
            height: 1rem;
            position: absolute;
            left: 1rem;
            top: 1rem;
        }
     
        .seting {
            height: 1.2rem;
            position: absolute;
            right: 1rem;
            top: 0.9rem;
        }
     
        .share {
            position: absolute;
            right: 1rem;
            top: 0rem;
            line-height: 3rem;
            font-size: 1rem;
        }
     
        .list .oli {
            padding: 15px 0;
            border: 1px solid #ccc;
        }
     
        .otitle {
            margin-top: 20px;
            font-weight: bold;
        }
    </style>
     
    </html>

    结果:

  • 相关阅读:
    快速排序(java实现)
    java8 stream一些知识
    Lombok安装、简单使用、入门
    explain mysql 结果分析
    MySQL调优三部曲(二)EXPLAIN
    MySQL调优三部曲(一)慢查询
    排查问题
    Dynamics 365 获取值 设置值
    MySql CP 表 和 数据
    Dynamics 365单项选项集&多项选项集
  • 原文地址:https://www.cnblogs.com/linfblog/p/12632305.html
Copyright © 2011-2022 走看看