我正试图摆脱使用表格,我现在正试图创建一个简单的基于div的布局 - 标题,内容,页脚div,宽度为100%,没有父div。但是我遇到了一些问题。如果我在那里插入任何东西,我的内容和页脚div重叠标题div。它们出现在标题div的中间。如果它们是空的,它们会正常显示。但是当我在其中插入标题图片时,问题就开始了。
我试图更改浮动和显示属性,但它给了我奇怪的输出。任何人都可以帮我一个接一个地垂直定位吗?
以下是HTML代码:
<div id="topDiv"> topmenu</div>
<div id="headerDiv">
<div class="innerDiv"><img src=" photos/header.jpg" /></div>
</div><br /><br />
<div id="contentsDiv"> content</div>
<div id="footDiv"> footer </div>
以下是css样式:
div#topDiv{
width:100%;
height:20px;
background-color:#800000;
text-align:center;
margin: 0px;
position:absolute;
}
div#headerDiv{
width:100%;
position:absolute;
background-color:#0FF;
text-align:center;
margin: 0px;
}
div#contentsDiv{
width:100%;
margin: 0px;
text-align:center;
background-color:#0CC;
position:absolute;
}
div#footDiv{
width:100%;
margin: 0px;
text-align:center;
background-color:#CF3;
position:absolute;
}
.innerDiv{
width:930px;
height:100px;
margin:auto;
background-color:#C30;
position:relevant;
}
答案 0 :(得分:1)
你正在使用绝对和相对定位 它们使你的布局看起来很糟糕,而且元素也在重叠。
此外,您不需要多次定义边距和其他所有属性
html, body{
width 100%;
height:100%;
margin:0px;
padding:0px;
}
div{
display:block;
margin:auto;
}
答案 1 :(得分:0)
这是一个适合您的解决方案。您无需指定width=100
而无需定义宽度,默认情况下为100%。只需为body
指定所需的宽度,其他所有容器都将为该宽度。 float: left;
会阻止容器垂直堆叠。它们实际上会水平堆叠。
您可以使用Ids
标记简化标记,而不是Div
HTML5
。
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<style type="text/css">
body {
margin: 0 auto;
}
menu {
height: 20px;
background-color: #800000;
text-align: center;
margin: 0px;
}
header {
background-color: #0FF;
text-align: center;
margin: 0px;
}
article {
margin: 0px;
text-align: center;
background-color: #0CC;
}
footer {
margin: 0px;
text-align: center;
background-color: #CF3;
}
section {
height: 100px;
margin: auto;
background-color: #C30;
}
</style>
</head>
<body>
<menu>topmenu</menu>
<header>Header
<article>
<img src="http://www.psdgraphics.com/wp-content/uploads/2009/04/1-google-logo-tutorial.gif" />
</article>
</header>
<section>content</section>
<footer>footer </footer>
</body>
</html>
答案 2 :(得分:0)
只需从position:absolute
规则中移除所有CSS
,即可完成。