JS實現(xiàn)仿UC瀏覽器前進(jìn)后退效果的實例代碼
測試瀏覽器為谷歌瀏覽器(谷歌toggle device toolbar)
var startx, starty, endx, endy, moveX, moveY, seatX, seatY;
var clickState = false;
//獲取輸入框dom元素
var text = document.forms[“form”];
//設(shè)置樣式
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; //橫坐標(biāo)
} else {
seatX = text.offsetLeft + text.offsetWidth; //橫坐標(biāo)
}
seatY = (text.offsetTop + text.offsetHeight) / 2; //縱坐標(biāo)
}
//創(chuàng)建DIV
function createDiv(obj) {
//首先創(chuàng)建div
var descDiv = document.createElement(‘div');
document.body.appendChild(descDiv);
//給div設(shè)置樣式,比如大小、位置
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”);
//設(shè)置 img 屬性,如 id
img.setAttribute(“id”, “newImg”);
//設(shè)置 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);
}
}
//根據(jù)位移改變DIV的位置
function reductionDiv(obj) {
var div = document.getElementById(obj);
setPosition(obj);
setCss(div);
}
//計算移動坐標(biāo)
function calculationMoveCoordinate() {
moveX = endx - startx;
moveY = Math.abs(endy - starty);
if (moveX > 0)
moveDiv(“l(fā)eft”, 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端鼠標(biāo)按下
function click() {
clickState = true;
startx = event.clientX;
starty = event.clientY;
}
//PC端鼠標(biāo)移動
function pull() {
if (1 == event.which) //判斷左鍵是否按下
{
endx = event.clientX;
endy = event.clientY;
calculationMoveCoordinate();
}
}
//PC端和移動端位移結(jié)束
function stopClick() {
if (Math.abs(moveX) > 37 && moveY < 20) {
if (moveX < 0) {
history.Go(1);
} else {
history.go(-1);
}
} else {
reductionDiv(“l(fā)eft”);
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坐標(biāo)
starty = Number(touch.pageY); //頁面觸點Y坐標(biāo)
}
//touchmove事件,這個事件無法獲取坐標(biāo)
function touchMoveFunc(evt) {
//evt.preventDefault(); //阻止觸摸時瀏覽器的縮放、滾動條滾動等
var touch = evt.touches[0]; //獲取第一個觸點
endx = Number(touch.pageX); //頁面觸點X坐標(biāo)
endy = Number(touch.pageY); //頁面觸點Y坐標(biāo)
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實現(xiàn)仿UC瀏覽器前進(jìn)后退效果的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
js使用navigator.userAgent判斷當(dāng)前瀏覽器所處的環(huán)境
本文主要介紹了js使用navigator.userAgent判斷當(dāng)前瀏覽器所處的環(huán)境,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
SOSO地圖API使用(一)在地圖上畫圓實現(xiàn)思路與代碼
最近在做SOSO地圖相關(guān)開發(fā),遇到相關(guān)畫圓知識,特此簡單記錄下來,接下來講解如何在在地圖上畫圓,感興趣的朋友可以了解下2013-01-01
JavaScript 異步調(diào)用框架 (Part 6 - 實例 & 模式)
我們用了5篇文章來討論如何編寫一個JavaScript異步調(diào)用框架(問題 & 場景、用例設(shè)計、代碼實現(xiàn)、鏈?zhǔn)秸{(diào)用、鏈?zhǔn)綄崿F(xiàn)),現(xiàn)在是時候讓我們看一下在各種常見開發(fā)情景中如何使用它了。2009-08-08
bootstrap fileinput 插件使用項目總結(jié)(經(jīng)驗)
這篇文章主要介紹了bootstrap fileinput 插件使用項目總結(jié),是小編日常碰到的問題及解決方法,需要的朋友可以參考下2017-02-02
簡單的兩種Extjs formpanel加載數(shù)據(jù)的方式
這篇文章介紹了兩種Extjs formpanel加載數(shù)據(jù)的方式,有需要的朋友可以參考一下2013-11-11
Javascript控制div屬性動態(tài)變化實例分析
這篇文章主要介紹了Javascript控制div屬性動態(tài)變化,以實例形式較為詳細(xì)的分析了JavaScript響應(yīng)鼠標(biāo)事件動態(tài)操作頁面元素屬性的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-10-10
向大師們學(xué)習(xí)Javascript(視頻與PPT)
在開始之前,先與大家一起認(rèn)識下這篇文章的主角,世界級的javascript大牛們:Douglas Crockford、John Resig、Peter-Paul Koch、Nicolas C. Zakas??疵忠苍S挺陌生,但是如果你對javascript還算熟悉,一定不會對他們的作品陌生。2009-12-12

