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


Posted in Javascript onJuly 17, 2017

测试浏览器为谷歌浏览器(谷歌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浏览器前进后退效果的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JQuery 确定css方框模型(盒模型Box Model)
Jan 22 Javascript
JavaScript开发人员的10个关键习惯小结
Dec 05 Javascript
js实现二级菜单渐隐显示
Nov 03 Javascript
浅析JavaScript中的对象类型Object
May 26 Javascript
DOM操作原生js 的bug,使用jQuery 可以消除的解决方法
Sep 04 Javascript
JavaScript算法教程之sku(库存量单位)详解
Jun 29 Javascript
如何理解Vue的作用域插槽的实现原理
Aug 19 Javascript
node通过npm写一个cli命令行工具
Oct 12 Javascript
jquery获取transform里的值实现方法
Dec 12 jQuery
Vue.js点击切换按钮改变内容的实例讲解
Aug 22 Javascript
Vue实现图片与文字混输效果
Dec 04 Javascript
Javascript中的奇葩知识,你知道吗?
Jan 25 Javascript
详解利用jsx写vue组件的方法示例
Jul 17 #Javascript
Javascript实现找不同色块的游戏
Jul 17 #Javascript
Vue.js 单页面多路由区域操作的实例详解
Jul 17 #Javascript
Vue项目webpack打包部署到服务器的实例详解
Jul 17 #Javascript
JS中Safari浏览器中的Date
Jul 17 #Javascript
Vue.extend构造器的详解
Jul 17 #Javascript
原生js实现密码输入框值的显示隐藏
Jul 17 #Javascript
You might like
哪吒敖丙传:新人物二哥敖乙出场 小敖丙奶气十足
2020/03/08 国漫
php数组函数序列之array_key_exists() - 查找数组键名是否存在
2011/10/29 PHP
PHP编程风格规范分享
2014/01/15 PHP
jquery提示 &quot;object expected&quot;的解决方法
2009/12/13 Javascript
理解Javascript_06_理解对象的创建过程
2010/10/15 Javascript
JavaScript 创建运动框架的实现代码
2013/05/08 Javascript
JS的Document属性和方法小结
2013/09/17 Javascript
JavaScript中匿名、命名函数的性能测试
2014/09/04 Javascript
js网页右下角提示框实例
2014/10/14 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
2015/02/24 Javascript
javascript函数式编程程序员的工具集
2015/10/11 Javascript
JS实现双击屏幕滚动效果代码
2015/10/28 Javascript
jQuery简单动画变换效果实例分析
2016/07/04 Javascript
jQuery异步提交表单的两种方式
2016/09/13 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
2016/10/29 Javascript
微信小程序 天气预报开发实例代码源码
2017/01/20 Javascript
JavaScript实现HTML5游戏断线自动重连的方法
2017/09/18 Javascript
nodeJS进程管理器pm2的使用
2019/01/09 NodeJs
解决vue+ element ui 表单验证有值但验证失败问题
2020/01/16 Javascript
vue 图片裁剪上传组件的实现
2020/11/12 Javascript
[49:20]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
python查看zip包中文件及大小的方法
2015/07/09 Python
python 实现数组list 添加、修改、删除的方法
2018/04/04 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
对python借助百度云API对评论进行观点抽取的方法详解
2019/02/21 Python
python flask web服务实现更换默认端口和IP的方法
2019/07/26 Python
浅谈matplotlib中FigureCanvasXAgg的用法
2020/06/16 Python
HTML5 localStorage使用总结
2017/02/22 HTML / CSS
Yummie官方网站:塑身衣和衣柜必需品
2019/10/29 全球购物
编写一个类体现构造,公有,私有方法,静态,私有变量
2013/08/10 面试题
营销部内勤岗位职责
2014/04/30 职场文书
2014年创先争优活动总结
2014/05/04 职场文书
致我们终将逝去的青春观后感
2015/06/10 职场文书
解除处分决定书
2015/06/25 职场文书
2015年中秋节主持词
2015/07/30 职场文书
JavaScript使用canvas绘制坐标和线
2021/04/28 Javascript