本篇文章小编给大家分享一下HTML+CSS+JavaScript实现图片3D展览代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
图片3D展览效果
代码实现
1、HTML代码
css" rel="stylesheet">
图片3D展览屋
2、CSS代码
#icon {
background: rgb(255, 144, 0); border-radius: 6px 0px 0px; transition:0.6s ease-in-out; left: 65px; top: 6px; overflow: hidden; position: relative; cursor: pointer; -moz-transition: all 0.6s ease-in-out 0s; -webkit-transition: all 0.6s ease-in-out 0s; -o-transition: all 0.6s ease-in-out 0s;
}
#icon div {
background: none; position: absolute;
}
#icon div:nth-child(1) {
border-0px 7px 8px; border-style: solid; border-color: transparent rgb(255, 255, 255); left: 20px; top: 50%; margin-top: -7px; position: absolute;
}
#icon div:nth-child(2) {
background: rgb(255, 255, 255); left: 12px; top: 50%; margin-top: -3px; position: absolute;
}
#nav {
top: 10px; position: absolute; -ms-user-select: none; -webkit-user-select: none; -moz-user-select: none;
}
#nav-switch {
display: none;
}
#nav .label {
display: block; cursor: pointer;
}
#nav .container {
transition:left 0.3s ease-in-out; left: -100px; width: 100%; position: absolute; -moz-transition: left 0.3s ease-in-out 0s; -webkit-transition: left 0.3s ease-in-out 0s; -o-transition: left 0.3s ease-in-out 0s;
}
#nav .container > div {
padding: 0px; width: 50%; float: left;
}
#nav .container .nav-on {
color: rgb(51, 51, 51); padding-left: 0px;
}
#nav .container .nav-off {
padding-right: 10px;
}
:checked#nav-switch + .label .container {
left: 10px;
}
:checked#nav-switch + .label #icon {
background: rgb(0, 101, 203); border-radius: 0px 0px 6px; transform: rotate(-180deg); -webkit-transform: rotate(-180deg); -moz-transform: rotate(-180deg); -o-transform: rotate(-180deg);
}
.title {
margin: 0px; padding: 0px; left: 170px; top: 2px; color: rgb(51, 51, 51); line- font-family: "Segoe UI Light", "Segoe UI", Frutiger, "Frutiger Linotype", "Dejavu Sans", "Helvetica Neue", Arial, sans-serif; font-size: 24px; font-weight: bold; white-space: nowrap; position: absolute; -ms-user-select: none; -webkit-user-select: none; -moz-user-select: none; -o-user-select: none; user-select: none;
}
.menu {
margin: 0px; padding: 0px; left: 0px; top: 6px; color: rgb(51, 51, 51); font-family: "Segoe UI Light", "Segoe UI", Frutiger, "Frutiger Linotype", "Dejavu Sans", "Helvetica Neue", Arial, sans-serif; font-size: 1em; font-weight: lighter; list-style-type: none; position: relative; cursor: pointer;
}
.menu li {
list-style: none; border-right-color: rgb(221, 221, 221); border-right- border-right-style: solid; position: relative; cursor: pointer;
}
.menu a {
color: rgb(51, 51, 51); line- padding-left: 40px; text-decoration: none; display: block; position: relative;
}
.menu li a:hover {
background: rgb(255, 144, 0);
}
.menu li a:focus {
background: rgb(255, 144, 0);
}
.menu li a:active {
background: rgb(255, 144, 0);
}
#nav li::before {
top: 50%; margin-left: 10px; position: absolute; content: "";
}
#nav li::after {
top: 50%; margin-left: 10px; position: absolute; content: "";
}
#nav li a::before {
top: 50%; margin-left: 10px; position: absolute; content: "";
}
#nav li a::after {
top: 50%; margin-left: 10px; position: absolute; content: "";
}
#nav .home a::before {
border-7px; border-style: solid; border-color: transparent transparent rgb(51, 51, 51); left: 2px; margin-top: -16px;
}
#nav .home a::after {
border-4px 0px; border-style: solid; border-color: rgb(51, 51, 51) rgb(51, 51, 51) transparent; left: 4px; margin-top: 0px;
}
#nav .arrow a::before {
border-0px 7px 8px; border-style: solid; border-color: transparent rgb(51, 51, 51); left: 8px; margin-top: -7px;
}
#nav .arrow a::after {
background: rgb(51, 51, 51); left: 0px; margin-top: -3px;
}
#nav .back.arrow a::before {
border-8px 7px 0px; left: 0px;
}
#nav .back.arrow a::after {
left: 8px;
}
#nav .list a::before {
background: none; border-0px; border-style: double; border-color: rgb(51, 51, 51); left: 5px; top: 14px;
}
#nav .list a::after {
background: none; border-0px; border-style: double; border-color: rgb(51, 51, 51); left: 1px; top: 14px;
}
3、JavaScript代码
// ===== ge1doot global ===== js文件1
var ge1doot = ge1doot || {
json: null,
screen: null,
pointer: null,
camera: null,
loadJS: function (url, callback, data) {
if (typeof url == "string") url = [url];
var load = function (src) {
var script = document.createElement("script");
if (callback) {
if (script.readyState){
script.onreadystatechange = function () {
if (script.readyState == "loaded" || script.readyState == "complete"){
script.onreadystatechange = null;
if (--n === 0) callback(data || false);
}
}
} else {
script.onload = function() {
if (--n === 0) callback(data || false);
}
}
}
script.src = src;
document.getElementsByTagName("head")[0].appendChild(script);
}
for (var i = 0, n = url.length; i 11 || Math.abs(this.Y - sY) > 11) {
this.hasMoved = true;
if (this.isDown) {
if (!this.isDraging) {
this.startX = sX;
this.startY = sY;
this.setup.startDrag && this.setup.startDrag(e);
this.isDraging = true;
} else {
this.setup.drag && this.setup.drag(e);
}
} else {
sX = this.X;
sY = this.Y;
}
}
this.setup.move && this.setup.move(e);
}
this.pointerUp = function(e) {
this.bXi = this.Xi;
this.bYi = this.Yi;
if (!this.hasMoved) {
this.X = sX;
this.Y = sY;
this.setup.tap && this.setup.tap(this.evt);
} else {
this.setup.up && this.setup.up(this.evt);
}
this.isDraging = false;
this.isDown = false;
this.hasMoved = false;
this.setup.up && this.setup.up(this.evt);
if (this.elem.releaseCapture) this.elem.releaseCapture();
this.evt = false;
}
this.pointerCancel = function(e) {
if (this.elem.releaseCapture) this.elem.releaseCapture();
this.isDraging = false;
this.hasMoved = false;
this.isDown = false;
this.bXi = this.Xi;
this.bYi = this.Yi;
sX = 0;
sY = 0;
}
if ('ontouchstart' in window) {
this.elem.ontouchstart = function (e) { self.pointerDown(e); return false; }
this.elem.ontouchmove = function (e) { self.pointerMove(e); return false; }
this.elem.ontouchend = function (e) { self.pointerUp(e); return false; }
this.elem.ontouchcancel = function (e) { self.pointerCancel(e); return false;}
}
document.addEventListener("mousedown", function (e) {
if (
e.target === self.elem ||
(e.target.parentNode && e.target.parentNode === self.elem) ||
(e.target.parentNode.parentNode && e.target.parentNode.parentNode === self.elem)
) {
if (typeof e.stopPropagation != "undefined") {
e.stopPropagation();
} else {
e.cancelBubble = true;
}
e.preventDefault();
self.pointerDown(e);
}
}, false);
document.addEventListener("mousemove", function (e) { self.pointerMove(e); }, false);
document.addEventListener("mouseup", function (e) {
self.pointerUp(e);
}, false);
document.addEventListener('gesturechange', function(e) {
e.preventDefault();
if (e.scale > 1) self.scale = 0.1; else if (e.scale 1) {
if (e.preventDefault) e.preventDefault();
self.scale = e.velocityExpansion;
self.setup.scale && self.setup.scale(e);
}
return false;
}, false);
}
if (window.addEventListener) this.elem.addEventListener('DOMMouseScroll', function(e) {
if (e.preventDefault) e.preventDefault();
self.wheelDelta = e.detail * 10;
self.setup.wheel && self.setup.wheel(e);
return false;
}, false);
this.elem.onmousewheel = function () {
self.wheelDelta = -event.wheelDelta * .25;
self.setup.wheel && self.setup.wheel(event);
return false;
}
}
// ===== request animation frame =====
window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function( run ){
window.setTimeout(run, 16);
};
})();
// ===== ge1doot global ===== js文件1
var ge1doot = ge1doot || {
json: null,
screen: null,
pointer: null,
camera: null,
loadJS: function (url, callback, data) {
if (typeof url == "string") url = [url];
var load = function (src) {
var script = document.createElement("script");
if (callback) {
if (script.readyState){
script.onreadystatechange = function () {
if (script.readyState == "loaded" || script.readyState == "complete"){
script.onreadystatechange = null;
if (--n === 0) callback(data || false);
}
}
} else {
script.onload = function() {
if (--n === 0) callback(data || false);
}
}
}
script.src = src;
document.getElementsByTagName("head")[0].appendChild(script);
}
for (var i = 0, n = url.length; i 11 || Math.abs(this.Y - sY) > 11) {
this.hasMoved = true;
if (this.isDown) {
if (!this.isDraging) {
this.startX = sX;
this.startY = sY;
this.setup.startDrag && this.setup.startDrag(e);
this.isDraging = true;
} else {
this.setup.drag && this.setup.drag(e);
}
} else {
sX = this.X;
sY = this.Y;
}
}
this.setup.move && this.setup.move(e);
}
this.pointerUp = function(e) {
this.bXi = this.Xi;
this.bYi = this.Yi;
if (!this.hasMoved) {
this.X = sX;
this.Y = sY;
this.setup.tap && this.setup.tap(this.evt);
} else {
this.setup.up && this.setup.up(this.evt);
}
this.isDraging = false;
this.isDown = false;
this.hasMoved = false;
this.setup.up && this.setup.up(this.evt);
if (this.elem.releaseCapture) this.elem.releaseCapture();
this.evt = false;
}
this.pointerCancel = function(e) {
if (this.elem.releaseCapture) this.elem.releaseCapture();
this.isDraging = false;
this.hasMoved = false;
this.isDown = false;
this.bXi = this.Xi;
this.bYi = this.Yi;
sX = 0;
sY = 0;
}
if ('ontouchstart' in window) {
this.elem.ontouchstart = function (e) { self.pointerDown(e); return false; }
this.elem.ontouchmove = function (e) { self.pointerMove(e); return false; }
this.elem.ontouchend = function (e) { self.pointerUp(e); return false; }
this.elem.ontouchcancel = function (e) { self.pointerCancel(e); return false;}
}
document.addEventListener("mousedown", function (e) {
if (
e.target === self.elem ||
(e.target.parentNode && e.target.parentNode === self.elem) ||
(e.target.parentNode.parentNode && e.target.parentNode.parentNode === self.elem)
) {
if (typeof e.stopPropagation != "undefined") {
e.stopPropagation();
} else {
e.cancelBubble = true;
}
e.preventDefault();
self.pointerDown(e);
}
}, false);
document.addEventListener("mousemove", function (e) { self.pointerMove(e); }, false);
document.addEventListener("mouseup", function (e) {
self.pointerUp(e);
}, false);
document.addEventListener('gesturechange', function(e) {
e.preventDefault();
if (e.scale > 1) self.scale = 0.1; else if (e.scale 1) {
if (e.preventDefault) e.preventDefault();
self.scale = e.velocityExpansion;
self.setup.scale && self.setup.scale(e);
}
return false;
}, false);
}
if (window.addEventListener) this.elem.addEventListener('DOMMouseScroll', function(e) {
if (e.preventDefault) e.preventDefault();
self.wheelDelta = e.detail * 10;
self.setup.wheel && self.setup.wheel(e);
return false;
}, false);
this.elem.onmousewheel = function () {
self.wheelDelta = -event.wheelDelta * .25;
self.setup.wheel && self.setup.wheel(event);
return false;
}
}
// ===== request animation frame =====
window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function( run ){
window.setTimeout(run, 16);
};
})();
模拟极限越野
模拟极限越野开着大巴在各种奇葩路况里送乘客。山路弯道多得让人
模拟火车
模拟火车让你当回真正的火车司机,得先学会看信号灯、操作控制杆
可口的披萨美味的披萨
可口的披萨美味的披萨带您体验经营一家披萨店的乐趣。游戏画风温
定制虚拟偶像最新版
定制虚拟偶像最新版是一款超级经典有趣的日本模拟装扮类型的手游
病娇模拟器手机版正版(yandere simulator)
病娇模拟器最新版手游是一款萌妹二次元模拟游戏,玩家在游戏中可