html css 和js共同实现手风琴

手风琴模式在网页中偶尔可以见到,下面就来一起实现手风琴。

首先找到 5张图片,在body里放一个背景图片。在body写一个ul>li*5。这里html和css就不具体介绍了直接上图。

实现手风琴主要是js部分。

1.先获取所有li标签,声明下标showIndex。

2遍历li标签使用for循环(var i=0;i<lis.length;i++)

3.给open下标showindex;当触发点击onclick事件,open的类名变为空。点击的this.className=“open”

4将showIndex=lis【i】.index

5.将body背景图替换

实现效果如下:

 完整代码发在下面:

        body {

            height: 100vh;

            background-image: url(img/c1.webp);

            background-size: cover;

            background-position: center;

            display: flex;

            justify-content: center;

            align-items: center;

        }

       

        ul {

            width: 800px;

            height: 400px;

        }

       

        li {

            width: 80px;

            height: 100%;

            float: left;

            background-size: cover;

            background-position: center center;

            transition: .3s;

        }

       

        .open {

            width: 480px;

        }

       

        li p {

            width: 80px;

            height: 100%;

            background-color: rgba(255, 255, 255, .5);

            color: white;

            font-size: 60px;

        }

    </style>

</head>

<body>

    <ul>

        <li style="background-image: url(img/c1.webp)" class="open">

            <p>寿司全家福</p>

        </li>

        <li style="background-image: url(img/c2.webp)">

            <p>海鲜全家福</p>

        </li>

        <li style="background-image: url(img/c3.webp)">

            <p>炒花蛤</p>

        </li>

        <li style="background-image: url(img/c4.webp)">

            <p>辣白菜</p>

        </li>

        <li style="background-image: url(img/c5.webp)">

            <p>披萨</p>

        </li>

    </ul>

</body>

<script>

    var lis = document.querySelectorAll('li');

    var showIndex = 0; //当前open的下标

    for (var i = 0; i < lis.length; i++) {

        // if (showIndex === this.index) {

        //     return;

        // }

        lis[i].index = i; //动态为li添加下标

        lis[i].onclick = function() {

            // 收起来已经展开的li

            // 1.for (var j = 0; j < lis.length; j++) {

            //     lis[j].className = "";

            // }

            // 2.动态添加下标

            lis[showIndex].className = "";

            // 展开点击的li

            this.className = "open";

            showIndex = this.index;

            // 修改body的背景图

            document.body.style.backgroundImage = this.style.backgroundImage;

        }

    }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值