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 相关文章推荐
将list转换为json失败的原因
Dec 17 Javascript
js设置document.domain实现跨域的注意点分析
May 21 Javascript
JS实现从顶部下拉显示的带动画QQ客服特效代码
Oct 24 Javascript
轻松实现js图片预览功能
Jan 18 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
Apr 25 Javascript
如何用js实现鼠标向上滚动时浮动导航
Jul 18 Javascript
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
Jul 05 jQuery
Vue自定义指令使用方法详解
Aug 21 Javascript
浅谈VUE监听窗口变化事件的问题
Feb 24 Javascript
vue项目中应用ueditor自定义上传按钮功能
Apr 27 Javascript
Node.js 使用jade模板引擎的示例
May 11 Javascript
使用layui定义一个模块并使用的例子
Sep 14 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
php实现统计目录文件大小的函数
2015/12/25 PHP
基于PHP微信红包的算法探讨
2016/07/21 PHP
Laravel框架表单验证操作实例分析
2019/09/30 PHP
JQuery 遮罩层实现(mask)实现代码
2010/01/09 Javascript
nodejs入门详解(多篇文章结合)
2012/03/07 NodeJs
在javascript中关于节点内容加强
2013/04/11 Javascript
用JavaScript实现动画效果的方法
2013/07/20 Javascript
JQuery显示隐藏DIV的方法及代码实例
2015/04/16 Javascript
javascript中setInterval的用法
2015/07/19 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
2015/08/21 Javascript
js实现select下拉框菜单
2015/12/08 Javascript
Bootstrap每天必学之导航条(二)
2016/03/01 Javascript
JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法
2016/08/05 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
解析javascript图片懒加载与预加载的分析总结
2016/10/27 Javascript
字太多用...代替的方法(两种)
2017/03/15 Javascript
jQuery实现锚点向下平滑滚动特效示例
2017/08/29 jQuery
详解Vue项目编译后部署在非网站根目录的解决方案
2018/04/26 Javascript
nodejs使用async模块同步执行的方法
2019/03/02 NodeJs
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
微信小程序自定义tabBar在uni-app的适配详解
2019/09/30 Javascript
js属性对象的hasOwnProperty方法的使用
2021/02/05 Javascript
python 字符串追加实例
2019/07/20 Python
wxPython电子表格功能wx.grid实例教程
2019/11/19 Python
移动端rem布局的两种实现方法
2018/01/03 HTML / CSS
Banana Republic欧盟:美国都市简约风格的代表品牌
2018/05/09 全球购物
幼儿园教师教学反思
2014/02/06 职场文书
喝酒检查书范文
2014/02/23 职场文书
小学教师培训方案
2014/06/09 职场文书
环境保护标语
2014/06/20 职场文书
先进事迹演讲稿
2014/09/01 职场文书
生活小常识广播稿
2014/09/16 职场文书
2015年幼儿园后勤工作总结
2015/04/25 职场文书
叶问观后感
2015/06/15 职场文书
残联2016年全国助残日活动总结
2016/04/01 职场文书
Android移动应用开发指南之六种布局详解
2022/09/23 Java/Android