为了账号安全,请及时绑定邮箱和手机立即绑定

为什么都浮动的话会出现三列都不在同一行的情况?

http://img1.sycdn.imooc.com//5567e07400018b6411520604.jpg/DT

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>二列布局</title>

<style type="text/css">

body{ margin:0; padding:0; font-size:30px; font-weight:bold}

.main{ width:100%; height:200px; margin:0 auto}

.right{ width:200px; height:200px; background:red;float:right;}/*右浮动样式*/

.left{ width:200px; height:200px; background:#ccc;float:left; }

/*左浮动样式*/

.mid{height:200px;background:#cc0;margin:0 210px 0 210px;float:left;}


</style>

</head>


<body>

<div class="main">

    <div class="left">left</div>

<div class="mid">设计首页的第一步是设计版面布局。就象传统的报刊杂志编辑一样,我们将网页看作一张报纸,一本杂志来进行排版布局。 虽然动态网页技术的发展使得我们开始趋向于学习场景编剧,但是固定的网页版面设计基础依然是必须学习和掌握的。它们的基本原理是共通的,你可以领会要点,举一反三。 

    </div>

    <div class="right">right</div>

</div>

</body>

</html>


正在回答

8 回答

首先,mid部分是自适应的没错,内容过多,把其所在的div(块元素)撑到能容纳内容的最大宽度。这里mid中的内容把div撑到了100%,如果把margin去掉,你会发现,mid独占一行。对于mid而言,left后面没有足够的位置,所以mid只能移到下一行。同样,mid后面已经没有位置给right,所以right也只能移到下一行

2 回复 有任何疑惑可以回复我~
#1

七月小麦麦 提问者

非常感谢!
2015-06-07 回复 有任何疑惑可以回复我~

float属性一般用来定义元素向哪个方向浮动,常常应用于图像形成文字环绕效果,也可以定义其他元素的浮动。浮动元素会生成一个块级框而不管原来是何种元素,如果定义一个非图像的元素,必须要指定明确的宽度,在本视频的差不多两分钟处,指导老师也说了这样的float是实现不了我们想要的结果的。

1 回复 有任何疑惑可以回复我~
#1

七月小麦麦 提问者

谢谢!
2015-06-22 回复 有任何疑惑可以回复我~

额,不是,看错代码了,是把mid的margin给改了,左右边距那么大,会不会是因为这个给挤下来的呢?改成margin:0 100px试试吧,然后把那个float:left去掉吧。左右固定中间自适应,只需左边左浮动,右边右浮动就行,中间的那个是不用浮动的。再加一个width:auto;吧

0 回复 有任何疑惑可以回复我~
#1

七月小麦麦 提问者

谢谢!
2015-06-22 回复 有任何疑惑可以回复我~

把.main里面的width=100%这个属性给去掉,改成width:auto或者不加,margin给成margin:0 100px;试试吧,还不行的话,用绝对定位来试试吧

0 回复 有任何疑惑可以回复我~

mid自适应,两侧固定:mid不要浮动,margin还是要的,两侧浮动

调整html的顺序,这样

div.left+div.right+div.mid

mid在left和right后面

1 回复 有任何疑惑可以回复我~
#1

七月小麦麦 提问者

三个浮动是不是相当于三个块状元素,所以不在同一列?
2015-06-02 回复 有任何疑惑可以回复我~
.mid{height:200px;background:#cc0;margin:0 210px 0 210px;float:left;}

应该是这句有问题,你把margin去掉写成

.mid{height:200px;background:#cc0;float:left;}

试试看

0 回复 有任何疑惑可以回复我~
#1

七月小麦麦 提问者

这样不行的,我试过,并且我的意思就是在mid自适应的情况下,为什么三列float会导致如上图片的结果。但还是O(∩_∩)O谢谢!
2015-05-29 回复 有任何疑惑可以回复我~

感觉给中间的div一个宽度就可以了。他们就不会上下错开了。。但是要实现中间的div填充空白就不知道怎么办。

0 回复 有任何疑惑可以回复我~
#1

七月小麦麦 提问者

这样的确可以。但是我的意思是:在mid自适应的情况下,为什么三列float会导致如上图片的结果。但还是O(∩_∩)O谢谢!
2015-05-29 回复 有任何疑惑可以回复我~

因为你的display是block。而且三个div加起来超过了width:100%。

1 回复 有任何疑惑可以回复我~
#1

七月小麦麦 提问者

嗯?第一句话不理解。第二句话好像也不对呃,我中间的宽度是自适应的,不可能导致宽度不够的。但还是O(∩_∩)O谢谢!
2015-05-29 回复 有任何疑惑可以回复我~
#2

ruanhongbiao 回复 七月小麦麦 提问者

因为div是块级元素 一个元素独占一行所以中间那个.main会下移 但是由于你设置了margin:0 auto;它在整个容器里面还是居中显示的 只是不在同一行
2015-06-05 回复 有任何疑惑可以回复我~
#3

七月小麦麦 提问者 回复 ruanhongbiao

谢谢!
2015-06-22 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
如何用CSS进行网页布局
  • 参与学习       209551    人
  • 解答问题       1206    个

用最简洁的案例教你布局的那些知识,这是前端工程师基本技能

进入课程

为什么都浮动的话会出现三列都不在同一行的情况?

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号