一.成绩分类

效果图:

功能思路分析:

1. 渲染数据

2. 鼠标按下开启拖拽

\1. 给成绩盒子绑定鼠标按下事件(mousedown),用事件委托做多个标签的拖拽

\2. 开启控制拖拽的变量

\3. 获取鼠标到元素的距离(e.offsetX)

\4. 获取事件源

\5. 克隆一个副本,设置定位,放到成绩盒子中

3. 鼠标移动-副本跟随

\1. 当开关变量为真时移动盒子

\2. 克隆盒子位置 = 鼠标到页面的距离 - 鼠标到元素的距离

4. 鼠标松开-边界判断

\1. 判断克隆元素是否存在,不存在则直接return

img

\2. 使用**getBoundingClientRect()**方法,获取成才盒子和不成才盒子的上下左右边界值

\3. 判断两个成绩是否都大于90,是则进行成才盒子边界判断。当鼠标进入指定区域则:**将事件源添加到成才盒子,删除克隆副本;**当鼠标没有进入范围则:删除克隆副本

\4. 未成才盒子判断同理

#二.放大镜

效果图:

功能思路分析:

1. 鼠标滑入小盒子=> 显示遮罩和大盒子

2. 鼠标移动 => 遮罩移动 大图移动

3. 鼠标离开 => 隐藏遮罩 隐藏大盒子

#三.今日小结

\1. 拖拽固定三步: 鼠标按下mousedown 鼠标移动mousemove 鼠标抬起mouseup

\2. 获取元素尺寸定位信息: 元素.getBoundingClientRect()

\3. 克隆元素: cloneNode(true)

\4. 节点添加删除: appendChild() removeChild()

#四.作业 -- 垃圾分类

效果图:

垃圾分类作业要求:

\1. 将垃圾拖拽到垃圾桶内

\2. 进入到垃圾桶后判断是否分类正确:错误提示“分类错误,罚款50”,正确“优秀公民,棒棒嗒”。( 根据图片的title标签提示内容判断 )

注意:移动图片时有默认形为,需要取消掉(e.preventDefault())

js下 Day11、案例的更多相关文章

  1. 原生JS下拉加载插件分享。

    无聊写了一个JS下拉加载插件,有需要的可以下载. // 使用 // new ManDownLoad("#ul","json/load.json",functio ...

  2. js下拉框

    Js下拉框   http://sc.chinaz.com/tag_jiaoben/XiaLaKuang.html

  3. chart.js图表库案例赏析,饼图添加文字

    chart.js图表库案例赏析,饼图添加文字 Chart.js 是一个令人印象深刻的 JavaScript 图表库,建立在 HTML5 Canvas 基础上.目前,它支持6种图表类型(折线图,条形图, ...

  4. CSS+JS下拉菜单和纯CSS下拉菜单

    下拉菜单 (思路:先把二级定位到屏幕外,鼠标悬停重新定位回来:另一个就是ul浮动,li也浮动) 下拉菜单的一般思路就是把子导航嵌套在无序列表中,把列表定位到屏幕之外,当鼠标悬停在其父列表项上时,重新定 ...

  5. 小议 js 下字符串比较大小

    原文:小议 js 下字符串比较大小 之前群里有人问如何比较两个时间大小,他的时间格式是 2014-08-08 而不是 2014-8-8.所以我给的方法是 直接比较,如: var a = "2 ...

  6. node.js 下依赖Express 实现post 4种方式提交参数

    上面这个图好有意思啊,哈哈, v8威武啊.... 在2014年的最后一天和大家分享关于node.js 如何提交4种格式的post数据. 上上一篇说到了关于http协议里定义的4种常见数据的post方法 ...

  7. npm 是node.js下带的一个包管理工具

    npm 是node.js下带的一个包管理工具          npm install -g webpack webpack是一个打包工具 gulp是一个基于流的构建工具,相对其他构件工具来说,更简洁 ...

  8. js调用ajax案例

    js调用ajax案例 测试地址:http://www.w3school.com.cn/tiy/t.asp?f=ajax_get 嵌入下面代码,点击提交,再点击请求数据.就可以看到结果了. <ht ...

  9. cookie.js插件的案例

    cookie.js插件的案例: https://github.com/jaywcjlove/cookie.js/blob/master/README.md    文档  api   在这里即可查看用法 ...

随机推荐

  1. NO.A.0006——Git在IntelliJ IDEA中的使用/创建项目并推送到GitHub仓库/分支管理及分支合并

    一.在IntelliJ IDEA中使用Git: 1.在IDEA下创建项目并编写一个main方法的工程: 在IDEA下新建一个Project IDEA-->新建一个Project-->Fil ...

  2. linux 用户组操作

    1. 添加用户到...目录中useradd -M -s /目录 username 2. 添加用户属于多个组 usermod -G 本组(用户名),组1,组2... 用户名 3. mysql添加禁止登录 ...

  3. Go语言实现excel导入无限级菜单结构

    目录 需求 实现 测试 简单例子 复杂例子 需求 最近有一个需求,要实现一个无限级结构的树型菜单,差不多长下面这个样子 我们知道无限级实现思路都是用一个parent_id将各种层级串联起来,顶级的pa ...

  4. Guitar Pro的10个非常实用的技巧(下)

    Guitar Pro 7具有许多功能和编辑选项,只需点击几下即可随时创建与编辑我们的乐谱,.以下就为大家介绍10个Guitar Pro中实用的技巧,可以大大的节省我们的时间. 上次在<Guita ...

  5. C语言讲义——C语言的布尔类型

    C89标准中没有定义布尔类型: C99中增加了_Bool类型.实际上是只能等于0或1的整数类型,凡是不为0的整数都被转变为1, C99还提供了一个头文件<stdbool.h>,该头文件提供 ...

  6. Pyetst的四种setup和testdown

    1 1.setup_module和 teardown_module #在整个测试用例所在的文件中所有的方法运行前和运行后运行,只会运行一次 2.setup_class和 teardown_class ...

  7. pixi.js持续渲染页面

    Pixi是一个超快的2D渲染引擎,通过Javascript和Html技术创建动画或管理交互式图像,从而制作游戏或应用. 项目地址:https://github.com/pixijs/pixi.js A ...

  8. volatile禁止重排使用场景与单例模式的Double Check Lock

    普通单例模式Demo public class Demo{ private static Demo INSTANCE; private Demo(){} public static Demo getI ...

  9. day2(APlview+Serializers使用)

    1.APIview使用 ModelVIewSet 是对 APIView 封装  ModelSerializer是对Serializeer 1.1 在user/urls.py中添加路由 urlpatte ...

  10. 2017 Mid Central Regional G. Faulty Robot(dfs + 尬模)

    这道题看上去太像tarjan缩点了,我一上去本来想把所有的环给缩掉然后统计答案,后来发现哦,这道题不是这么回事儿. 给出黑边红边,一次性走至多只能走一次黑边,问有多少个点可以走到,并且让机器人停下来, ...