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 相关文章推荐
摘自百度的图片轮换效果代码
Nov 19 Javascript
javascript  Error 对象 错误处理
May 18 Javascript
JavaScript Object的extend是一个常用的功能
Dec 02 Javascript
Jquery Ajax学习实例7 Ajax所有过程事件分析示例
Mar 23 Javascript
Jquery实现瀑布流布局(备有详细注释)
Jul 31 Javascript
JS获取屏幕高度的简单实现代码
May 24 Javascript
BootStrap fileinput.js文件上传组件实例代码
Feb 20 Javascript
js实现多张图片延迟加载效果
Jul 17 Javascript
浅谈Node 调试工具入门教程
Mar 20 Javascript
Node.js 使用axios读写influxDB的方法示例
Oct 26 Javascript
微信小程序实现同一页面取值的方法分析
Apr 30 Javascript
解决vue项目打包上服务器显示404错误,本地没出错的问题
Nov 03 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基于mssql扩展远程连接MSSQL的简单实现方法
2016/10/08 PHP
php的常量和变量实例详解
2017/06/27 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
2018/10/17 PHP
php+ajax实现文件切割上传功能示例
2020/03/03 PHP
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
jquery将一个表单序列化为一个对象的方法
2013/12/02 Javascript
动态的绑定事件addEventListener方法的使用
2014/01/24 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
分享一个自己动手写的jQuery分页插件
2014/08/28 Javascript
浅谈jquery.fn.extend与jquery.extend区别
2015/07/13 Javascript
js实现TAB切换对应不同颜色的代码
2015/08/31 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
2016/05/23 Javascript
vue.js 表格分页ajax 异步加载数据
2016/10/18 Javascript
微信小程序  action-sheet详解及实例代码
2016/11/09 Javascript
JavaScript实现图片懒加载(Lazyload)
2016/11/28 Javascript
vue axios用法教程详解
2017/07/23 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
2019/07/25 Javascript
javascript设计模式 ? 观察者模式原理与用法实例分析
2020/04/22 Javascript
javascript+Canvas实现画板功能
2020/06/23 Javascript
Vue为什么要谨慎使用$attrs与$listeners
2020/08/27 Javascript
关于vue属性使用和不使用冒号的区别说明
2020/10/22 Javascript
PyCharm 常用快捷键和设置方法
2017/12/20 Python
如何用canvas实现在线签名的示例代码
2018/07/10 HTML / CSS
ONLY瑞典官网:世界知名服装品牌
2018/06/19 全球购物
美国最大的电子宠物训练产品制造商:PetSafe
2018/10/12 全球购物
Brydge英国:适用于Apple iPad和Microsoft Surface Pro的蓝牙键盘
2019/05/16 全球购物
校园招聘策划书
2014/01/09 职场文书
终止合同协议书
2014/04/17 职场文书
国旗下的演讲稿
2014/05/08 职场文书
暑期社会实践先进个人主要事迹
2014/05/22 职场文书
紧急迫降观后感
2015/06/15 职场文书
HTML5 语义化标签(移动端必备)
2021/08/23 HTML / CSS
mongodb清除连接和日志的正确方法分享
2021/09/15 MongoDB
JavaScript中document.activeELement焦点元素介绍
2021/11/27 Javascript
将MySQL的表数据全量导入clichhouse库中
2022/03/21 MySQL