顶部右导航,划过位置为何不对齐?

顶部右导航,划过位置为何不对齐?

<!DOCTYPE html>
<html>
<head>
 <title>慕淘网作业</title>
 <meta charset="utf-8">
 <link rel="stylesheet" type="text/css" href="css/css.css">
</head>
<body>
 <!--顶部内容-->
 <!--设置左内填充无效,鼠标滑过边框有轻微变化,-->
 <div class="top-box">
  <ul class="top-left">
   <li class="red"><a href="#">亲,请登录</a></li>
   <li><a href="#">免费注册</a></li>
   <li><a href="#">手机逛慕淘</a></li>
  </ul>
  <ul class="top-right">
   <li>
    <a href="#">我的慕淘<img src="素材/icon/21.png" class="img1"></a>
    <div class="submenu">
    <div class="a">已买到的宝贝</div>
    <div class="a">我的足迹</div>
    </div>
   </li>
   <li><a href="#">收藏夹<img src="素材/icon/21.png"></a></li>
   <li><a href="#">商品分类</a></li>
   <li><a href="#">卖家中心<img src="素材/icon/21.png"></a></li>
   <li><a href="#">联系客服<img src="素材/icon/21.png"></a></li>
  </ul>
 </div>
 <div class="logo-box">
  <div class="logo"><img src="素材/logo.png"></div>
  <input type="text" name="" class="text"><input type="button" name="" class="button" value="搜索">
  <div class="gouwuche">
   <img src="素材/icon/26.png" class="left-img">
   <span>购物车&nbsp;&nbsp;|&nbsp;&nbsp;0</span>
   <img src="素材/icon/23.png" class="right-img">
  </div>
 </div>
 <script type="text/javascript">
  var a=document.getElementsByTagName('li')[3];
  var b=document.getElementsByTagName('div')[1];
  var c=document.getElementsByTagName('img')[0];
  a.onclick=function(){
   b.style.display="block";
   a.className="js1"
   c.setAttribute("src","素材/icon/24.png")
   
  }
 </script>
</body>
</html>


*{
 margin: 0;
 padding: 0;
 list-style: none;
 font-size: 15px;
}
a{
 text-decoration: none;
 color: #4d555d;
}
.top-box{
 width: 1200px;
 width: 1200px;
 height: 40px;
 background-color: #f3f5f7;;
 margin: 0 auto;
 line-height: 40px;
 border-bottom: solid #bfc3c7 1px;


}
.top-left{
 float: left;
 margin-left: 20px;
}
.top-right{
 float: right;
 margin-right: 20px;

}
.top-right li{
 width: 110px;
 text-indent: 5px;
 /*position: relative;*/
 
 position: relative;
 margin: 0 5px;
 box-sizing: border-box;

}
.top-right li img{
 position: relative;
 top: 2.5px;
 left: 2.5px;
}
.top-box ul li{
 float: left;
}
.top-left li{
 margin: 0 10px;
}
.red a{
 color: red;
}
.submenu{
 width: auto;
 display: none;
 position: absolute;
 top: 40px;
 background-color: #fff;
 border: solid #bfc3c7 1px;
}
.js2{
 
 
 /*position: absolute;
 top: 40px;
 border: solid #bfc3c7 1px;
 background-color: #fff;*/
 
}
.submenu .a{
 width: 110px;
 height: 30px;
 line-height: 30px;
 text-indent: 5px;
 
}
.js1{
 background-color: #fff;
 border: solid #bfc3c7 1px;

 

}
.logo-box{
 width: 1200px;
 height: 130px;
 margin: 0 auto;
}
.logo-box .logo{
 margin-top: 40px;
 float: left;
 margin-left: 20px;

}
.text{
 width: 600px;
 height: 30px;
float: left;
margin-top: 50px;
margin-left: 80px;
}
.button{
 width: 50px;
 height: 33px;
float: left;
 background-color: black;
 border: none;
 color: #fff;
 margin-top: 49px;
}
.gouwuche{
 width: 140px;
 height: 33px;
 background-color: red;
float: right;
 line-height: 33px;
 font-size: 12px;
 margin-top: 50px;
 margin-right: 20px;


}


正在回答

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

1回答

你好同学 ,因为默认下拉菜单是和导航内容区域最左边对齐 ,不包含border部分 ,所以下拉菜单看起来会往右偏移了1px , 所以可以结合定位中设置偏移值 ,让下拉菜单往左移动1px就能对齐了 :

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

另外 ,这里要注意的是 , 下拉菜单内容是110px ,加上左右边框 ,实际宽度为112px .但是由于li设置了box-sizing: border-box; ,所以li的左右边框会算入到li的width中 ,实际宽度即为110px ,比下拉菜单少了2px  ,所以建议把如下属性去掉 ,这样让导航与下拉菜单宽度保持一致更好

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

希望对你有帮助 , 祝学习愉快 ,望采纳 .


  • 慕标7092737 提问者 #1
    还想请问老师触发下拉菜单时,主菜单我的慕淘这几个字还是会有轻微偏移是什么原因那
    2019-02-22 15:36:30
  • 好帮手慕夭夭 回复 提问者 慕标7092737 #2
    这个是因为当下拉菜单出来的时候会有一个border , 所以会挤的文字轻微的位置变化 .这个因为是很轻微的 ,暂时可以忽略掉 . 不用担心哦 .
    2019-02-22 18:22:52
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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