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

css混合布局遇到问题

<!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; color:#fff}

.top{height:100px;background:#D4CDD4;position:relative;}

.head{width:800px;height:100px;background:#C2B9B9;margin:0 auto;}

.main{width:800px;height:600px;background:red;margin:0 auto;position:relative;}

.right{height:600px;background:#00CC99;margin-left:210px;}

.left{width:200px;height:600px;background:#0000ff;position:absolute;top:0;left:0;}

.foot{height:100px;background:orange;}

</style>


</head>


<body>

<div class="top">top

<div class="head">head</div>

</div>

<div class="main">

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

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

</div>

<div class="foot">foot</div>

</body>

</html>

这是我的代码,想实现像教学视频中,top块里面套一个居中的head块,main部分有左右两栏,左边定宽右边自适应,foot块在最下方,遇到两个问题

  1. 首先我的代码中top和head高度相同,但显示出来head块虽然居中了但高度没有把top块填满,这是为什么呢?之后我用定位的方法,top(relative)head(absolute),然后设置top:0 能够填满,但是这样就设置不了居中了。。

  2. 第二个是main块左右栏问题,最开始我没用定位用的浮动,但是left块就跑到main块下面了,如果把HTML里面left和right的位置换过来就好了,这是为什么呢?

问题比较琐碎,麻烦大家帮忙看一下,非常感谢

正在回答

3 回答

我觉得,你需要去理解一下标准文档流(flow)。我只知道有float和postion:absolute可以将元素从文档流中抽离出来。

问题1:top{position:relative}没有将top从文档流中抽离出来。所以top和head还是在文档流中,top类中内容“top”,会占一行。所以head从下一行开始。将内容“top"删除,就可以看到高度填满了。

问题2:没有用“position:absolute;top:0;left:0;”的话,类left和类right都块元素,且在文档流中,两者都要占整行,所以left块是跑到right块下面一行。 在代码<body>中如果把left和right的位置交换,我测试的结果是right块会在left块下面一行。

希望能帮到你。

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

圆脸哥哥 提问者

非常感谢!
2016-09-03 回复 有任何疑惑可以回复我~

提供一个参考意见吧:

问题2你说 用浮动结果left跑到下一行去了可能是因为这样:

A:  

57bea43600018af805000460.jpg


http://img1.sycdn.imooc.com//57bea44e0001139018250902.jpg

原因是你给left right其中一个加了float;解决方法是给两个都加上float.(但这样right会变瘦...还不如用relative+absolute)

其它问题,我爱莫能助了,最后也只做到了:http://img1.sycdn.imooc.com//57bea4ec0001b1a719190904.jpg

抱歉,没有达到你的要求。

同样期待有人能解决这个问题呀!

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

技术不够啊,第一个问题我也不知道,按照老师写的输入就可以,把你的输入进去怎么都改不不来,不知道咋回事!第二个问题你需要改仔细修整一下你的代码,我感觉比较乱,如果使用浮动呢,都可以把左右块的浮动都加上就好了,如果使用position就把布局都采用这个就好了,不要混乱用!除非特殊情况例如三列或两列中需要宽度自适应的

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

举报

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

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

进入课程

css混合布局遇到问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信