最近在做產品詳情頁的移動端頁面钧萍,關于兩個小問題做個匯總;
首先需要判斷的是客戶端類型政鼠,這里用到了BOM對象中的Navigator對象的相關知識风瘦,navigator 對象提供了與瀏覽器有關的信息。到底提供哪些信息公般,很大程度上取決于用戶的瀏覽器万搔;不過,也有一些公共的屬性(如 userAgent )存在于所有瀏覽器中官帘。瞬雹,不了解的可以先了解下:什么是BOM對象?
下面是封裝的判斷終端類型的函數遏佣,移動端取了所有主流的引擎
function IsPC() {
var userAgentInfo = navigator.userAgent;
var Agents = ["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;
}
成功區(qū)分終端類型后挖炬,就可以進行返回頂部操作了揽浙,根據不同的需求使用錨鏈接或scroll
這里附上scroll方法的代碼:
function rttop($el,showheight,pcspeed){
$(window).scroll(function(){
if($(window).scrollTop()>=showheight){
$el.stop().show();
}else{
$el.stop().hide();
}
})
$el.click(function(){
var nowscroll=$(window).scrollTop();
var timer = setInterval(function aa() {
var winscroll = $(window).scrollTop();
if(winscroll > 1){
if (IsPC()==true) {
document.documentElement.scrollTop*=pcspeed;
}
else{
if (nowscroll >1800) {
$('body').scrollTop(0);
}
else if (nowscroll>700&&winscroll<1800) {
$('body').scrollTop($('body').scrollTop()-100);
}
else if (winscroll<700) {
$('body').scrollTop($('body').scrollTop()-40);
}
}
}else{
clearInterval(timer);
}
},20);
})
}
參數詳解:
$el:返回按鈕元素節(jié)點
showheight:決定了下滑至哪里時按鈕出現
pcspeed:控制了PC端的返回速度(移動端速度也可傳參控制状婶,這里不做解釋)
至于為什么要區(qū)分終端,因為實際測試時發(fā)現document.documentElement.scrollTop*=pcspeed在移動端不生效馅巷,只好改用jquery選擇器選中body膛虫,具體原因不詳,希望有大佬來解惑钓猬。