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 相关文章推荐
JavaScript跨域方法汇总
Oct 16 Javascript
JS中获取函数调用链所有参数的方法
May 07 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
Mar 07 Javascript
AngularJs实现分页功能不带省略号的代码
May 30 Javascript
angular源码学习第一篇 setupModuleLoader方法
Oct 20 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
Nov 23 Javascript
JS实现iframe自适应高度的方法示例
Jan 07 Javascript
图片懒加载imgLazyLoading.js使用详解
Sep 15 Javascript
javascript中UMD规范的代码推演
Aug 29 Javascript
JS中数据结构之栈
Jan 01 Javascript
微信小程序地图(map)组件点击(tap)获取经纬度的方法
Jan 10 Javascript
vue使用axios上传文件(FormData)的方法
Apr 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
Linux下进行MYSQL编程时插入中文乱码的解决方案
2007/03/15 PHP
PHP curl 并发最佳实践代码分享
2012/09/05 PHP
php 地区分类排序算法
2013/07/01 PHP
学习php过程中的一些注意点的总结
2013/10/25 PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
2014/10/23 PHP
Javascript的闭包
2009/12/31 Javascript
jquery实现简单合拢与展开网页面板的方法
2015/09/01 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
2016/07/20 Javascript
再谈javascript注入 黑客必备!
2016/09/14 Javascript
node.js学习之断言assert的使用示例
2017/09/28 Javascript
Vue利用路由钩子token过期后跳转到登录页的实例
2017/10/26 Javascript
Vue2.0学习之详解Vue 组件及父子组件通信
2017/12/12 Javascript
element ui table 增加筛选的方法示例
2018/11/02 Javascript
解决Vue+Electron下Vuex的Dispatch没有效果问题
2019/05/20 Javascript
了解JavaScript中的选择器
2019/05/24 Javascript
100行代码实现vue表单校验功能(小白自编)
2019/11/19 Javascript
Vue生命周期activated之返回上一页不重新请求数据操作
2020/07/26 Javascript
jQuery实现朋友圈查看图片
2020/09/11 jQuery
Pandas Shift函数的基础入门学习笔记
2018/11/16 Python
Python 支付整合开发包的实现
2019/01/23 Python
使用Pandas对数据进行筛选和排序的实现
2019/07/29 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
2019/08/05 Python
python实现加密的方式总结
2020/01/19 Python
利用pandas向一个csv文件追加写入数据的实现示例
2020/04/23 Python
python怎么判断素数
2020/07/01 Python
Django rest framework分页接口实现原理解析
2020/08/21 Python
html5 Canvas画图教程(11)—使用lineTo/arc/bezierCurveTo画椭圆形
2013/01/09 HTML / CSS
美国购车网站:TrueCar
2016/10/19 全球购物
介绍一下木马病毒的种类
2015/07/26 面试题
编程实现去掉XML的重复结点
2014/05/28 面试题
火锅店创业计划书范文
2014/02/02 职场文书
党员承诺书范文
2014/05/19 职场文书
MySQL主从复制断开的常用修复方法
2021/04/07 MySQL
python实现简单的名片管理系统
2021/04/26 Python
Redis基本数据类型Set常用操作命令
2022/06/01 Redis
基于CSS制作创意端午节专属加载特效
2022/06/01 HTML / CSS