经过多次改进,可以在普通网站上直接使用了,现在发布源程序下载(编码为utf-8,改为gb3212的方法是:用记事本打开,另存时选择相应的编码),希望对大家有用(虽然不一定实用)。
因为只是标签导航,所有内容还会在频道页中体现,所在全部用AJAX读取。
功能的实现思路:
S1
雅虎中国·单击触发
·<A>块锁定:a{display:block;height:16px;}/*将A锁定为块级,再定义高度和宽度*/
·再次单击弹出链接:在<A>标记的onclick事件中需要执行读取时,return false;否则return true;
·AJAX读取数据
·数据暂存
·窗口平滑收缩
<!--由于我看不懂雅虎的代码,所以使用了一些基本的代码去实现这些功能,可能效率不高,不过效果是出来了.-->
S2
网易·鼠标滑过延时触发: onmouseover时var waitInterval=window.setTimeout("func();",300);onmouseout时clearTimeout(waitInterval);
·<A>块锁定、AJAX读取数据、数据暂存、窗口平滑收缩
其它功能:
·cookie记忆
·最后读取数据的服务器时间
·滑动门技术
在线效果:
http://www.lorlo.com/tab.html源码下载(见附件)
JS文件分析:
function getObject(objectId) {
if(document.getElementById && document.getElementById(objectId)) {
// W3C DOM
return document.getElementById(objectId);
}
else if (document.all && document.all(objectId)) {
// MSIE 4 DOM
return document.all(objectId);
}
else if (document.layers && document.layers[objectId]) {
// NN 4 DOM.. note: this won't find nested layers
return document.layers[objectId];
}
else {
return false;
}
}
var responsecont;
var xmlHttp;
var xH=new Object();
var rqtp=new Object();
var dateStr,dStr;
var requestType;
var etype=0;
var newsstring;
var ajccache=new Object();
var url;
var MouseDelayTime=200;//鼠标感应延迟
var waitInterval;
var Browser = new Object();
Browser.isMozilla = (typeof document.implementation != 'undefined') && (typeof document.implementation.createDocument != 'undefined') && (typeof HTMLDocument!='undefined');
Browser.isIE = window.ActiveXObject ? true : false;
Browser.isFirefox = (navigator.userAgent.toLowerCase().indexOf("firefox")!=-1);
Browser.isOpera = (navigator.userAgent.toLowerCase().indexOf("opera")!=-1);
function SetCookie(name,value,expires){//写cookie
var exp=new Date();
exp.setTime(exp.getTime()+expires*60000);
document.cookie=name+"="+escape(value)+";expires="+exp.toGMTString();//+";domain=arkoo.com;path=/";
}
function readcookie(name){//读取cookie
var oRegex=new RegExp(name+'=([^;]+)','i');
var oMatch=oRegex.exec(document.cookie);
if(oMatch&&oMatch.length>1)return unescape(oMatch[1]);
else return '';
}
function CreateXMLHttpRequest(){
// Initialize Mozilla XMLHttpRequest object
if (window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();
}
// Initialize for IE/Windows ActiveX version
else if (window.ActiveXObject) {
try{
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
}
catch (e){
try{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){newsstring = "<div class='loading'>Loading rquest content fail, Please try it again latter...</div>";}
}
}
}
function getnews(tagid,x){
url = "tab/"+tagid+'_'+x+'.html';
var url2=url;
requestType = tagid;
if(ajccache[url]==null){
var loadstatustext="<div class='loading'><img src='tab/images/loading.gif' /> Loading request content, please wait...</div>";
rqtp[tagid]=tagid;
CreateXMLHttpRequest();
var hdr=tagid;
xH[tagid]=xmlHttp;
if(etype==1)getObject(requestType+'_cnt').innerHTML = loadstatustext;
xH[tagid].onreadystatechange = function(){
// only if xmlHttp shows "complete"
if (xH[tagid].readyState == 4){
// only http 200 to process
if (window.location.href.indexOf("http")==-1 || xH[tagid].status == 200){
newsstring = xH[tagid].responseText;
dateStr=xH[tagid].getResponseHeader("Date");
dStr = new Date(dateStr);SetCookie('dStr',dStr,10000000);
//inject centent to tab-pane
shownews(rqtp[tagid],newsstring);
ajccache[url2]=newsstring;
}
}
}
xH[tagid].open("GET", url, true);
xH[tagid].setRequestHeader("If-Modified-Since","0");
xH[tagid].send(null);
}
else
{shownews(requestType,ajccache[url]);}
}
function shownews(requestType,newsstring){
//<![CDATA[
responsecont = getObject(requestType+'_cnt');
responsecont.innerHTML = newsstring;
getObject("pdate").innerHTML=dStr;
if(getObject("alta")){ata(getObject("alta"));hideText();}
//]]>
}
function TabNews(tagid,x){
var lim=getObject(tagid+"_mn").getElementsByTagName('li');
var mnt=getObject(tagid+"_mn").getElementsByTagName('li').length;
if(!mnt)mnt=4;
for(var i=0;i<mnt;i++){
if(i == (x-1)){
if(i==0){
lim[i].className="tabactive1";
}
else{
lim[i].className="tabactive2";
lim[i-1].getElementsByTagName('a')[0].style.background="url()";
}
lim[i].getElementsByTagName('a')[0].style.background="url(tab/images/tab_bgs.gif) right -60px no-repeat";
try{getnews(tagid,x);}catch(e){alert(e);}
}
else{
lim[i].className="";
lim[i].getElementsByTagName('a')[0].style.background="url(tab/images/tab_bgs.gif) right -88px no-repeat";
}
}
}
var idn,tmpa,tmpat;
var aw="";
var rT;
function aet(tagid,etp){
var lis=getObject(tagid+"_mn").getElementsByTagName('li');
var wts=tagid+"_cnt";
var wnf=tagid+"info";
if(readcookie(tagid+"_cntd")=="none"){
hiddenList(getObject(wts));
maxh[wts]=readcookie(tagid+"_cnth");
getObject("pdate").innerText=readcookie("dStr");
}
else{
if(parseInt(readcookie(wnf))>1)
TabNews(tagid,readcookie(wnf));//返回上次访问
else
TabNews(tagid,1);
if(etp==1)aw=tagid+readcookie(wnf);
}
for(var iy=0;iy<lis.length;iy++){
with(lis[iy]){
if(etp==0){
lis[iy].onmouseover=function(){
rT=attributes.getNamedItem('id').value.substring(0, attributes.getNamedItem('id').value.length-1);
if(getObject(rT+'_cnt').style.display != "none"&&className!="") return;
idn=parseInt(attributes.getNamedItem('id').value.substring(attributes.getNamedItem('id').value.length-1, attributes.getNamedItem('id').value.length));
clearTimeout(waitInterval);
waitInterval=window.setTimeout("etype=0;TabNews(rT,idn);if(getObject(rT+'_cnt').style.display == 'none')displayList(rT+'_cnt'); SetCookie(rT+'info',idn,10000000);SetCookie(rT+'_cntd','ture',10000000);",MouseDelayTime);
}
lis[iy].onmouseout=function(){if(getObject(rT+'_cnt').style.display != "none"&&className!="") return;clearTimeout(waitInterval);}
}
if(etp==1){
lis[iy].onmouseover=function(){getElementsByTagName('a')[0].blur();}
lis[iy].onclick=function(){
idn=parseInt(attributes.getNamedItem('id').value.substring(attributes.getNamedItem('id').value.length-1, attributes.getNamedItem('id').value.length));
rT=attributes.getNamedItem('id').value.substring(0, attributes.getNamedItem('id').value.length-1);
if(getObject(rT+'_cnt').style.display != "none"&&(idn==1&&(this.className=="tabactive1")||aw==attributes.getNamedItem('id').value)) return true;
if(getObject(rT+'_cnt').style.display == "none"){
displayList(rT+'_cnt');SetCookie(rT+'_cntd','ture',10000000);
}
etype=1;
TabNews(rT,idn);
SetCookie(rT+'info',idn,10000000);
aw=attributes.getNamedItem('id').value;
getElementsByTagName('a')[0].blur();
return false;
}}}
}
}
function ata(objid){
var as=objid.getElementsByTagName('a');
for(var i=0;i<as.length;i++){
as[i].target="_self";
}
}
function GetUrlParam(paramName){ //获取URL参数的函数
var oRegex = new RegExp('[\?&]' + paramName + '=([^&]+)', 'i');
var oMatch = oRegex.exec(window.location.search);
if(oMatch && oMatch.length > 1)
return oMatch[1];
else
return '';
}
function hideText(){
if(document.getElementsByTagName("arkoo:title").length==0){
var upu=GetUrlParam("username");
var upa=GetUrlParam("articleid");
getObject("closeit").innerHTML='<a href="http://cn.arkoo.com/diaryfiles/showpage.aspx?username='+upu+'&articleid='+upa+'" target="_blank">查看原文</a> <a href="tab.html" target="_self">×</a>';
}
}
var maxh=new Object();
//显示内容框
function displayList(oid){
var h = 0;
var objid=getObject(oid);
if(isNaN(parseInt(maxh[oid]))) var max_h = 210; // 容器的最大高度
else
var max_h = maxh[oid];
var anim = function(){
h += 50; // 每次递增50像素
if(h >= max_h){
objid.style.height = max_h + "px";;
getObject('tab'+objid.attributes.getNamedItem('id').value).style.background="url(tab/images/tab_bgs.gif) 5px -113px no-repeat"; // 让图片标签改变背景
if(tt){window.clearInterval(tt);}
}
else{
objid.style.display="block";
objid.style.height = h + "px";
}
}
var tt = window.setInterval(anim,2);
}
// 隐藏列表框
function hiddenList(objid){
var h = objid.offsetHeight;
var anim = function(){
h -= 50; // 每次递减50像素
if(h <= 5){
objid.style.display="none";
getObject('tab'+objid.attributes.getNamedItem('id').value).style.background="url(tab/images/tab_bgs.gif) -14px -114px no-repeat";
if(tt){window.clearInterval(tt);}
}
else{
objid.style.height = h + "px";
}
}
var tt = window.setInterval(anim,2);
}
function showClassList(oid){
var objid=getObject(oid);
if(objid.style.display == "none"){
if(objid.getElementsByTagName("img").length==0)TabNews(oid.substring(0,oid.indexOf("_")),1);
displayList(oid); // 显示内容框
SetCookie(oid+'d',"ture",10000000);
}
else{
if(isNaN(parseInt(maxh[oid]))){
maxh[oid]=objid.offsetHeight; // 内容容器的初始高度
}
hiddenList(objid); // 隐藏内容框
SetCookie(oid+'d',"none",10000000);SetCookie(oid+'h',maxh[oid],10000000);
}
}
分享到:
相关推荐
### 雅虎、网易Ajax标签导航效果实现 #### 概述 本篇文章将通过一个具体实例来介绍如何使用Ajax技术实现类似雅虎、网易等网站中的标签导航效果。Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个...
标签中的“伪雅虎”进一步强调了我们关注的是仿制雅虎的视觉效果和交互体验,而“Tab标签”则明确了讨论的核心是网页布局和导航部分。 在提供的压缩包文件中,我们有以下几个文件: 1. logo.gif:这可能是用于网站...
标题中的“网易 雅虎 滑动门 效果”指的是在网页设计中常见的一种交互效果,通常用于导航菜单或图片展示,被称为“滑动门”(Sliding Doors)效果。这种效果得名于其操作方式,就像是门可以左右滑动开启,通过CSS...
《网易雅虎滑动门效果:JS特效与选项卡TAB实现详解》 滑动门效果是一种常见的网页交互设计,常用于导航菜单、选项卡切换等场景。网易与雅虎合作的这一滑动门效果,结合了JavaScript(JS)的动态功能和优雅的视觉...
标题中的“仿网易雅虎滑动门广告效果”是指一种网页设计技术,它通常用于创建吸引用户的互动式广告或导航菜单。这种效果以其独特的动画和交互性,使得用户在浏览网页时能有更丰富的体验。滑动门效果的灵感来源于实际...
【标题】"js雅虎tab标签效果.rar"指的是一个使用JavaScript实现的仿雅虎风格的Tab切换效果的压缩包资源。这种效果常用于网页设计,能够有效地组织和展示信息,提高用户体验。 【描述】"js雅虎tab标签效果"表明这个...
在网页设计中,"仿雅虎"的网页TAB选项卡效果是一种常见的用户界面设计元素,它可以帮助用户在多个相关的页面或内容之间进行便捷切换,而无需加载全新的页面。这种设计模式提高了用户体验,使得网站信息组织更为清晰...
在提供的文件名"jQueryTAB标签雅虎3屏标签式焦点图代码"中,`readme.md`可能包含了项目介绍、使用说明或者示例代码的文档,而`jQueryTAB标签雅虎3屏标签式焦点图代码`很可能是实现这个功能的具体JavaScript代码。...
网易雅虎的滑动门效果,经典的菜单效果,入门学习的好东西。
在实际应用中,滑动门和Tab标签页效果经常结合使用,比如在`模仿雅虎,一段非常漂亮的滑门代码.rar`中,很可能是一个结合了这两种效果的实例,它可能模拟了雅虎网站的导航结构,既具有滑动的边框效果,又有Tab切换的...
在JavaScript(JS)中实现类似雅虎首页的局部收缩效果是一项常见的前端开发任务,它可以提升网页的用户体验,尤其是在有限的空间内展示更多的信息。雅虎首页的收缩效果通常指的是当用户鼠标悬停在某个模块上时,该...
标签“yahoo 雅虎 导航 css JavaScript”揭示了这个压缩包内容的关键点。首先,“yahoo”和“雅虎”是提及的对象,意味着我们将讨论的是与雅虎网站设计相关的技术。其次,“导航”可能指的是页面上的导航栏或者内容...
标题中的“模仿雅虎日程安排系统jqueryAJAX”指的是创建一个类似雅虎日历功能的应用,使用jQuery库和AJAX技术实现动态交互。这个项目可能是为了学习或实践如何构建一个用户友好的在线日程管理工具,具备添加、编辑、...
在压缩包中的"YahooTab"文件很可能是一个具体的实例,展示了如何实现类似雅虎网站的标签式导航效果。这可能包括使用`<ul>`和`<li>`标签创建无序列表,每个列表项代表一个标签,然后通过CSS实现鼠标悬停时的高亮效果...
然而,"纯CSS实现的雅虎TAB效果"挑战了这一常规,通过CSS的灵活性和创新性,为开发者提供了一种无JavaScript依赖的解决方案。 首先,我们要理解CSS(层叠样式表)的基本原理。CSS是用于描述HTML或XML(包括SVG、...
"MiniTabbedPages雅虎TAB效果.rar"是一个包含JavaScript(JS)特效的资源包,主要目的是实现类似雅虎网站上的选项卡(TAB)效果。在网页设计中,选项卡是一种常见的用户界面元素,它允许在一个有限的空间内展示多个...
对于“雅虎系统”的界面实现,我们主要关注以下几个核心知识点: 1. **前端框架与库**:雅虎系统可能采用了诸如React、Angular或Vue.js这样的现代前端框架来构建其用户界面。这些框架提供了组件化开发方式,能够...
3. **AJAX异步通信**:为了实现快速登录注册,项目可能使用了AJAX(Asynchronous JavaScript and XML)技术,使用户在不刷新整个页面的情况下,与服务器交换数据并更新部分网页内容。这使得用户体验更加流畅,提高了...
【网易雅虎滑动门效果特效代码】是一种常见的网页交互设计技术,主要应用于网站导航菜单或者展示区域,为用户提供平滑、动态的视觉体验。这种效果最初由网易和雅虎等知名互联网公司采用,因此得名。在网页设计中,...
在进行前端开发中,为了提高用户体验,...当我们将上述知识点融入到实际的项目中时,可以参考文章提供的在线演示地址以及具体代码,对这些代码进行分析和调整,以实现具有仿雅虎首页风格的快捷登录入口和导航模块效果。