这是顶部的代码,感觉太冗余了……请问可以怎么简化一下呢?

这是顶部的代码,感觉太冗余了……请问可以怎么简化一下呢?

这是顶部的代码,感觉太冗余了……请问可以怎么简化一下呢?

以及如何解决菜单宽度变化的问题呢?


HTML

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="css/style.css">
    <script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.js"></script>
    <script src="js/script.js"></script>
</head>
<body>
    <!-- 顶部 -->
    <div class="container header">
        <!-- 登陆信息 -->
        <div class="header_loginbar">
            <a href="#" class="login">亲,请登录</a>
            <a href="#">免费注册</a>
            <a href="#">手机逛慕课</a>
        </div>
        <!-- 导航菜单 -->
        <div class="header_nav">
            <div class="header_nav_con">
                <div class="con_mainnav">
                    我的慕课
                    <a href="#"></a>
                </div>
                <div class="con_subnav">
                    <p>已买到的宝贝</p>
                    <p>我的足迹</p>
                </div>
            </div>

            <div class="header_nav_con">
                <div class="con_mainnav">
                    收藏夹
                    <a href="#"></a>
                </div>
                <div class="con_subnav">
                    <p>收藏的宝贝</p>
                    <p>收藏的店铺</p>
                </div>
            </div>

            <div class="header_nav_con">
                <div class="con_mainnav">商品分类</div>
            </div>

            <div class="header_nav_con">
                <div class="con_mainnav">
                    卖家中心
                    <a href="#"></a>
                </div>
                <div class="con_subnav">
                    <p>免费开店</p>
                    <p>已卖出的宝贝</p>
                    <p>出售中的宝贝</p>
                    <p>卖家服务市场</p>
                    <p>卖家培训中心</p>
                    <p>体验中心</p>
                </div>
            </div>

            <div class="header_nav_con">
                <div class="con_mainnav">
                    联系客服
                    <a href="#"></a>
                </div>
                <div class="con_subnav">
                    <p>消费者客服</p>
                    <p>卖家客服</p>
                </div>
            </div>

        </div>
    </div>
   
</body>
</html>


CSS

*{
    margin: 0;
    padding: 0;
}
body{
    background-color: #f3f5f7;
}
a{
    text-decoration: none;
    font-family: "微软雅黑";
}
.container{
    width: 1200px;
    margin: 0 auto;
}
/*顶部*/
.header{
    font-size: 12px;
    height: 50px;
    line-height: 50px;
    box-sizing: border-box;
    padding: 0 10px;
    border-bottom: 1px solid #ccc;
}
/*顶部_登录信息*/
.header_loginbar{
    float: left;
}
.header_loginbar a{
    color: #666;
    padding-left: 5px;
}
/*顶部_导航菜单*/
.header_nav{
    color: #666;
    float: right;
}
.header_nav_con{
    float: left;
    cursor: pointer;
}
.con_mainnav, .con_subnav p{
    padding: 0 10px;
}
.con_mainnav a{
    background: url(../img/icon/21.png);
    display: inline-block;
    width: 16px;
    height: 16px;
    vertical-align: middle;
}
.con_subnav p{
    height: 30px;
    line-height: 30px;
}
.con_subnav{
    display: none;
}
.header_loginbar a.login,
.header_loginbar a:hover,
.con_mainnav:hover{
    color: #f00;
}


jQuery

$(document).ready(function(){
    // 顶部导航菜单的交互效果
    $('.header_nav_con').hover(function(){
        $(this).has('.con_subnav').css({
            'border': '1px solid #ccc',
            'backgroundColor': '#fff'
        })
        .children('.con_subnav').css('display','block')
        .children('p').hover(function(){
            $(this).css({
                'backgroundColor': '#cdd0d4'
            })
        },function(){
            $(this).css({'backgroundColor': '#fff'})
        })    
    },function(){
        $(this).css({
            'border': 'none',
            'backgroundColor': 'transparent'
        })
        .children('.con_subnav').css('display','none');
    })
    // 动态变换箭头颜色
    $('.con_mainnav').hover(function(){
            $(this).children('a').css('background','url(img/icon/24.png)')
        },function(){
            $(this).children('a').css('background','url(img/icon/21.png)')
        })
  
})

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
提问者 Carol246 2019-03-20 16:16:27

我给.con_subnav设置为绝对定位以后,是这个效果呢……

http://img1.sycdn.imooc.com//climg/5c91f6d3000179f901160133.jpg

  • 建议将修改之后的css代码粘贴上来,老师这边测试下问题。
    2019-03-20 19:04:37
好帮手慕星星 2019-03-20 14:04:17

你好,这边测试加上定位就可以,还可以给导航项添加下宽度,否则导航与下拉菜单宽度不等,因为宽度是由内容撑起来的,如下:

http://img1.sycdn.imooc.com//climg/5c91d7830001042e03030143.jpg

http://img1.sycdn.imooc.com//climg/5c91d78d0001ccd703650153.jpg

效果:

http://img1.sycdn.imooc.com//climg/5c91d7db000118d505880134.jpg

自己可以测试下。

好帮手慕夭夭 2019-03-18 12:14:33

你好同学 ,建议如下简化 :

样式直接在css中设置 :

http://img1.sycdn.imooc.com//climg/5c8f18fe00017f5403630113.jpg

http://img1.sycdn.imooc.com//climg/5c8f1aa20001a94302960086.jpg

定义一个类:

http://img1.sycdn.imooc.com//climg/5c8f19fe00015d1305510203.jpg

然后使用addClass添加它:

http://img1.sycdn.imooc.com//climg/5c8f1a2d0001b63509530887.jpg

另外 ,还有一个建议 , 当下拉菜单显示时 , 它会把下面的内容给挤的位置往下移动 .等同学做到下面就能够看出来 .所以建议下拉菜单设置定位 ,脱离文档流 .然后父元素设置相对定位 ,然后下拉菜单参照父元素进行位置移动 ,让它显示下面 .

祝学习愉快 ,望采纳 .

  • 提问者 Carol246 #1
    嗯嗯谢谢,我改一改
    2019-03-18 16:37:42
  • 提问者 Carol246 #2
    可是下拉菜单设置定位以后,怎么让下拉菜单和父元素都在一个白色框里面呢?
    2019-03-20 11:11:12
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师