JS实现仿UC浏览器前进后退效果的实例代码

 更新时间:2017年07月17日 14:08:50   作者:心之所向  
这篇文章主要介绍了JS实现仿UC浏览器前进后退效果的实例代码,实现此功能前需要先测试下浏览器,具体实例代码,大家参考下本文

测试浏览器为谷歌浏览器(谷歌toggle device toolbar)

var startx, starty, endx, endy, moveX, moveY, seatX, seatY; 
var clickState = false; 
//获取输入框dom元素 
var text = document.forms[“form”]; 
//设置样式 
function setCss(obj) { 
var cssStr = “z-index:5;width:37px;height:37px;position:absolute;left:” 
+ seatX + ‘px;top:' + seatY + ‘px;'; 
//将样式添加到div上,显示div 
obj.style.cssText = cssStr;
}
//计算位置 
function setPosition(obj) { 
if (obj == ‘left') { 
seatX = text.offsetLeft - 37; //横坐标 
} else { 
seatX = text.offsetLeft + text.offsetWidth; //横坐标 
} 
seatY = (text.offsetTop + text.offsetHeight) / 2; //纵坐标 
} 
//创建DIV 
function createDiv(obj) { 
//首先创建div 
var descDiv = document.createElement(‘div'); 
document.body.appendChild(descDiv); 
//给div设置样式,比如大小、位置 
setPosition(obj); 
setCss(descDiv); 
descDiv.innerHTML = ”; 
descDiv.id = obj; 
descDiv.style.display = ‘block'; 
addElementImg(descDiv.id); 
} 
//添加IMG 
function addElementImg(obj) { 
var div = document.getElementById(obj); 
//添加 img 
var img = document.createElement(“img”); 
//设置 img 属性,如 id 
img.setAttribute(“id”, “newImg”); 
//设置 img 图片地址 
img.src = “/Themes/TheThemeMachine/Images/” + obj + “.png”; 
div.appendChild(img); 
} 
//删除DIV 
function removeDiv(obj) { 
var el = document.getElementById(obj); 
el.parentNode.removeChild(el); 
} 
//移动DIV 
function moveDiv(obj, movex) { 
if (Math.abs(movex) < 37) { 
var div = document.getElementById(obj); 
setPosition(obj); 
seatX = seatX + movex; 
setCss(div); 
} 
} 
//根据位移改变DIV的位置 
function reductionDiv(obj) { 
var div = document.getElementById(obj); 
setPosition(obj); 
setCss(div); 
} 
//计算移动坐标 
function calculationMoveCoordinate() { 
moveX = endx - startx; 
moveY = Math.abs(endy - starty); 
if (moveX > 0) 
moveDiv(“left”, moveX); 
else 
moveDiv(“right”, moveX); 
} 
//判断是否是PC端 
function IsPC() { 
var userAgentInfo = navigator.userAgent; 
var Agents = new Array(“Android”, “iPhone”, “SymbianOS”, “Windows Phone”, “iPad”, “iPod”); 
var flag = true; 
for (var v = 0; v < Agents.length; v++) { 
if (userAgentInfo.indexOf(Agents[v]) > 0) { flag = false; break; } 
} 
return flag; 
} 
//PC端鼠标按下 
function click() { 
clickState = true; 
startx = event.clientX; 
starty = event.clientY; 
} 
//PC端鼠标移动 
function pull() { 
if (1 == event.which) //判断左键是否按下 
{ 
endx = event.clientX; 
endy = event.clientY; 
calculationMoveCoordinate(); 
} 
} 
//PC端和移动端位移结束 
function stopClick() { 
if (Math.abs(moveX) > 37 && moveY < 20) { 
if (moveX < 0) { 
history.Go(1); 
} else { 
history.go(-1); 
} 
} else { 
reductionDiv(“left”); 
reductionDiv(“right”); 
} 
} 
////移动端注册事件 
document.addEventListener(‘touchmove', function (event) { 
event.preventDefault(); 
}, false); 
//touchstart事件 
function touchSatrtFunc(evt) { 
//evt.preventDefault(); //阻止触摸时浏览器的缩放、滚动条滚动等 
var touch = evt.touches[0]; //获取第一个触点 
startx = Number(touch.pageX); //页面触点X坐标 
starty = Number(touch.pageY); //页面触点Y坐标 
}
//touchmove事件,这个事件无法获取坐标 
function touchMoveFunc(evt) { 
//evt.preventDefault(); //阻止触摸时浏览器的缩放、滚动条滚动等 
var touch = evt.touches[0]; //获取第一个触点 
endx = Number(touch.pageX); //页面触点X坐标 
endy = Number(touch.pageY); //页面触点Y坐标 
calculationMoveCoordinate(); 
}
//touchend事件 
function touchEndFunc(evt) { 
//evt.preventDefault(); //阻止触摸时浏览器的缩放、滚动条滚动等 
stopClick(); 
}
//加载 
if (IsPC()) { 
document.onmousedown = click; 
document.onmousemove = pull; 
document.onmouseup = stopClick; 
} else { 
document.addEventListener(‘touchstart', touchSatrtFunc, false); 
document.addEventListener(‘touchmove', touchMoveFunc, false); 
document.addEventListener(‘touchend', touchEndFunc, false); 
} 
createDiv(‘left'); 
createDiv(‘right');

以上所述是小编给大家介绍的JS实现仿UC浏览器前进后退效果的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • js使用navigator.userAgent判断当前浏览器所处的环境

    js使用navigator.userAgent判断当前浏览器所处的环境

    本文主要介绍了js使用navigator.userAgent判断当前浏览器所处的环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • js键盘事件的keyCode

    js键盘事件的keyCode

    本节主要介绍了js键盘事件的keyCode,在你按下键时会弹出它的键码,需要的朋友可以参考下
    2014-07-07
  • SOSO地图API使用(一)在地图上画圆实现思路与代码

    SOSO地图API使用(一)在地图上画圆实现思路与代码

    最近在做SOSO地图相关开发,遇到相关画圆知识,特此简单记录下来,接下来讲解如何在在地图上画圆,感兴趣的朋友可以了解下
    2013-01-01
  • JavaScript 异步调用框架 (Part 6 - 实例 & 模式)

    JavaScript 异步调用框架 (Part 6 - 实例 & 模式)

    我们用了5篇文章来讨论如何编写一个JavaScript异步调用框架(问题 & 场景、用例设计、代码实现、链式调用、链式实现),现在是时候让我们看一下在各种常见开发情景中如何使用它了。
    2009-08-08
  • bootstrap fileinput 插件使用项目总结(经验)

    bootstrap fileinput 插件使用项目总结(经验)

    这篇文章主要介绍了bootstrap fileinput 插件使用项目总结,是小编日常碰到的问题及解决方法,需要的朋友可以参考下
    2017-02-02
  • 简单的两种Extjs formpanel加载数据的方式

    简单的两种Extjs formpanel加载数据的方式

    这篇文章介绍了两种Extjs formpanel加载数据的方式,有需要的朋友可以参考一下
    2013-11-11
  • layui中的tab控件点击切换触发事件

    layui中的tab控件点击切换触发事件

    这篇文章主要介绍了layui中的tab控件点击切换触发事件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Javascript控制div属性动态变化实例分析

    Javascript控制div属性动态变化实例分析

    这篇文章主要介绍了Javascript控制div属性动态变化,以实例形式较为详细的分析了JavaScript响应鼠标事件动态操作页面元素属性的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • 向大师们学习Javascript(视频与PPT)

    向大师们学习Javascript(视频与PPT)

    在开始之前,先与大家一起认识下这篇文章的主角,世界级的javascript大牛们:Douglas Crockford、John Resig、Peter-Paul Koch、Nicolas C. Zakas。看名字也许挺陌生,但是如果你对javascript还算熟悉,一定不会对他们的作品陌生。
    2009-12-12
  • 微信小程序分包操作实战指南

    微信小程序分包操作实战指南

    分包指的是把一个完整的小程序项目,按照需求划分为不同的子包, 在构建时打包成不同的分包,用户在使用时按需进行加载,下面这篇文章主要给大家介绍了关于微信小程序分包操作的相关资料,需要的朋友可以参考下
    2022-10-10

最新评论