请老师检查

来源:2-8 项目作业

tobeabee

2023-01-28 02:31:58

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        header h3 {
            float: left;
        }

        header .right_part {
            float: right;
        }

        header .right_part nav {
            float: left;
            position: relative;
        }

        header .right_part nav ul {
            list-style: none;
            margin-right: 10px;
            overflow: hidden;
        }

        header .right_part nav ul li {
            float: left;
            margin: 0 10px;
        }

        header .right_part nav .bottomline {
            position: absolute;
            top: 40px;
            left: 48px;

            width: 36px;
            height: 3px;
            background-color: #f01400;
            transition: all 0.2s ease 0s;
        }

        header .right_part .buy_btn {
            float: left;
            background-color: black;
            color: white;
            font-size: 20px;
            width: 100px;
            height: 50px;
            text-align: center;
            line-height: 50px;
            margin-right: 100px;
        }
    </style>
</head>

<body>
    <header>
        <h3>
            慕课手机
        </h3>
        <div class="right_part">
            <nav>
                <ul id="list">
                    <li>首页</li>
                    <li>外观</li>
                    <li>配置</li>
                    <li>型号</li>
                    <li>说明</li>
                </ul>
                <div class="bottomline" id="bottomline"></div>
            </nav>
            <div class="buy_btn">立即购买</div>

        </div>
    </header>
    <script>
        var list = document.getElementById('list');
        var lis = list.getElementsByTagName('li');
        var bottomline = document.getElementById('bottomline');

        list.onmouseover = function (e) {
            if (e.target.tagName.toLowerCase() == 'li') {
                console.log(e.target);
                var num = 5;//li的数量
                for (var i = 0; i < num; i++) {
                    if (e.target == lis[i]) {
                        lis[i].style.color = '#f01400';
                        bottomline.style.left = 48 + i * 52 + 'px';
                    }else{
                        lis[i].style.color = '#000';
                    }
                }
            }
        }
    </script>
</body>

</html>


写回答

1回答

好帮手慕慕子

2023-01-28

同学你好,整体思路是可以的,可以参考如下思路调整优化:

1、通过设置添加类名,设置第一个导航项的文字默认是红色,后续通过添加和删除类名调整导航项的文字颜色。

2、在html结构中,给导航项添加自定义属性,对应每项的索引,然后通过获取该自定义属性值来计算下划线的位置。

https://img.mukewang.com/climg/63d47f31091095fe11560772.jpg

https://img.mukewang.com/climg/63d47f3d094ce6fa10581048.jpg

祝学习愉快~

0

前端工程师

前端入门如同写字,如果你不知道从哪开始,那就选择前端(含Vue3.x,React17,TS)

20327 学习 · 17877 问题

查看课程

相似问题