window.onload=function() { nav(); search(); banner(); var p1=new Tab('btnList'); p1.init(); var fn=new Servi('servi'); fn.fnOver(); fn.fnOut(); about(); new Tab2(); contactLForm(); scrollTop(); }; //nav导航 function nav() { var oUl=getByClass('nav')[0]; var aLi=oUl.getElementsByTagName('li'); var oHeader=document.getElementById('header'); var oColTitBar=document.getElementById('colTitBar'); var oColTitBar2=document.getElementById('colTitBar2'); var oColTitBar3=document.getElementById('colTitBar3'); var oContact=document.getElementById('Contact'); var arr=[pos(oHeader).top,pos(oColTitBar).top,pos(oColTitBar2).top,pos(oColTitBar3).top,pos(oContact).top] var iCur = 0; var iSpeed = 0; var iTimer = null; var iBtn = false; var num=0; (function() { //初始第一个背景 aLi[0].style.background='#fd8200'; aLi[0].s=true; })(); for(var i=0;i<aLi.length;i++) { aLi[i].onmouseover=function() { if(!this.s) { this.style.background='#fd8200' } }; aLi[i].onmouseout=function() { if(!this.s){ this.style.background=''; } }; aLi[i].index=i; aLi[i].onclick=function() { num=this.index; for(var i=0;i<aLi.length;i++) { aLi[i].style.background=''; aLi[i].s=''; } this.style.background='#fd8200'; this.s=true; window.onscroll = function() { if (iBtn == false) { clearInterval(iTimer); } iBtn = false; }; clearInterval(iTimer); iTimer = setInterval(function() { iCur = document.documentElement.scrollTop || document.body.scrollTop; iSpeed = Math.floor((arr[num] - iCur) / 5); if (iCur == arr[num]) { clearInterval(iTimer); } else { document.documentElement.scrollTop = document.body.scrollTop = iCur+iSpeed; } iBtn = true; }, 30); }; } document.onmousewheel=fnMouse; //滚轮事件 if (document.addEventListener) { document.addEventListener('DOMMouseScroll', fnMouse, false); } function fnMouse() { for(var i=0;i<arr.length;i++) { aLi[i].style.background=''; if(scrollY()>=arr[i] && scrollY()<arr[i+1]) { aLi[i].style.background='#fd8200'; }; if(scrollY()>=arr[arr.length-1]) { aLi[arr.length-1].style.background='#fd8200'; }; } }; }; //search function search() { var oSear=getByClass('search')[0]; var oForm=oSear.getElementsByTagName('form')[0]; var oBtn=oSear.getElementsByTagName('a')[0]; var iBtn=true; oBtn.onclick=function() { if(iBtn) { oForm.style.display='block'; var ih=oForm.offsetHeight; oForm.style.height=0; startMove(oForm,{ height : 30 },8) iBtn=false; }else { startMove(oForm,{ height :0 },8,function() { oForm.style.display='none'; iBtn=true; }) } } }; //banner function banner() { var oBan=document.getElementById('banner'); var oBtnL=document.getElementById('btnL'); var oBtnR=document.getElementById('btnR'); var oUl=document.getElementById('banList'); var aLi=oUl.getElementsByTagName('li'); var iLeft=oBtnL.offsetLeft; var iWidth=viewW(); var num=0; var iBtn=true; var oPicBoxL=getByClass('picBoxL')[0]; var oPicBoxR=getByClass('picBoxR')[0]; oBan.onmouseover=function() { startMove(oBtnL,{ left :0 },8) startMove(oBtnR,{ right :0 },8) } oBan.onmouseout=function() { startMove(oBtnL,{ left :iLeft },8) startMove(oBtnR,{ right :-52 },8) } oUl.style.width=iWidth*3+'px'; for(var i=0;i<aLi.length;i++) { aLi[i].style.width=oUl.offsetWidth/3+'px'; }; $('#btnL').on('click',function() { if(!iBtn) return; iBtn=false; num++ $('.picBoxL').eq(num).css('left',aLi[0].offsetWidth) $('.picBoxR').eq(num).css('left',aLi[0].offsetWidth) $('#banList').animate({ left : -num*aLi[0].offsetWidth },1200,function() { if(num==aLi.length-1) { $(aLi[0]).css('left',$('#banList').width()) $('.picBoxL').eq(0).css('left',aLi[0].offsetWidth); $('.picBoxR').eq(0).css('left',aLi[0].offsetWidth); }; if(num==aLi.length) { num=0; $('#banList').css('left',0); $(aLi[0]).css('left',0); $('.picBoxL').eq(0).animate({ left :0 },500); $('.picBoxR').eq(0).animate({ left :0 },1000); }; iBtn=true; }); $('.picBoxL').eq(num-1).animate({ left : -num*aLi[0].offsetWidth },300,function() { $('.picBoxL').eq(num-1).animate({ left : 0 },1200); $('.picBoxL').eq(num).animate({ left : 0 },1200) }) $('.picBoxR').eq(num-1).animate({ left : -num*aLi[0].offsetWidth },500,function() { $('.picBoxR').eq(num-1).animate({ left : 0 },1200); $('.picBoxR').eq(num).animate({ left : 0 },1200); }) }); $('#btnR').on('click',function() { if(!iBtn) return; iBtn=false; if(num==0) { num=aLi.length; $('#banList').css('left',-$('#banList').width()) $(aLi[0]).css('left',$('#banList').width()) } num-- $('.picBoxL').eq(num+1).css('left',aLi[0].offsetWidth) //初始位置 $('.picBoxR').eq(num+1).css('left',aLi[0].offsetWidth) $('#banList').animate({ left : -num*aLi[0].offsetWidth },600,function(){ if(num<aLi.length-1) { $(aLi[0]).css('left',0) $('.picBoxL').eq(0).css('left',-aLi[0].offsetWidth); $('.picBoxR').eq(0).css('left',-aLi[0].offsetWidth); } iBtn=true; }); $('.picBoxL').eq(num).animate({ left : -num*aLi[0].offsetWidth },600,function() { $('.picBoxL').eq(num).animate({ left : 0 },600); $('.picBoxL').eq(num+1).animate({ left : 0 },600) }) $('.picBoxR').eq(num).animate({ left : -num*aLi[0].offsetWidth },300,function() { $('.picBoxR').eq(num).animate({ left : 0 },600); $('.picBoxR').eq(num+1).animate({ left : 0 },600); }) }); }; //Tab面向对象写法 function Tab(id) { this.oBtnList=document.getElementById(id); this.aBtn=this.oBtnList.getElementsByTagName('a'); this.oConList=document.getElementById('conList'); this.aUl=this.oConList.getElementsByTagName('ul'); this.num=0; } Tab.prototype.init=function() { conListUl(this.num); //传参num对应相应的Ul var This=this; this.aBtn[0].style.background='#fd8200'; //初始化第一个aBtn的状态 this.aBtn[0].style.color='#fff'; for( var i=0;i<this.aBtn.length;i++) { this.aBtn[i].index=i; this.aBtn[i].onclick=function() { This.num=this.index This.fnClick(); } this.aBtn[i].onmouseover=function() { This.num=this.index This.fnMouse(); } this.aBtn[i].onmouseout=function() { This.fnOut(); } } } Tab.prototype.fnClick=function() { for( var i=0;i<this.aBtn.length;i++) { this.aUl[i].style.display='none'; this.aBtn[i].style.background=''; this.aBtn[i].style.color='#000'; this.aBtn[i].s=''; } this.aBtn[this.num].style.background='#fd8200'; this.aBtn[this.num].style.color='#fff'; this.aUl[this.num].style.display='block'; this.aBtn[this.num].s=true; conListUl(this.num); } Tab.prototype.fnMouse=function() { if(!this.aBtn[this.num].s) { this.aBtn[this.num].style.color='#fff'; } } Tab.prototype.fnOut=function() { if(!this.aBtn[this.num].s) { this.aBtn[this.num].style.color='#000'; } }; //tab普通写法 /*function btnList () { var oBtnList=document.getElementById('btnList'); var aBtn=oBtnList.getElementsByTagName('a'); var oConList=document.getElementById('conList'); var aUl=oConList.getElementsByTagName('ul'); for( var i=0;i<aBtn.length;i++) { aBtn[i].index=i; aBtn[i].onclick=function() { for( var i=0;i<aBtn.length;i++) { aUl[i].style.display='none'; aBtn[i].style.background=''; aBtn[i].style.color='#000'; aBtn[i].s=''; } this.style.background='#fd8200'; this.style.color='#fff'; aUl[this.index].style.display='block'; this.s=true; } aBtn[i].onmouseover=function() { if(!this.s) { this.style.color='#fff'; } } aBtn[i].onmouseout=function() { if(!this.s) { this.style.color='#000'; //this.style.background=''; } } } }*/ //conList里li function conListUl(num) { var oConList=document.getElementById('conList'); var oUl=oConList.getElementsByTagName('ul')[num]; var aLi=oUl.getElementsByTagName('li'); var aH2=oUl.getElementsByTagName('h2'); for(var i=0;i<aH2.length;i++) { //初始所有的h2高度为0 aH2[i].style.height=0; }; for(var i=0;i<aLi.length;i++) { aLi[i].onmouseover=function() { var oH2=this.getElementsByTagName('h2')[0]; oH2.style.display='block'; oH2.style.paddingTop='10px'; oH2.style.paddingBottom='10px'; //oH2.style.height=0; 此处不能设置否则出bug startMove(oH2,{ height : 35 },8) }; aLi[i].onmouseout=function() { var oH2=this.getElementsByTagName('h2')[0]; startMove(oH2,{ height : 0, paddingTop:0, paddingBottom:0 },5,function() { oH2.style.display='none'; }) }; } }; //servi 面向对象 function Servi(id) { this.oServi=document.getElementById(id); this.aLi=this.oServi.getElementsByTagName('li'); var This=this; this.num=0; for(var i=0;i<this.aLi.length;i++) { this.aLi[i].index=i; this.aLi[i].onmouseover=function() { This.num=this.index; This.fnOver(); }; this.aLi[i].onmouseout=function() { This.num=this.index; This.fnOut(); }; } }; Servi.prototype.fnOver=function() { this.oPicL=getByClass('picL')[this.num]; this.oPicR=getByClass('picR')[this.num]; this.oServiBg=getByClass('serviBg')[this.num]; startMove(this.oPicL,{ left : -this.aLi[0].offsetWidth+40 },6); startMove(this.oPicR,{ left : 0 },6); startMove(this.oServiBg,{ opacity : 100 },8) } Servi.prototype.fnOut=function() { this.oPicL=getByClass('picL')[this.num]; this.oPicR=getByClass('picR')[this.num]; this.oServiBg=getByClass('serviBg')[this.num]; startMove(this.oPicL,{ left : 0 },6) startMove(this.oPicR,{ left : -this.aLi[0].offsetWidth+20 },6) startMove(this.oServiBg,{ opacity : 0 },8) }; //servi普通写法 /*function servi() { var oServi=document.getElementById('servi'); var aLi=oServi.getElementsByTagName('li'); var num=0; for(var i=0;i<aLi.length;i++) { aLi[i].index=i; aLi[i].onmouseover=function() { num=this.index; var oPicL=getByClass('picL')[num]; var oPicR=getByClass('picR')[num]; var oServiBg=getByClass('serviBg')[num]; startMove(oPicL,{ left : -aLi[0].offsetWidth+40 },6); startMove(oPicR,{ left : 0 },6); startMove(oServiBg,{ opacity : 100 },8) }; aLi[i].onmouseout=function() { num=this.index; var oPicL=getByClass('picL')[num]; var oPicR=getByClass('picR')[num]; var oServiBg=getByClass('serviBg')[num]; startMove(oPicL,{ left : 0 },6) startMove(oPicR,{ left : -aLi[0].offsetWidth+20 },6) startMove(oServiBg,{ opacity : 0 },8) }; } }*/ //about function about() { var oAbout=document.getElementById('about'); var aLi=oAbout.getElementsByTagName('li'); var num=0; for(var i=0;i<aLi.length;i++) { aLi[i].index=i; aLi[i].onmouseover=function() { //alert('a') num=this.index; var oSpan=this.getElementsByTagName('span')[0]; startMove(oSpan,{ opacity : 70 },6) }; aLi[i].onmouseout=function() { //num=this.index; var oSpan=this.getElementsByTagName('span')[0]; startMove(oSpan,{ opacity : 0 },6) } } }; //aboutBtn面向对象写法 function Tab2() { this.oAboutBtn=document.getElementById('aboutBtn'); this.aA=this.oAboutBtn.getElementsByTagName('a'); this.aAboutContent=getByClass('aboutContent'); this.num=0; var This=this; for(var i=0;i<this.aA.length;i++) { this.aA[i].index=i; this.aA[i].onclick=function() { This.num=this.index; This.fnClick(); } } } Tab2.prototype.fnClick=function() { for(var i=0;i<this.aA.length;i++) { this.aA[i].style.background='#5e5e5e'; this.aA[i].className=''; this.aAboutContent[i].style.display='none'; } this.aA[this.num].style.background='#fff'; this.aA[this.num].className='active'; this.aAboutContent[this.num].style.display='block'; }; //普通写法 /*function aboutBtn() { var oAboutBtn=document.getElementById('aboutBtn'); var aA=oAboutBtn.getElementsByTagName('a'); var aAboutContent=getByClass('aboutContent'); for(var i=0;i<aA.length;i++) { aA[i].index=i; aA[i].onclick=function() { for(var i=0;i<aA.length;i++) { aA[i].style.background='#5e5e5e'; aA[i].className=''; aAboutContent[i].style.display='none'; } this.style.background='#fff'; this.className='active'; aAboutContent[this.index].style.display='block'; } } }*/ //表单光标获取 function contactLForm() { var oContactL=getByClass('contactL')[0]; var aInp=oContactL.getElementsByTagName('input'); var oTextarea=oContactL.getElementsByTagName('textarea')[0]; for(var i=0;i<aInp.length;i++) { form(aInp[i],i) } form(oTextarea,4) } function form(obj,i) { var arr=['填写姓名','联系电话','电子邮件','您的公司','填写详细要求']; var num=i; var iBtn=true; obj.onfocus=function() { if(iBtn) { this.value=''; this.style.color='#000'; iBtn=false; } }; obj.onblur=function() { if(this.value=='') { this.value=arr[num]; this.style.color='#ccc'; iBtn=true; } }; }; //向上滚动 function scrollTop() { var iTimer = null; var iBtn = false; var oDiv=getByClass('scrollTop')[0]; //oDiv.style.display='none'; window.onscroll=function() { if (iBtn == false) { clearInterval(iTimer); } iBtn = false; }; oDiv.style.display='block'; oDiv.onmouseover=function() { this.className='scrollTopCur'; } oDiv.onmouseout=function() { this.className='scrollTop'; } oDiv.onclick=function() { clearInterval(iTimer); var iCur = 0; var iSpeed = 0; iTimer = setInterval(function() { iCur = document.documentElement.scrollTop || document.body.scrollTop; iSpeed = Math.floor((0 - iCur) / 8); if (iCur == 0) { clearInterval(iTimer); } else { document.documentElement.scrollTop = document.body.scrollTop = iCur + iSpeed; } iBtn = true; }, 30); }; }; // 滚动条高 function scrollY() { return document.documentElement.scrollTop || document.body.scrollTop; }; //可视区的宽 function viewW() { return document.documentElement.clientWidth; } //运动框架 function startMove(obj, json,speed, fn) { clearInterval(obj.iTimer); var iCur = 0; var iSpeed = 0; obj.iTimer = setInterval(function() { var iBtn = true; for (var attr in json) { if (attr == 'opacity') { iCur = Math.round(css(obj, 'opacity') * 100); } else { iCur = parseInt(css(obj, attr)); } iSpeed = (json[attr] - iCur) / speed; iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed); if (iCur != json[attr]) { iBtn = false; if (attr == 'opacity') { obj.style.opacity = (iCur + iSpeed) / 100; obj.style.filter = 'alpha(opacity='+(iCur + iSpeed)+')'; } else { obj.style[attr] = iCur + iSpeed + 'px'; } } } if (iBtn) { clearInterval(obj.iTimer); fn && fn.call(obj); } }, 20); } function css(obj, attr) { if (obj.currentStyle) { return obj.currentStyle[attr]; } else { return getComputedStyle(obj, false)[attr]; } } //获取className function getByClass(sClass,parent) { var aEles=(parent || document).getElementsByTagName('*'); var re=new RegExp('\\b'+ sClass + '\\b'); var arr=[]; for(var i=0;i<aEles.length;i++) { if(re.test(aEles[i].className)) { arr.push(aEles[i]) } } return arr; } //obj到页面顶部实际距离 function pos(obj) { var result={left:0,top:0}; while(obj) { result.top+=obj.offsetTop; result.top+=obj.offsetLeft; obj=obj.offsetParent; } return result; };
20131211原生js代码
关注我
我的微信公众号:前端开发博客,在后台回复以下关键字可以获取资源。
- 回复「小抄」,领取Vue、JavaScript 和 WebComponent 小抄 PDF
- 回复「Vue脑图」获取 Vue 相关脑图
- 回复「思维图」获取 JavaScript 相关思维图
- 回复「简历」获取简历制作建议
- 回复「简历模板」获取精选的简历模板
- 回复「加群」进入500人前端精英群
- 回复「电子书」下载我整理的大量前端资源,含面试、Vue实战项目、CSS和JavaScript电子书等。
- 回复「知识点」下载高清JavaScript知识点图谱
每日分享有用的前端开发知识,加我微信:caibaojian89 交流