用ul li实现的二层树状导航栏,CSS怎么实现

html-css028

用ul li实现的二层树状导航栏,CSS怎么实现,第1张

如果只用css的话就这么写吧

.level2{

    display:none

}

.level1 > li:hover > .level2{

    display:block    

}

html里大概这样的结构

<ul class="level1">

    <li>l1

        <ul class="level2">

            <li>l2</li>

            <li>l2</li>

            <li>l2</li>

        </ul>

    </li>

    <li>l1

        <ul class="level2">

            <li>l2</li>

            <li>l2</li>

            <li>l2</li>

        </ul>

    </li>

    <li>l1

        <ul class="level2">

            <li>l2</li>

            <li>l2</li>

            <li>l2</li>

        </ul>

    </li>

    <li>l1

        <ul class="level2">

            <li>l2</li>

            <li>l2</li>

            <li>l2</li>

        </ul>

    </li>

</ul>

利用伪类可以实现点击打开折叠菜单,但是再次点击收起貌似就没法实现了。跟楼下说的一样,利用:hover、:active 可以设置二级菜单的样式(如height、visibility、display)以达到展开的效果。

简单的话,可以这么做,用JS

function opencat(cat){

if(document.getElementById(cat).style.display=="none"){

document.getElementById(cat).style.display=""

}

else {

document.getElementById(cat).style.display="none"

}

}

然后在要收缩菜单的按钮或链接上这么做 比如超连接

<a id="menu1" href="#" style="display:block" onclick="opencat('list1')">

下面紧跟着的是展开后的目录内容,可以是Table,也可以是DIV

<table id="list1">

<tr><td>111111</td></tr>

<tr><td>222222</td></tr>

<tr><td>33333</td></tr>

<tr><td>4444444</td></tr>

<tr><td>5555555</td></tr>

</table>