永发信息网

如何用JavaScript 实现 iOSwebView里面Html界面导航栏置顶效果

答案:1  悬赏:0  手机版
解决时间 2021-01-24 08:36
如何用JavaScript 实现 iOSwebView里面Html界面导航栏置顶效果
最佳答案
//记录导航条原来在页面上的位置
var naviga_offsetTop = 0;
var naviga_offsetLeft = 0;

//IE7不识别getElementsByClassName,为了兼容自定义一个
function my_getElementsByClassName(class_name) {
var el = [];
//获取所有元素
_el = document.getElementsByTagName('*');
//通过className刷选
for (var i=0; i<_el.length; i++ ) {
if (_el[i].className == class_name ) {
el[el.length] = _el[i];
}
}
return el;
}

//导航条,悬停在顶部
function naviga_stay_top(){
var a_navigation_bar = [];
if(document.getElementsByClassName){//Chrome, FF
a_navigation_bar = document.getElementsByClassName("navigation");
} else {//IE
a_navigation_bar = my_getElementsByClassName("navigation");
}
var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;

document.title = scrollTop;
//如果向下滚动的距离大于原来导航栏离顶部的距离
//直接将导航栏固定到可视区顶部
if( scrollTop > naviga_offsetTop ){
a_navigation_bar[0].style.top = 0 + "px";
} else {
//如果向下滚动的距离小原来导航栏离顶部的距离,则重新计算导航栏的位置
a_navigation_bar[0].style.top = (naviga_offsetTop - scrollTop) + "px";
}
}

//给导航条上四个tab,加上点击事件。
window.onload=function(){
var a_tabs = [];
if( document.getElementsByClassName ){//Chrome, FF
a_tabs = document.getElementsByClassName("tab");
}else{ //IE
a_tabs = my_getElementsByClassName("tab");
}

var a_contents = [];
if( document.getElementsByClassName ){//Chrome, FF
a_contents = document.getElementsByClassName("content");
}else{//IE
a_contents = my_getElementsByClassName("content");
}

//获取offsetLeft,即导航栏离左边框的距离
var a_main_div = [];
if( document.getElementsByClassName ){//Chrome, FF
a_main_div = document.getElementsByClassName("main");
}else{ //IE
a_main_div = my_getElementsByClassName("main");
}
naviga_offsetLeft = a_main_div[0].offsetLeft;

a_tabs[0].onclick=function(){
window.scrollTo(0, a_contents[2].offsetTop);
}
a_tabs[1].onclick=function(){
window.scrollTo(0, a_contents[3].offsetTop);
}
a_tabs[2].onclick=function(){
window.scrollTo(0, a_contents[4].offsetTop);
}
a_tabs[3].onclick=function(){
window.scrollTo(0, a_contents[5].offsetTop);
}

//获取页面上,导航条到顶部的位置
var a_navigation_bar = [];
if(document.getElementsByClassName){//Chrome, FF
a_navigation_bar = document.getElementsByClassName("navigation");
} else {//IE
a_navigation_bar = my_getElementsByClassName("navigation");
}
//获取offsetTop
naviga_offsetTop = a_navigation_bar[0].offsetTop;
a_navigation_bar[0].style.left = naviga_offsetLeft + "px";

//给滚动条以及鼠标加上滚动事件
if( window.attachEvent) //IE
{
window.attachEvent("onmousewheel", naviga_stay_top);
window.attachEvent("onscroll", naviga_stay_top);

document.attachEvent("onmousewheel", naviga_stay_top);
document.attachEvent("onscroll", naviga_stay_top);
} else {//Chrome ,FF
window.addEventListener("mousewheel", naviga_stay_top,false);
window.addEventListener("scroll", naviga_stay_top,false);

document.addEventListener("mousewheel", naviga_stay_top,false);
document.addEventListener("scroll", naviga_stay_top,false);
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
下列各项存款中,不在其他货币资金科目中核算
求救---刷机过程中,屏幕变成绿色小人了
青菜的营养成分含量是什么
立邦地址在哪,我要去那里办事
one k() is 1,000 meters
广播剧后期怎么做啊
招标人提供的工程量清单中必须列出各个清单项
从刘园到梨园头李港监狱开车路线?
“word”如何在每页设置所需的行数?
婴儿家纺地址有知道的么?有点事想过去
公司捐赠出去实物(大金额)怎样做账
已知关于X的方程6(X+K)=2X+5 K为何值时,这
1.[判断题]国务院确定的关系国家安全的大型国
3D与4D的区别是什么?
罗贯中为什么选择写《三国演义》,而不是写《
推荐资讯
红灯摄影摄像地址好找么,我有些事要过去
海拉尔 是哪个省的 具体位置
固定资产的更新改造等后续支出,满足固定资产
林海派出所地址在哪,我要去那里办事
小明在寒冷的环境中不由自主地打寒颤,下列叙
桃子湖地址在什么地方,想过去办事
汽车排量1.8T和1.8L有多大区别?
校车安全条例 校车安全管理条例 校车安全管理
硬盘1 磁盘是240,扇区是63
大不同花店在什么地方啊,我要过去处理事情
【日本星期】日本的星期几用什么表示的?
(  )是幼儿园中全面负责幼儿生活与教育的
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?