使用Jquery.js框架和CSS3实现3D相册的制作
有关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的时候停止惯性,从而达到一个转动后惯性的效果。具体代码实现如下:

其中核心实现代码都已经列出,如有不当之处还望提出宝贵意见。
使用Jquery.js框架和CSS3实现3D相册的制作的更多相关文章
- Jquery js框架使用
jquery 众所周知 ,强大的 js框架 自己使用的一些笔记 //1.json格式定义方法 var product_obj={ check_init:function(){ ...
- css3+jquery+js做的翻翻乐小游戏
主要是为了练习一下css3的3D翻转功能,就做了这么个小游戏,做的比较粗糙,但是效果看的见. 主要用到的css3代码如下: html结构: <div class="container& ...
- js和CSS3炫酷3D相册展示
<!doctype html> <html> <head> <meta charset="UTF"> <title>js ...
- JS框架_(Popup.js)3D对话框窗口插件
百度云盘 传送门 密码:afdo 3D对话框窗口插件效果: <!doctype html> <html lang="zh"> <head> &l ...
- js框架封装,模拟jQuery封装
模拟jQuery框架,利用原生的js技术,封装一个js框架,以加深对jQuery的常用api的使用和面向对象原理的理解:一:结构部分首先利用闭包,构造一个自执行函数,然后利用选择器函数Sizzle,获 ...
- 媲美jQuery的JS框架——AngularJS(一)
前言 相信原生JS大家都不陌生,至于为什么说原生,是因为在JS的基础上衍生出了很多的框架.有些框架的使用非常广泛,甚至已经达到了媲美原生的地步.在之前的文章中给大家介绍了jQuery这一介绍框架.今天 ...
- jQuery与别的js框架冲突
jQuery.noConflict()运行这个函数将变量$的控制权让渡给第一个实现它的那个库. 这有助于确保jQuery不会与其他库的$对象发生冲突. <script type="te ...
- HBuilder支持jquery、zepto、angular、ext、dojo 等js框架的提示吗
HBuilder有通行的js扫描分析提示,大部分js库都可以方便的提示.但js是一门超级灵活的语言,通行分析有时分析的不够完美,如果对框架做单独优化配置,可以有更好的提示.DCloud官方对jquer ...
- 基于CSS3和jQuery实现的3D相册
天我们再来看一款HTML5 3D相册浏览应用,图片可以手动播放,也可以自动播放,效果非常震撼,赶紧把这款HTML5 3D相册分享给你的朋友吧. 在线预览 源码下载 实现的代码: <div c ...
随机推荐
- Crossin-8-1;8-2课程记录
打开文件: open,注意打开文件的路径 读取结束需使用close读取文件: read readlines readline for in 重置光标位置: se ...
- Weave Scope 容器地图 - 每天5分钟玩转 Docker 容器技术(80)
Weave Scope 的最大特点是会自动生成一张 Docker 容器地图,让我们能够直观地理解.监控和控制容器.千言万语不及一张图,先感受一下. 下面开始实践 Weave Scope. 安装 执行如 ...
- SQL SERVER 根据地图经纬度计算距离函数
前些天客户提出一个这样的要求:一个手机订餐网,查询当前所在位置的5公里范围的酒店,然后客户好去吃饭. 拿到这个请求后,不知道如何下手,静静地想了一下,在酒店的表中增加两个字段,用来存储酒店所在的经度和 ...
- 更新——Canvas画布动画效果之实现倒计时
Hello,大家好! 小W复活啦!继续欢乐的给大家更博,输送新知识~~ 不开玩笑啦!秒进正题~~~ 上次更博,小W给大家介绍了Canvas画布的基础部分,以及实现了一个由7*10点阵图显示的倒计时的基 ...
- cmd启动,重启,停止IIS命令
直接使用CMD我们可以操作很多事情,比如启动IIS,重启IIS,停止IIS 重启IIS服务器,开始->运行->cmd (以下列出相关操作命令): iisreset /RESTART 停止后 ...
- Mybatis的parameterType传入多个参数
如果查询的条件有多个的时候,mybatis有三种传入方式: 1.通过注解传入 例如: public interface Mapper(){ public User login(@Param(" ...
- win10 uwp 进度条 WaveProgressControl
昨天看到了有个大神做出好看的进度条样式,于是我就去抄袭他的代码,但是发现看不懂,于是本文主要翻译就是大神说这个控件如何做. 本文翻译 https://stackoverflow.com/a/46057 ...
- 在 Arch 下编译 OpenWRT cmcurl 问题与解决方案
0 现象 在 Arch 下编译 OpenWRT (15.05) cmcurl 时报错: [ 28%] Linking C executable LIBCURL lib/libcmcurl.a(open ...
- gevent的同步与异步
from gevent import spawn,joinall,monkey;monkey.patch_all() import time def task(pid): time.sleep(0.5 ...
- 树莓派.安装Samba环境
适用于树莓派3 树莓派装好系统后, 为了方便传文件到树莓派, 建议使用Samba这类文件夹级别的应用, 比ftp方便多了 如果你想把树莓派变成Nas, Samba也是不可或缺的应用 通过samba服务 ...