avalon js实现仿google plus图片多张拖动排序附源码下载

yizhihongxing

下面是“avalon js实现仿google plus图片多张拖动排序附源码下载”的完整攻略:

确定需求

首先要明确需求:实现一个类似于 Google Plus 那样的多张图片拖动排序功能,需要使用 AvalonJS,对应的 HTML 还要使用 Bootstrap。

搭建 HTML

首先,需要布局页面和引入依赖。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>avalonjs实现图片拖动排序功能</title>
    <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap-theme.min.css">
</head>
<body>
    <div class="container" ms-controller="picvm">
        <label for="imgs">添加图片</label>
        <input type="file" id="imgs" accept="image/*" multiple="[1]" ms-duplex="imgs" />
        <br><br>
        <div class="row">
            <div class="col-sm-3" ms-repeat-item="pics">
                <div class="thumbnail">
                    <img ms-attr="{src:item+'?imageView2/1/w/200/h/200/q/85'}" />
                    <input type="text" class="form-control" ms-duplex="pics[$index]" />
                    <button type="button" class="btn btn-danger btn-xs" ms-click="removepic($index)">删除</button>
                </div>
            </div>
        </div>
    </div>

    <script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
    <script src="//cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <script src="//cdn.bootcss.com/avalon.js/2.2.6/avalon.min.js"></script>
    <script src="/js/picsort.js"></script>
</body>
</html>

编写 JavaScript

然后开始写 PicSort 模块,并使用 avalon.bootstrap 中的 sortable 组件 实现拖拽排序功能。

<script>
    avalon.define({
        $id: "picvm",
        imgs: [],
        pics: [],
        picSort: function (array) {
            function del (index) {
                array.splice(index, 1);
            }
            return _.sortBy(array, function (pic) {
                return pic.order;
            });
        },
        removepic: function (index) {
            this.pics[index].deleted = true;
        }
    });

    require(['avalon', 'text!app/pic/pic.html'], function (avalon, tpl) {
        avalon.templateCache.pic = tpl;
        avalon.templateCache.picSort = '<ul class="list-group"><li class="list-group-item" ms-repeat="newOrder">{{item}}</li></ul>';
        avalon.component('ms-pic', {
            template: tpl,
            defaults: {
                img: "",
                name: "",
                deleted: false
            }
        });
        avalon.component('ms-pic-sort', {
            template: '<div ms-sortable="newOrder" ms-effect-allowed="move" ms-nest="true" ms-visible="false">' +
                '<content select=".list-group-item" ms-for-el="newOrder"></content>' +
                '</div>',
            defaults: {
                newOrder: []
            },
            onInit: function () {
                var oldOrder = [],
                    that = this;
                avalon.Array.each(this.$children, function (item) {
                    that.newOrder.push(item.name);
                    oldOrder.push(item.name);
                });
                this.$watch('newOrder', function () {
                    _.each(that.newOrder, function (e, i) {
                        if (e !== oldOrder[i]) {
                            var currentItem = _.find(that.$children, function (item) {
                                return item.name === e;
                            });
                            that.$children.splice(i, 0, currentItem);
                            oldOrder.splice(i, 0, currentItem.name);
                            that.$children.splice(that.$children.indexOf(currentItem), 1);
                            oldOrder.splice(oldOrder.indexOf(currentItem.name), 1);
                        }
                    });
                });
            }
        });
        avalon.scan();
    });
</script>

通过调用 avalon.component 方法定义两个组件:ms-pic 和 ms-pic-sort。这些组件用来加入图片,并提供图片的拖放排序。

下载源码

如果你想查看完整的可运行代码,可以参考我的 GitHub

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:avalon js实现仿google plus图片多张拖动排序附源码下载 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • 纯CSS实现鼠标移动切换图片示例

    下面是“纯CSS实现鼠标移动切换图片示例”的完整攻略。 步骤一:创建HTML结构 首先,我们需要在HTML文件中定义鼠标移动切换图片的容器和图片。其中,容器用一个div元素包裹,图片则使用img元素。示例中,我们将使用两张不同的图片来进行演示。 <div class="img-container"> <img src=&…

    css 2023年6月10日
    00
  • 如何去掉内联样式 通过style属性定义的(element.style)

    如何去掉使用style属性定义的内联样式是前端开发中一个常见需求。以下是完整的攻略: 1. 使用JavaScript 在JavaScript中可以通过使用element.style来获取到元素的内联样式。我们可以使用element.style.property = ”来清空某一属性的内联样式。 示例1:清空段落元素P的背景颜色样式: let p = doc…

    css 2023年6月9日
    00
  • 利用CSS3的定位页面元素

    利用 CSS3 定位页面元素基本包含以下几个主题,我逐一讲解并提供两个示例。 1. 了解 CSS3 定位的基本概念 CSS3 定位是指利用 CSS3 的技术,对页面元素进行定位,让它们呈现出预期的位置、大小和形态。CSS3 定位技术主要有以下几种: 相对定位:元素相对于其本身的位置进行定位。 绝对定位:元素相对于其最近的非静态定位祖先元素进行定位。 固定定位…

    css 2023年6月9日
    00
  • JavaScript解析JSON

    JavaScript解析JSON的步骤: 将JSON字符串转换为对象 通过对象属性访问JSON数据 组合JSON数据 以下是JavaScript解析JSON的完整攻略: 1. 将JSON字符串转换为对象 JavaScript中有一个JSON对象,它有两个方法:JSON.parse() 和 JSON.stringify()。其中,JSON.parse()用于将…

    Web开发基础 2023年3月30日
    00
  • 关于.prettierrc代码格式化配置方式

    Prettier 是一款代码格式化工具,可以快速地帮助程序员完成代码格式化的需求,让代码整洁可读。在使用 Prettier 的过程中,我们可以通过配置 .prettierrc 来自定义代码格式化规则。 下面,我将详细讲解关于 .prettierrc 配置的完整攻略。 创建 .prettierrc 文件 首先,我们需要在项目根目录下创建一个 .prettier…

    css 2023年6月10日
    00
  • css样式实现整个页面背景使用一张图片

    当我们需要让整个页面的背景使用一张图片时,可以通过CSS样式来实现,具体步骤如下: 创建一个包含背景图片的CSS样式 将下面的代码复制到样式表中,将”background-image”属性的值改为你想要使用的图片路径。 body { background-image: url(‘path/to/background-image.jpg’); backgrou…

    css 2023年6月9日
    00
  • CSS实现表格首行首列固定和自适应窗口的实例代码

    下面我将详细讲解如何使用CSS实现表格首行首列固定和自适应窗口,并提供两个示例说明。 实现表格首行首列固定 要实现表格的首行和首列固定,可以使用 position 和 z-index 属性来实现。 首先,通过 CSS 将表格的第一行和第一列单独设置样式,例如: table tr:first-child { position: relative; } tabl…

    css 2023年6月10日
    00
  • jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】

    以下是实现点击图片放大缩小预览功能的完整攻略: 步骤一:下载jQuery库文件 首先需要在网站上引入jQuery库文件,可以在官网(https://jquery.com/)进行下载。将下载好的jQuery文件放在项目的js目录下。 步骤二:编写HTML页面 紧接着,可以在HTML页面中编写图片预览模块的HTML代码。以下是一个简单的示例: <div c…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部