拖拽翻页(ThrowPage)详解 cool(3)
作者:蓝色理想 来源:蓝色理想 发布时间:2009-12-02 09:54:00
行为层
先简单说一下拖动是怎么实现的
其中,A 是绝对定位的,并且有一个 left 值 a,当鼠标在上面按下(onmousedown)时,记录下 b 值,相减算出 c 值
var c;
*.onmousedown=function(e){
if(!e){e=e||window.event;}
ex=e.pageX?e.pageX:e.x;
c=ex-*.offsetLeft;
}
鼠标按住并且移动时,A 应该随鼠标横向移动,不断产生 d 值,不断设定 A 的 left 值为 d-c,就实现了横向移动,纵向同理。
*.onmousemove=function(e){
if(!e){e=e||window.event;}
ex=e.pageX?e.pageX:e.x;
*.style.left=ex-c;
}
转到 ThrowPage,其实效果的前半段就是标准的横向拖动
前面为 <div class="page"> 定义了一个 left 值,如果想居中的话,这个值应为
(<div id="menu">宽-<div class="page">宽)/2
沿用上面的例子,用到的几个坐标如下图
BD 为 <div class="page"> 的初始位置
AB 为动画中最左状态位置,DE 为最右位置
当然,OF 可以小于 3 倍 BD,A 将小于 0,E 将大于 F
注:如果你是用
.page{
position:absolute;
width:x px;
left:50%;
margin-left:-(x/2)px;
}
实现居中的,涉及的 m-l 值请自行计算
松开鼠标后,停止移动,开始动画,页面左边线(即图中 B,下简称“左边”)可能有以下几种情况:
左边在 A 及 A 的左边-------页面跳到 AB 位置
左边在 AB 中间-------页面移动到 AB 位置
左边在 B-------不进行动画(变态,拽了半天又放回去)
左边在 BD 中间-------页面移动到 DE 位置
左边在 D 及 D 的右边-------页面跳到 DE 位置
题外话:由此可见,移动的距离并不确定,用 JQ 的 animate 的话,时间一定,速度就不一样了,很挠墙。所以我的方法是:向目标位置移动 10 像素(几像素都可以,自己定,其实这就是移动速度),如果没有到目标位置,再移动 10 像素,可以到或者超过的话,直接跳到目标位置(很像递归,但确切的说不是)
向中间回移也是同样道理,故略
z-index 层叠顺序问题:
当最上面的层被拖拽的时候,他下面的一层会被显示,正如上图所示,被拖拽的层 z-index 值为 2,下面显示的一层 z-index 值为 1,再下面的被覆盖的层 z-index 值统统为 0
被拖拽层移动到坐标中 AB 或 DE 后,降一下 z-index 值,飞回的时候就跑到后面去了,同理,“左拖前翻,右拖后翻”的实现关键,是计算好哪一层的 z-index 值应该是 1


猜你喜欢
- 一、BeautifulSoup4 基础知识补充BeautifulSoup4 是一款 python 解析库,主要用于解析 HTML
- 这里介绍使用python-Django框架来实现web端分页呈现数据,主要说明对应的views,urls,templates三个文件的编程逻
- 最近在做一个领券功能的时候,发现在一定并发下会出现重复领券的问题。使用度娘一顿搜索操作之后,发现可以使用分布式锁来解决这个问题。什么是分布式
- create 语句后面的TYPE=MyISAMTYPE=MyISAM 和 ENGINE=MyISAM 都是设置数据库存储引擎的语句 ,(老版
- 前言学会向程序中添加必要的注释,也是很重要的。注释不仅可以用来解释程序某些部分的作用和功能(用自然语言描述代码的功能),在必要时,还可以将代
- openpyxl模块是一个读写Excel 文档的Python库,openpyxl是一个比较综合的工具,能够同时读取和修改Excel文档。op
- 一、XGBoostXGBoost并不是一种模型,而是一个可供用户轻松解决分类、回归或排序问题的软件包。1 XGBoost的优点简单易用。相对
- 本文实例为大家分享了python绘制箱型图的具体代码,供大家参考,具体内容如下import numpy as npimport pandas
- 双休日常常意味着很多休息时间。与其懒洋洋地坐在那里玩游戏,为何不学点新知识武装自己?本文中不会特定推荐哪种编程语言,但是会提供基于GitHu
- 我就废话不多说了,大家还是直接看代码吧~func main() { fmt.Println(exponent (5,3))}//a的n次方/
- 前言人类频繁的用手操作鼠标和键盘,为了解决这个问题,selenium工具为我们提供了一个类来处理这些事件— Action
- 绘制组合图:组合图就是将多个形状,组合到⼀个图形中,主要作⽤是节约作图的空间,节省读者的时间,从⽽提⾼信息传达的效率。import pand
- 一个不错的绿色下划线的简洁CSS导航代码,纯css不用图片,效果图如下:<html> <head> <meta
- 函数画图以 z = x 2 + y 2 为例#导入模块import numpy as npimport matplotlib.py
- 正在看的ORACLE教程是:ORACLE常见错误代码的分析与解决(三)。  
- 这是一个系列文章,主要分享python的使用建议和技巧,每次分享3点,希望你能有所收获。1 如何创建指定长度且有特定值的list不推荐方式l
- 本文实例讲述了Python通过调用mysql存储过程实现更新数据功能。分享给大家供大家参考,具体如下:一、需求分析由于管理费率配置错误,生成
- 最近关心电子商务比较多,阿里系产品目前还是业内标杆,值得学习的对象。前几天Jack Ma对支付宝用户体验的严厉批评,成为业内交流热点,据说原
- 题目[1]:格式输出练习。在交互式状态下完成以下练习。运行结果截图:题目[2]:格式输出练习。在.py的文件中完成以下练习代码:num =
- 在JS中要判断一个值是否在数组中并没有函数直接使用,如PHP中就有in_array()这个函数。但我们可以写一个类似in_array()函数