基于javascript html5实现3D翻书特效

这是一款十分炫酷的HTML5 3D书本翻页动画,效果相对比较简单,拖拽鼠标模拟用手翻页,更漂亮的是翻页过程中,呈现出逼真的3D立体效果。书本中的文字图片也会3D展示,非常酷。

在线演示 源码下载

HTML代码

Lorem ipsum dolor sit amet,consectetur adipiscing elit. Nam fermentum nisl quis nulla eleifend dignissim. Curabitur varius lobortis tincidunt. Maecenas gravida,nulla quis luctus imperdiet,ipsum nibh consectetur ante,in sodales massa tortor eget neque. Donec porta ligula massa,id sagittis est. Ut nisl tellus,faucibus nec feugiat ut,laoreet iaculis felis. Suspendisse ultrices mauris vel tellus suscipit commodo. Integer vitae tortor erat. Pellentesque non tempor nisi.

CSS代码

}
.shadow {
background: url(shadow.png) no-repeat;
}

JavaScript代码

var prefixes = ['Webkit','Moz','ms','O',''],book = document.querySelectorAll('.book')[0],page = document.querySelectorAll('.front-cover')[0],dino = document.querySelectorAll('.dino')[0],shadow = document.querySelectorAll('.shadow')[0],hold = false,centerPoint = window.innerWidth / 2,pageSize = 300,clamp = function (val,min,max) {
return Math.max(min,Math.min(val,max));
};

page.onmousedown = function () {
hold = true;
};

window.onmouseup = function () {
if (hold) {
hold = false;
}
};

window.onresize = function () {
centerPoint = window.innerWidth / 2;
};

window.onmousemove = function (evt) {
if (!hold) {
return;
}

var angle = clamp((centerPoint - evt.pageX + pageSize) / pageSize * -90,-180,0),i,j;

for (i = 0,j = prefixes.length; i < j; i++) {
book.style[prefixes[i] + 'Transform'] = 'rotateX(' + (60 + angle / 8) + 'deg)';
page.style[prefixes[i] + 'Transform'] = 'rotateY(' + angle + 'deg)';
dino.style[prefixes[i] + 'Transform'] = 'rotateX(' + (angle / 2) + 'deg)';
shadow.style[prefixes[i] + 'Transform'] = 'translateZ(1px) skewX(' + (angle / 8) + 'deg)';
}
};

})(window,document);

以上就是HTML5 3D书本翻页动画的示例代码,希望对大家学习javascript程序设计有所帮助。

相关文章

事件冒泡和事件捕获 起因:今天在封装一个bind函数的时候,发现el.addEventListener函数支持第三个参数...
js小数运算会出现精度问题 js number类型 JS 数字类型只有number类型,number类型相当于其他强类型语言...
什么是跨域 跨域 : 广义的跨域包含一下内容 : 1.资源跳转(链接跳转,重定向跳转,表单提交) 2.资源...
@ &quot;TOC&quot; 常见对base64的认知(不完全正确) 首先对base64常见的认知,也是须知的必须有...
搞懂:MVVM模式和Vue中的MVVM模式 MVVM MVVM : 的缩写,说都能直接说出来 :模型, :视图, :视图模...
首先我们需要一个html代码的框架如下: 我们的目的是实现ul中的内容进行横向的一点一点滚动。ul中的内容...