最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS+CSS簡單樹形菜單實現(xiàn)方法

 更新時間:2015年09月12日 17:28:40   作者:企鵝  
這篇文章主要介紹了JS+CSS簡單樹形菜單實現(xiàn)方法,涉及JavaScript結(jié)合css動態(tài)操作頁面元素結(jié)點的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了JS+CSS簡單樹形菜單實現(xiàn)方法。分享給大家供大家參考。具體如下:

這是一款不錯的CSS樹形菜單,樹狀列表,當(dāng)然不全是CSS實現(xiàn),部分功能還使用了JavaScript代碼進行配合,刪減了修飾用的菜單圖片,大家用的時候自己圖片加進去,IMG標(biāo)簽大部分都預(yù)留了出來,稍懂Html語法的朋友很容易就看懂的。

運行效果截圖如下:

在線演示地址如下:

http://demo.jb51.net/js/2015/js-css-simple-tree-menu-style-codes/

具體代碼如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>樹狀列表</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<style>
*{margin:0px;padding:0px;}
A:link{color: #000000; TEXT-DECORATION: none;}
A:visited {COLOR: #000000; TEXT-DECORATION: none}
A:active {COLOR: #3333ff; TEXT-DECORATION: none}
A:hover {COLOR: #ff0000; TEXT-DECORATION: none}
.panel{ BACKGROUND: #DDE4EA; COLOR:#654125;}
ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
img{
  border:0px;
  width:16px;
  height:16px;
}
#menu{
  margin-top: 0px;
}
.U1 {
  background: #FFFFFF;
  border-bottom:1px #9D9D9D solid;
}
.L1 a:link, .L1 a:visited{
  color: #476074;
  background: url("");
  font-size:9pt;
  display: block;
  text-decoration: none;
  height: 24px;
}
.L1 a:link span, .L1 a:visited span{
 background: url("") no-repeat left;
 padding-left: 15px;
 height:24px;
 vertical-align:middle;
 padding:7px 0px 0px 16px;
 cursor:pointer;
 width:100%;
}
.L1 a:hover{
  color: #000000;
  font-weight:bold;
  background: url("");
  background-position: 0 -24px;
}
/* 一級菜單 active 效果 */
.L1 a:link.active, .L1 a:hover.active, .L1 a:active.active, .L1 a:visited.active{
  background: url("");
  background-position: 0 -24px;
}
.L1 a:link.active span, .L1 a:hover.active span, .L1 a:active.active span, .L1 a:visited.active span{
  color: #000000;
  font-weight:bold;
  background: url("") no-repeat left;
}
.L21 a:link, .L21 a:visited, .L22 a:link, .L22 a:visited, .L3 a:link, .L3 a:visited{
  color: #444659;
  background: none;
  height: 24px;
  font-size:9pt;
  display: block;
  text-decoration: none;
  padding-left: 13px;
  background: none;
}
.L21 a:link span, .L21 a:visited span, .L22 a:link span, .L22 a:visited span, .L3 a:link span, .L3 a:visited span{
 vertical-align:middle;
 padding:7px 0px 0px 16px;
 background: url("") no-repeat left center;
 cursor:pointer;
 width:100%;
}
.L22 a:link span, .L22 a:visited span, .L3 a:link span, .L3 a:visited span{
 background:none;
}
.L21 a:hover, .L22 a:hover, .L3 a:hover{
  background: url("") no-repeat top left;
  font-weight:bold;
}
.L3 a:link span, .L3 a:visited span{
  padding:7px 0px 0px 26px;
}
.L4 a:link span, .L4 a:visited span{
  padding:7px 0px 0px 36px;
}
/* 二級菜單 active 效果 */
.L21 a:link.active, .L21 a:hover.active, .L21 a:active.active, .L21 a:visited.active{
  background: none;
}
.L21 a:link.active span, .L21 a:hover.active span, .L21 a:active.active span, .L21 a:visited.active span{
  color: #000000;
  font-weight:bold;
  background: url("") no-repeat left center;
}
/* 二、三級菜單 active */
.L22 a:link.active, .L22 a:hover.active, .L22 a:active.active, .L22 a:visited.active,
.L3 a:link.active, .L3 a:hover.active, .L3 a:active.active, .L3 a:visited.active{
  background: url("") no-repeat left;
  background-position: 0 -24px;
}
.L22 a:link.active span, .L22 a:hover.active span, .L22 a:active.active span, .L22 a:visited.active span,
.L3 a:link.active span, .L3 a:hover.active span, .L3 a:active.active span, .L3 a:visited.active span{
  color: #FFFFFF;
  font-weight:bold;
  background: none;
}
.Ls{
  text-align:right;
  padding-top:4px;
  height:20px;
  font-size:9pt;
}
.setting:link, .setting:visited{
  text-decoration: underline;
  display:block;
}
</style>
</head>
<body class="panel" onLoad="init();">
<div id="sub_tabs" class="sub_tabs"></div>
 <div id="body">
 <!-- OA樹開始-->
<ul id="menu"> 
<!--路政報表菜單 -->
<li class="L1"><a href="javascript:c('m01');" id="m01"><span><img src="" align="absMiddle"/> 路政報表</span></a></li>
<ul id="m01d" style="display:none;" class="U1">
<li class="L21"><a href="javascript:c('f40');" id="f40"><span><img src="" align="absMiddle"/> 路政報表1</span></a></li>
 <ul id="f40d" style="display:none;">
 <li class="L3"><a href="javascript:c('f42');"><span><img src= align="absMiddle"/> 報表內(nèi)容</span></a></li>
  <ul id="f42d" style="display:none;"><li class="L4" ><a href="#"><span><img src= align="absMiddle"/>子報表內(nèi)容</span></a></li></ul>
 <li class="L3"><a href="#"><span><img src="" align="absMiddle"/> 報表內(nèi)容</span></a></li>
 </ul>
<li class="L21"><a href="javascript:c('f41');" id="f41"><span><img src="" align="absMiddle"/> 路政報表2</span></a></li>
 <ul id="f41d" style="display:none;">
 <li class="L3"><a href="#"><span><img src="" align="absMiddle"/>報表內(nèi)容</span></a></li>
 <li class="L3"><a href="#"><span><img src="" align="absMiddle"/>報表內(nèi)容</span></a></li> 
 </ul>
<li class="L22"><a href="#"><span><img src="" /> 報表內(nèi)容</span></a></li>
<li class="L22"><a href="#"><span><img src="" /> 報表內(nèi)容</span></a></li>
<li class="L22"><a href="#"><span><img src="" /> 報表內(nèi)容</span></a></li>
</ul>
<!--路政報表菜單 結(jié)束 -->
<!--路政報表菜單 -->
<li class="L1"><a href="javascript:c('m03');" id="m03"><span><img src="" align="absMiddle"/> 路政報表</span></a></li>
<ul id="m03d" style="display:none;" class="U1">
<li class="L21"><a href="javascript:c('f42');" id="f42"><span><img src= align="absMiddle"/> 路政報表1</span></a></li>
 <ul id="f42d" style="display:none;">
 <li class="L3"><a href="#"><span><img src="" align="absMiddle"/> 報表內(nèi)容</span></a></li>
 <li class="L3"><a href="#"><span><img src="" align="absMiddle"/> 報表內(nèi)容</span></a></li>
 </ul>
<li class="L21"><a href="javascript:c('f43');" id="f43"><span><img src= align="absMiddle"/> 路政報表2</span></a></li>
 <ul id="f43d" style="display:none;">
 <li class="L3"><a href="#"><span><img src= align="absMiddle"/>報表內(nèi)容</span></a></li>
 <li class="L3"><a href="#"><span><img src= align="absMiddle"/>報表內(nèi)容</span></a></li> 
 </ul>
<li class="L22"><a href="#"><span><img src="" /> 報表內(nèi)容</span></a></li>
<li class="L22"><a href="#"><span><img src="" /> 報表內(nèi)容</span></a></li>
<li class="L22"><a href="#"><span><img src="" /> 報表內(nèi)容</span></a></li>
<li class="L22"><a href="#"><span><img src="" /> 報表內(nèi)容</span></a></li>
<li class="L22"><a href="#"><span><img src="" /> 報表內(nèi)容</span></a></li>
</ul>
<!--路政報表菜單 結(jié)束 -->
</ul>
</ul>
</div>
<script language="JavaScript">
window.onresize=function()
{
  if(!parent.$('frame1')) return;
  var rows = parent.$('frame1').rows.split(",");
  if(rows.length < 2 || rows[1]!="*") return;
  $("bottom_center").style.width = "0px";
  if(document.body.clientHeight > $("sub_tabs").clientHeight+$("bottom").clientHeight)
   $("body").style.height=(document.body.clientHeight-$("sub_tabs").clientHeight-$("bottom").clientHeight)+"px";
  var widthTotal = parseInt($("bottom").clientWidth);
  var widthLeft = parseInt($("bottom_left").clientWidth);
  var widthRight = parseInt($("bottom_right").clientWidth);
  if(!isNaN(widthTotal) && !isNaN(widthLeft) && !isNaN(widthRight))
  {
   $("bottom_center").style.width = widthTotal - widthLeft - widthRight + "px";
  }
};
function init()
{
  window.onresize();
}
var sub_menu="1";
function view_menu(id)
{
  set_current("");
  if($("menu").innerHTML.toLowerCase().indexOf("<li") >= 0)
   $("menu_code_"+sub_menu).innerText=$("menu").innerHTML;
  if($("menu_code_"+id).innerText=="" || isUndefined($("menu_code_"+id).innerText))
  {
   $("menu").innerHTML="<img src='/images/loading.gif' align='absMiddle'> 加載中,請稍候……";
   if(id==2) args="MENU_TYPE=SHORTCUT&OA_SUB_WINDOW=0&MENU_DISPLAY=";
   else if(id==3) args="MENU_TYPE=OA&OA_SUB_WINDOW=0";
   else if(id==4) args="MENU_TYPE=FAV&OA_SUB_WINDOW=0";
   else if(id==5) args="MENU_TYPE=FIS&OA_SUB_WINDOW=0";
   else args="OA_SUB_WINDOW=0";
   _get("menu_code.php", args, update_menu, true);
  }
  else
  {
   $("menu").innerHTML=$("menu_code_"+id).innerText;
  }
  if($('link_'+sub_menu))
   $('link_'+sub_menu).className="";
  $('link_'+id).className="active";
  sub_menu=id;
  setCookie("MENU_UI_1", id);
  if(id == 5)
  {
   openURL("http://m.fzitv.net/");
  }
}
function update_menu(req)
{
  if(req.status == 200)
  {
   if(req.responseText=="")
     $("menu").innerHTML="<div style='padding:10px;'>無可訪問菜單</div>";
   else
   {
     $("menu").innerHTML=req.responseText;
     if(sub_menu == 2) c('mMENU_SHORTCUT');
   }
  }
  else
  {
   $("menu").innerHTML="<div style='padding:10px;'>錯誤:"+req.status+"</div>";
  }
}
var cur_id="",cur_expand="";
var flag=0,sflag=0;
//-------- 菜單點擊事件 -------
function c(id)
{
 var targetid,targetelement;
 var strbuf;
 var el=$(id);
 if(!el)
   return;
 //-------- 如果點擊了展開或收縮按鈕---------
 targetid=el.id+"d";
 targetelement=$(targetid);
 var expandUL=$(cur_expand+"d");
 var expandLink=$(cur_expand);
 if (targetelement.style.display=="none")
 {
   if(expandUL && expandLink && el.id.substr(0,1)=="m")
   {
    expandLink.className="";
    expandUL.style.display='none';
   }
   if(el.id.substr(0,1)=="m")
    cur_expand=el.id;
   el.className="active";
   targetelement.style.display='';
   menu_flag=0;
   //$("expand_link").src="images/green_minus.gif";
 }
 else
 {
   el.className="";
   targetelement.style.display="none";
   menu_flag=1;
   //$("expand_link").src="images/green_plus.gif";
   var links=document.getElementsByTagName("A");
   for (i=0; i<links.length; i++)
   {
    el=links[i];
    if(el.parentNode.className.toUpperCase()=="L1" && el.className=="active" && el.id.substr(0,1)=="m")
    {
     menu_flag=0;
     // $("expand_link").src="images/green_minus.gif";
     break;
    }
   }
 }
}
//-------- 打開網(wǎng)址 -------
var $ = function(id) {return document.getElementById(id);};
var userAgent = navigator.userAgent.toLowerCase();
var is_opera = userAgent.indexOf('opera') != -1 && opera.version();
var is_ie = (userAgent.indexOf('msie') != -1 && !is_opera) && userAgent.substr(userAgent.indexOf('msie') + 5, 3);
function MouseOverBtn(){event.srcElement.className+="Hover";}
function MouseOutBtn() {event.srcElement.className=event.srcElement.className.substr(0,event.srcElement.className.indexOf("Hover"));}
function CorrectButton()
{
  var inputs=document.getElementsByTagName("INPUT");
  for(var i=0; i<inputs.length; i++)
  {
   var el = inputs[i];
   var elType = el.type.toLowerCase();
   var elClass = el.className.toLowerCase();
   var elLength = Math.ceil(el.value.replace(/[^\x00-\xff]/g,"**").length/2);
   if(elType!="button" && elType!="submit" && elType!="reset" || elClass!="bigbutton"&&elClass!="smallbutton")
     continue;
   if(elLength<=3)
     el.className+="A";
   else if(elLength==4)
     el.className+="B";
   else if(elLength>=5 && elLength<=7)
     el.className+="C";
   else if(elLength>=8 && elLength<=11)
     el.className+="D";
   else
     el.className+="E";
   if(is_ie)
   {
     el.attachEvent("onmouseover", MouseOverBtn);
     el.attachEvent("onmouseout", MouseOutBtn);
   }
  }
}
if(is_ie)
  window.attachEvent("onload", CorrectButton);
else
  window.addEventListener("load", CorrectButton,false);
</script>
 </body>
</html>

希望本文所述對大家的JavaScript程序設(shè)計有所幫助。

相關(guān)文章

  • ECharts鼠標(biāo)事件的處理方法詳解

    ECharts鼠標(biāo)事件的處理方法詳解

    最近一直在使用echarts,當(dāng)然也被其中的各種屬性整的有些頭大,這篇文章主要給大家介紹了關(guān)于ECharts鼠標(biāo)事件處理的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • 詳解Typescript 內(nèi)置的模塊導(dǎo)入兼容方式

    詳解Typescript 內(nèi)置的模塊導(dǎo)入兼容方式

    這篇文章主要介紹了詳解Typescript 內(nèi)置的模塊導(dǎo)入兼容方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 復(fù)制Input內(nèi)容的js代碼_支持所有瀏覽器,修正了Firefox3.5以上的問題

    復(fù)制Input內(nèi)容的js代碼_支持所有瀏覽器,修正了Firefox3.5以上的問題

    今天作一個功能,有一個input,里邊有內(nèi)容,點一下按鈕就復(fù)制里邊的內(nèi)容到剪貼板
    2010-06-06
  • JavaScript數(shù)組reduce常見實例方法

    JavaScript數(shù)組reduce常見實例方法

    reduce方法在數(shù)組的每個元素上執(zhí)行用戶提供的回調(diào)函數(shù),即"reducer",它傳入對前一個元素進行計算的返回值,結(jié)果是單個值,它是在數(shù)組的所有元素上運行reducer的結(jié)果,下面這篇文章主要給大家介紹了關(guān)于JavaScript數(shù)組reduce常見實例方法的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • 模仿IE自動完成功能

    模仿IE自動完成功能

    模仿IE自動完成功能...
    2006-10-10
  • JavaScript數(shù)組中相同的元素進行分組(數(shù)據(jù)聚合)groupBy函數(shù)詳解

    JavaScript數(shù)組中相同的元素進行分組(數(shù)據(jù)聚合)groupBy函數(shù)詳解

    今天在打算從js端時序數(shù)據(jù)庫TSDB中,按相同的類型的數(shù)據(jù)排在一起,并且取同一時間段最新的數(shù)據(jù),經(jīng)過查詢這種思想叫做數(shù)據(jù)聚合,就是返回的數(shù)據(jù)要根據(jù)一個屬性來做計算,這篇文章主要介紹了JavaScript數(shù)組中相同的元素進行分組(數(shù)據(jù)聚合)?groupBy函數(shù),需要的朋友可以參考下
    2023-12-12
  • JavaScript 替換Html標(biāo)簽實現(xiàn)代碼

    JavaScript 替換Html標(biāo)簽實現(xiàn)代碼

    這種技術(shù)被廣泛應(yīng)用于表單驗證,語法高亮和危險字符過濾中。一段話如果很長,如果不想像下面那樣替換,我們得想些辦法了。
    2009-10-10
  • Webpack?5新特性學(xué)習(xí)與性能優(yōu)化實踐

    Webpack?5新特性學(xué)習(xí)與性能優(yōu)化實踐

    Webpack?5的新特性和改進為前端開發(fā)者提供了更強大、更高效的構(gòu)建工具,通過內(nèi)置的持久性緩存插件、優(yōu)化的默認配置、Webpack?CLI的改進等,Webpack?5使得構(gòu)建過程更加簡化,性能更加優(yōu)越
    2024-05-05
  • JS實現(xiàn)"上次操作未完成禁止新操作"邏輯特事特辦方案

    JS實現(xiàn)"上次操作未完成禁止新操作"邏輯特事特辦方案

    這篇文章主要介紹了詳解JS如何實現(xiàn)"上次操作未完成禁止新操作"的邏輯及思路,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • javascript實現(xiàn)手機震動API代碼

    javascript實現(xiàn)手機震動API代碼

    一個新的API出來了。HTML5 (很快)將支持用戶設(shè)備振動。這明顯是很有趣的事情,比如它可以用戶觸發(fā)提醒,提升游戲體驗,下面小編給大家整理javascript手機震動api,需要的朋友可以參考下
    2015-08-08

最新評論

呼和浩特市| 隆化县| 垦利县| 宁津县| 新宾| 旺苍县| 琼中| 阿拉善盟| 绥宁县| 绥德县| 扶余县| 乐业县| 绿春县| 滦平县| 前郭尔| 东海县| 磐石市| 桦甸市| 安平县| 泊头市| 克拉玛依市| 万源市| 大英县| 东兰县| 桂东县| 龙泉市| 松溪县| 德惠市| 杂多县| 攀枝花市| 洪湖市| 霍山县| 于都县| 南昌市| 崇文区| 巴中市| 东海县| 孟村| 安顺市| 沛县| 金秀|