首页 技术 正文
技术 2022年11月7日
0 收藏 560 点赞 606 浏览 1135 个字

有关3D相册的制作主要包括以下几个知识点:

1、有关图片的位置摆放,也就是一个相对定位绝对定位的使用;

2、有关CSS3中transform属性的使用(transform-style: preserve-3d);

3、jquery.js中对鼠标事件的一些处理和鼠标位置的获取。

下面详细介绍有关3D相册的一个简易实现过程:

一、首先我们定义好一个盒子div,在这个里面用来存放我们图材,一开始是处于重合状态如下:

后面将相应的照片进行一个位置的摆放,也就是说转换成3d的状态给人空间的感觉,这里主要是使用transform-style: preserve-3d样式属性来实现的。

二、其中中间的红框是一开始的基准,作为一个参考,在这个模块我们对每张图片都是使用transform:rotateY(360/n deg),但是我们总不可能对每张图片都加一个style样式,这样代码就显得很没有张力,要是出现100张图片的话我们复制工作了是不是有点大?所以这个地方我们用到了jquery.js这个框架,具体实现如下定义一个i变量让其与度数存在一个转换,从而使得代码实现更具兼容性。

在这个里面讲到了一个jquery.js的方法链的使用,为啥这么用大家可以自己百度下(之前面试遇到过这个问题),后面attr是去除鼠标拖拽图片拉出的效果也是为了方便实现旋转功能。

三、当你发现所有的布局都OK得时候我们就要去想3D显示Ok了怎么实现鼠标拖拽后仍有3d的效果?

这个时候我们就要对鼠标进行一个默认绑定事件的解除,众所周知,当按住鼠标左键时候去选择图片或文字时候都会有复制的效果,在这个3D实现的时候我们应该去除这个绑定,是故我们可以通过在<html onselectstart=”return false”>加这么一句话,还有就是一个图片拖拽的效果去除,如二中讲到的代码.attr内容里所写。

在这两个效果去除之后我们就开始在JS这个模块中写鼠标的三个功能事件:鼠标点击(mousedown)、鼠标移动(mousemove)、鼠标抬起(mouseup).

在鼠标点击和移动事件中增加视图角度的改变,是故需要定义相关鼠标开始位置和结束位置坐标(x,y)(x_,y_);具体的值是通过内部ev参数获取的,然后通过首尾位置的变化快慢决定3D相册旋转快慢具体代码实现如下:

四、在实现这些功能之后我们可以自己加一个惯性效果进去,其中的实现原理和拽动一样,也是通过对应位置改变量的值来体现的,在xy改变量上分别乘以一个0.95的系数(因为一个数乘与它最后会趋向0),定义一个play事件,当改变率小于0.5的时候停止惯性,从而达到一个转动后惯性的效果。具体代码实现如下:

其中核心实现代码都已经列出,如有不当之处还望提出宝贵意见

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,487
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,903
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,736
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,486
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,126
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,287