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 相关文章推荐
总结AJAX相关JS代码片段和浏览器模型
Aug 15 Javascript
jquery ajax提交表单数据的两种实现方法
Apr 29 Javascript
js编码之encodeURIComponent使用介绍(asp,php)
Mar 01 Javascript
类似php的js数组的in_array函数自定义方法
Dec 27 Javascript
javascript基于prototype实现类似OOP继承的方法
Dec 16 Javascript
jQuery实现放大镜效果实例代码
Mar 17 Javascript
微信小程序 参数传递详解
Oct 24 Javascript
javascript 秒表计时器实现代码
Mar 09 Javascript
Angular 4 依赖注入学习教程之FactoryProvider的使用(四)
Jun 04 Javascript
vue中mint-ui的使用方法
Apr 04 Javascript
vue 中固定导航栏的实例代码
Nov 01 Javascript
Javascript模拟实现new原理解析
Mar 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取整数函数常用的四种方法小结
2012/07/05 PHP
php汉字转拼音的示例
2014/02/27 PHP
php循环创建目录示例分享(php创建多级目录)
2014/03/04 PHP
Joomla开启SEF的方法
2016/05/04 PHP
JavaScript处理解析JSON数据过程详解
2015/09/11 Javascript
基于jQuery实现美观且实用的倒计时实例代码
2015/12/30 Javascript
javascript类型系统 Window对象学习笔记
2016/01/07 Javascript
Angular4学习笔记之新建项目的方法
2017/07/18 Javascript
基于Vue的ajax公共方法(详解)
2018/01/20 Javascript
vue实现pdf导出解决生成canvas模糊等问题(推荐)
2018/10/18 Javascript
JavaScript继承与聚合实例详解
2019/01/22 Javascript
详解微信小程序-扫一扫 wx.scanCode() 扫码大变身
2019/04/30 Javascript
JS中call()和apply()的功能及用法实例分析
2019/06/28 Javascript
JavaScript观察者模式原理与用法实例详解
2020/03/10 Javascript
JavaScript ECMA-262-3 深入解析(一):执行上下文实例分析
2020/04/25 Javascript
对vuex中store和$store的区别说明
2020/07/24 Javascript
Python 匹配任意字符(包括换行符)的正则表达式写法
2009/10/29 Python
详解appium+python 启动一个app步骤
2017/12/20 Python
浅谈python配置与使用OpenCV踩的一些坑
2018/04/02 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
Python3和pyqt5实现控件数据动态显示方式
2019/12/13 Python
如何通过python实现IOU计算代码实例
2020/11/02 Python
Python结合百度语音识别实现实时翻译软件的实现
2021/01/18 Python
CSS3实现精美横向滚动菜单按钮
2017/04/14 HTML / CSS
联想哥伦比亚网上商城:Lenovo Colombia
2017/01/10 全球购物
do you have any Best Practice for testing
2016/06/04 面试题
中间件分为哪几类
2012/03/14 面试题
优秀毕业生自荐信范文
2014/01/01 职场文书
传承焦裕禄精神思想汇报2014
2014/09/10 职场文书
学校运动会广播稿
2014/10/11 职场文书
铁人纪念馆观后感
2015/06/16 职场文书
用Python爬取某乎手机APP数据
2021/06/15 Python
Python实现对齐打印 format函数的用法
2022/04/28 Python
vue如何清除浏览器历史栈
2022/05/25 Vue.js
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
2022/07/15 Servers
浅谈css清除浮动(clearfix和clear)的用法
2023/05/21 HTML / CSS