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

下面是“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日

相关文章

  • jQuery的图片轮播插件PgwSlideshow使用详解

    让我来详细讲解一下“jQuery的图片轮播插件PgwSlideshow使用详解”。 什么是PgwSlideshow PgwSlideshow是一款基于 jQuery 的图片轮播插件。它可以用来展示图片,同时支持缩略图显示、分页功能等。在网页开发中使用 PgwSlideshow 可以让页面更加美观和动态。 如何使用PgwSlideshow 下载PgwSlide…

    css 2023年6月9日
    00
  • 使用css sprites来优化你的网站在Retina屏幕下显示实现原理与代码

    使用 CSS Sprites 是一种优化网页性能和加快图片加载速度的高效方法。针对 Retina 屏幕,可以使用多倍图来显示更加清晰的图片,但同时也会增加页面的加载时间,因此使用 CSS Sprites 可以解决这个问题。 CSS Sprites 基本原理 CSS Sprites(CSS 雪碧图)指的是将多个小图片合并成一个大的图片,并用 CSS 技术实现将…

    css 2023年6月10日
    00
  • CSS 中使用径向渐变实现卡券效果

    关于“CSS 中使用径向渐变实现卡券效果”的攻略,以下是完整的详细讲解和两条示例说明。 准备工作 在进行效果实现前,我们需要准备以下内容: 一个 HTML 文档 一个 CSS 文档 步骤一:背景设置 首先,我们可以在 CSS 文件中使用 radial-gradient 函数来设置背景颜色,以下是一个示例: background-image: radial-g…

    css 2023年6月10日
    00
  • CSS3实现炫酷的切片式图片轮播效果

    下面是“CSS3实现炫酷的切片式图片轮播效果”的完整攻略。 一、实现思路 利用CSS3的@keyframes创建动画关键帧。 使用transform属性实现图片翻转和平移。 利用position: absolute和z-index属性实现图片层叠和切片效果。 使用animation属性激活动画关键帧。 二、代码实现 以下是一个基础版的切片式图片轮播效果。 H…

    css 2023年6月9日
    00
  • 一步步教大家编写酷炫的导航栏js+css实现

    在这里我将为大家详细讲解如何一步步实现酷炫的导航栏。 准备工作 在开始编写之前,我们需要准备一些文件。首先,我们需要HTML文件,将我们的导航栏放在其中,并链接我们的CSS和JS文件。然后我们需要一个CSS文件,用于样式的定义。最后,我们需要一个JS文件,用于编写我们的交互逻辑。 HTML结构 让我们先来看一下我们的导航栏需要的HTML结构。我们需要一个HT…

    css 2023年6月10日
    00
  • 记一次拼多多Web前端面试(一面+二面+hr面)

    那我来详细讲解下“记一次拼多多Web前端面试(一面+二面+hr面)”的完整攻略: 一面 自我介绍 在面试开始的时候,第一件事情就是进行自我介绍。你需要简要地介绍自己的基本信息,比如姓名、就读学校、专业、实习经历等等。自我介绍的时候,需要注意不要太啰嗦,言简意赅地介绍一下自己即可。 项目介绍 在自我介绍之后,面试官通常会要求你介绍自己的项目经验。在这里,你需要…

    css 2023年6月10日
    00
  • css 中的background:transparent到底是什么意思有什么作用

    当我们在 CSS 中使用 background 属性时,其中一个可选值是 transparent。它实际上指定了一个透明的背景颜色,这意味着元素的背景将变得透明,背后的任何内容都将可见。 在 CSS 中,可能希望在某些情况下使用透明的背景。以下是 background:transparent 的一些常见用例: 1. 为文本设置透明背景 我们可以使用 back…

    css 2023年6月9日
    00
  • Bootstrap多级导航栏(级联导航)的实现代码

    一、 Bootstrap 多级导航栏简介 Bootstrap 是一款流行的前端框架,提供了丰富的常用 UI 组件。其中,多级导航栏是一个非常实用的组件,可以帮助用户快速地找到所需的信息。Bootstrap 的多级导航栏也被称为级联导航。 Bootstrap 的多级导航栏分为两种类型:下拉式菜单和嵌套菜单。 下拉式菜单是主菜单和子菜单以下拉列表的形式呈现,用户…

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