模拟QQ列表展开收缩

本文展示了一个基于HTML和CSS的好友列表样式设计,并通过JavaScript实现了列表的交互功能,包括标题点击展开收起子列表及选择特定条目的背景变化效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        ul,li,h4 {
            margin: 0;
            padding: 0 ;
            list-style: none;
            text-indent: 15px;
            cursor: pointer;
        }
        h4 {
            line-height: 30px;
            background: url("img/ico1.gif") no-repeat 3px 10px #AFF7F7;
        }
        ul li ul li {
            border-bottom: #000 solid 1px;
        }
        #list {
            border: 1px solid #000;
            width: 200px;
            margin: 50px auto;
        }
        #list ul {
            display: none;
        }
        .active {
            background: url("img/ico2.gif") no-repeat 3px 10px #FBEB54;
        }
    </style>
</head>
<body>
<ul id="list">
    <li>
        <h4>我的好友</h4>
        <ul>
            <li>关羽</li>
            <li>张飞</li>
        </ul>
    </li>
    <li>
        <h4>企业好友</h4>
        <ul>
            <li>武则天</li>
            <li>李世民</li>
        </ul>
    </li>
    <li>
        <h4>黑名单</h4>
        <ul>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </li>
</ul>

    <script>
        var oList= document.getElementById('list');
        var aUl = oList.getElementsByTagName('ul');
        var aH = oList.getElementsByTagName('h4');
        //将所需元素打包进一个数组再操作
        var aLi = [];
        var arrLi = [];

        for(var i=0;i<aUl.length;i++){
            aH[i].index = i;
            aH[i].onclick = function () {
                if (aH[this.index].className == '') {
                    aUl[this.index].style.display = 'block';
                    aH[this.index].className = 'active';
                } else {
                    aUl[this.index].style.display = 'none';
                    aH[this.index].className = '';
                }
            }
        }
        //找到所有li
        for(var i=0;i<aUl.length;i++) {
            aLi = aUl[i].getElementsByTagName('li');
            for(var j=0;j<aLi.length;j++){
                //将元素添加进数组
                arrLi.push(aLi[j]);
            }
        }

        //li的点击事件
        for(var i=0;i<arrLi.length;i++){
            arrLi[i].onclick = function () {
                for(var i=0;i<arrLi.length;i++){
                    arrLi[i].style.backgroundColor = '';
                }
                this.style.backgroundColor = '#aaa';
            }
        }

        //点击某一标题收回其他标题内容
        for(var i=0;i<aUl.length;i++){
            aH[i].index = i;
            aH[i].onclick = function (){
                for(var j=0;j<aUl.length;j++){
                    aUl[j].style.display = 'none';
                }
                aUl[this.index].style.display = 'block'
            }
        }

    </script>
</div>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值