为什么nav_left ,nav_mid, nav_right不在一行?

来源:3-4 企业网站制作之导航部分制作(一)

刘颜

2016-12-13 23:30

http://img.mukewang.com/585012e10001d54726770580.jpg

<!DOCTYPE html>
<html>
<head>
	<title></title>
	<link rel="stylesheet" type="text/css" href="css/main.css">
	<script type="text/javascript" src="js/setHomeSetFav.js" charset="gb2312"></script>
</head>
<body>
<div class="top">
	<div class="top_content">
		<ul>
			<li><a href="#">联系我们</a></li>	
			<li><a href="#" onclick="AddFavorite(window.location,document.title)">加入收藏</a></li>
			<li><a href="#" onclick="SetHome(window.location)">设为首页</a></li>
		</ul>
	</div>
</div> <!--top结束-->

<div class="wrap">

	<div class="logo">
		<div class="logo_left">
			<img src="images/logo.jpg" alt="慕课网"/>
		</div>
		<div class="logo_right">
			<img src="images/tel.jpg" alt="服务热线"/>24小时服务热线:<span class="tel"> 123-456-7890</span>
		</div>
	</div><!--logo结束-->

	<div class="nav">
		<div class="nav_left"></div> 
		<div class="nav_mid">
			<div class="nav_mid_left">
				<ul>
					<li><a href="#">首页</a></li>
					<li><a href="list.html">关于慕课</a></li>
					<li><a href="list.html">新闻动态</a></li>
					<li><a href="list.html">课程中心</a></li>
					<li><a href="list.html">在线课程</a></li>
					<li><a href="list.html">人才招聘</a></li>
				</ul>
			</div>
			<div class="nav_mid_right">
				<form action="" method="post">
					<input type="text" />
				</form>
			</div>
		</div> 
		<div class="nav_right"></div> 
	</div><!--nav结束-->

</div><!--wrap结束-->

</body>
</html>

*{

margin: 0;

padding: 0;

font-size: 12px;

}

body{

background-color: #f5f5f5; 

}

.top{

width: 100%;

height: 27px;

background: url(../images/top_bg.jpg) repeat-x;

}

.top_content{

width: 1000px;

margin: 0 auto;

}

.top_content li{

list-style-image: url(../images/li_bg.gif);

float: right;

width: 70px;

line-height: 27px;

}

.top_content li:link, .top_content li:visited{

color: #8e8e8e;

text-decoration: none;

}

.top_content li:hover, .top_content li:active{

color:#900;

text-decoration: none;

}


.wrap{

width: 1000px;

margin: 0 auto;

}

.logo{

height: 80px;

background-color: #fff;

}

.logo_left{

width: 200px;

float: left;

}

.logo_right{

width: 300px;

float: right;

height: 28px;

margin-top: 30px;

color: #8e8e8e;


}

.logo_right img{

vertical-align: middle;

margin-right: 10px;

}

.tel{

font-family: "微软雅黑";

font-size: 16px

color: #c00;

}

.nav{

height: 40px;

}

.nav_left{

width: 10px;

background: url(../images/nav_left.jpg) no-repeat;

}

.nav_mid{

width: 980px;

background: url(../images/nav_bg.jpg) repeat-x;

}

.nav_right{

width: 10px;

background: url(../images/nav_right.jpg) no-repeat;

}

.nav_left,.nav_mid,.nav_right{

float: left;

height: 40px;

}


写回答 关注

6回答

  • 不见幽人独往来
    2016-12-13 23:49:56
    已采纳

    这可能是因为有边框的存在,input默认有边框的,总宽度超过1000了,你把nav_mid改小一点,另外建议你把float:left放在上面。

    刘颜

    非常感谢!

    2016-12-14 13:26:03

    共 1 条回复 >

  • 慕粉18221508921
    2017-03-05 10:31:51

    由于 img (也就是慕课网那个 img )把父块 div 撑大了 3px ,而父块 div 又是向左浮动 ,所以后面的元素继续 向左浮动的时候,就顶到了 img的父块div,所以没有向左顶

    到最左边,而后面的导航条div因为长度太长,自然就跳到了下一行,

    解决方法:

    1、给 父块div 设置和 img 一样的高度,这里就是  height: 80px;如图,就可以了

    2、给 img 设置 display: block;

    3、给 img 设置 vertical-align: middle;

    4、这个案例里具有特殊性,所以还有其他办法,比如,给后面的元素 加 clear:left;  原理就是后面元素往左浮动的时候直接放在 img 父块 div 的下面了,认为这个 img 把 div 撑大的几 px 是存在的

    (这是和其他四种方法不一样的地方);

    5、给包含慕课网 img 父块 div 的整个大盒子 div 加上 overflow: hidden; 原理:就是隐藏 img 父块 div 溢出大盒子的部分;

    当然我是推荐 前3种方法的,动的是元素本身,不大会对后续存在可能的影响;


  • 慕粉1311528564
    2017-02-23 10:41:13

    .logo{ height:80px; background-color:#FFF; overflow:hidden; }  我的在这里加就不行,在下面加  clear:both;才解决的。为什么源码下下来是运行正常显示。

    .nav_left {

        clear:both;

    width: 10px;

    background: url(../images/nav_left.jpg) no-repeat;

    }


  • 慕粉0844529808
    2016-12-27 22:22:13

    不太明白 我把mid改小了也还是不行咋办吖?

  • 刘颜
    2016-12-22 09:06:45

    啥意思

  • 问道_imooc
    2016-12-21 19:58:10

    该课程中,慕课网首页案例,把html4改为html5(就是文档声明修改了),为什么修改后布局就出错呢?

企业网站综合布局实战

本课程重点介绍HTML/CSS实现常见企业网站布局的方法

157038 学习 · 2157 问题

查看课程

相似问题