DHTML,经典应用——Tab菜单(山寨腾讯迷你首页)

DHTMLDynamic HTML)就是动态HTML,由网景公司和为图案公司提出,DHTML并不是一项新的技术,DHTML分为三个方面:htmlcssJavaScript,只是这三项技术的结合应用,是4.x 代浏览器应当支持的新技术,现在已经大规模的应用到各大大小小网站中,是网站实现动态交互的重要技术组成部分。总结一句话:由html做容器,以css控制样式,由JavaScript响应各种用户的动作来操作各个html元素。

今早无聊看腾讯新闻时,一时心血来潮,自己做了一个仿迷你首页的Tab菜单,虽然样子有点差别,但基本功能是一样的。以下看看最终的截图

Tab菜单制作并不复杂,以下我做个简单的介绍:

HTML部分代码:

<body>

<div id="tab">

<div id="daohang">

  <input type="button" id="fre"  on
Click="fre()">

  <div id="banner1" on
MouseOver="show(1)" style="display::">
新闻</div>

  <div id="banner2" on
MouseOver="show(2)" style="display::">
财经</div>

  <div id="banner3" on
MouseOver="show(3)" style="display::">
娱乐</div>

  <div id="banner4" on
MouseOver="show(4)" style="display::">
√体育</div>

  <div id="banner5" on
MouseOver="show(5)" style="display::">
汽车</div>

  <div id="banner6" on
MouseOver="show(6)" style="display:none;">
读书</div>

  <div id="banner7" on
MouseOver="show(7)" style="display:none;">
博客</div>

  <input type="button" id="back" on
Click="back()">

</div>

<div id="content">

   <div id="content1"  style="display:"> 新闻频道内容…</div>

   <div id="content2"  style="display:none;">财经频道内容…</div>

   <div id="content3"  style="display:none;">娱乐频道内容…</div>

   <div id="content4"  style="display:none;">√体育频道内容…</div>

   <div id="content5"  style="display:none;">汽车频道内容…</div>

   <div id="content6"  style="display:none;">读书频道内容…</div>

   <div id="content7"  style="display:none;">博客频道内容…</div>

</div>

</div>

</body>

代码分析:html部分比较简单,无非是用div 控制内容,和响应事件的动作。

 

Css部分:

<style type="text/css">

#tab{

width:435px;

height:auto;}

#daohang div{

width:73px;

height:23px;

border:A1DEFE solid 1px;

float:left;

margin-left:2px;

text-align:center;

padding-top:4px;

background:url(notfocus.jpg) no-repeat;

color:#0066A6;

font-size:14px;}

#back{

float:left;

width:25px;

height:23px;

border:A1DEFE solid 1px;

background:url(back.jpg) no-repeat;

margin-left:2px;}

#fre{

float:left;

width:25px;

height:23px;

border:A1DEFE solid 1px;

background:url(fre.jpg) no-repeat;

margin-left:2px;}

#fre:hover{

float:left;

width:25px;

height:23px;

border:A1DEFE solid 1px;

background:url(fre.jpg) no-repeat;

margin-left:2px;}

#content{

margin-top:5px;}

#content div{

clear:both;

border:#AADDFF solid 1px;

width:430px;

height:320px;}

.show{

display:;}

.hidden{

display:none;}

</style>

代码分析:除了常规的控制宽度、高度、边距的css代码,主要应用到display这个属性(html元素的显示方式),和伪类hover(鼠标放置在元素上时的css样式)

JavaScript部分:

<script language="javascript">

var fid=1;

var ffid=0;

function show(id)

{

  fsty=document.getElementById("content"+fid).style;

  nsty=document.getElementById("content"+id).style;

  switch(id)

   { case 1:

          document.getElementById("fre").disabled=true;

           break;

    case 7:

          document.getElementById("back").disabled=true;

           break;

      default:

         document.getElementById("fre").disabled=false;

         document.getElementById("back").disabled=false;

         break;

        }

   document.getElementById("banner"+fid).style.background=’url(notfocus.jpg) no-repeat’;

   document.getElementById("banner"+fid).style.color=”;

   document.getElementById("banner"+id).style.background=’url(show.jpg) no-repeat’;

   document.getElementById("banner"+id).style.color=’000000′;

   fsty.display=’none’;

   nsty.display=”;

   fid=id;

}

function back()

{

    if(ffid<2)

      {

           ffid=ffid+1;

         document.getElementById("banner"+ffid).style.display=’none’;

           lastid=ffid+5;

            document.getElementById("banner"+lastid).style.display=”;

      }

}

function fre()

{ 

    if(ffid>0)

      {

         document.getElementById("banner"+ffid).style.display=”;

           lastid=ffid+5;

            document.getElementById("banner"+lastid).style.display=’none’;

            ffid=ffid-1;

      }

}

</script>

代码分析:这个是最核心的部分了,通过JavaScript控制元素的显示情况和样式变化,限于篇幅,不能一行行解释,在这个JavaScript中写了三个函数show(int)fre()back()show()主要是控制鼠标放在不同按钮上显示出不同的内容和样式变化,fre()back()主要是在控制导航栏显示的按钮(总共有7个栏目,但只显示5个,通过按钮控制显示的导航按钮)

核心在于全局变量fidffid的运用,通过fidffid记录上一次的动作,通过用户的动作的不同判断当前情况下,显示内容的变化和样式变化。(由于做的比较粗糙,代码有点长,花点时间可以将代码简化)

图片部分:

     图片 图片  图片  图片
    这部分比较简单,做四张图片就可以了,单纯渐变做的话比较生硬,没有高光效果,可以用多几个图层,上淡的颜色,再高斯模糊,大功告成,掌声响起~~~


关键词:,

转载注明:转自风致雅阁

  1. No comments yet.

  1. No trackbacks yet.







2012 五月
« 十一    
 123456
78910111213
14151617181920
21222324252627
28293031