了解基于百分比的div和响应式设计

时间:2015-01-09 23:16:46

标签: css css3 responsive-design

我已将html和正文宽度和高度设置为100%。为什么这不足以允许我的背景图像显示(#home1,#home2,#home3)?没有设置所有div将基于其高度的像素?我希望内容决定页脚和标题的高度,即没有像素高度。布局应该是:logo ...全高(减去页眉和页脚)。 #photo-group ...全高(减去页眉和页脚)。类.pic-group应该使每张照片成为#photo-group的30%。目前,除非我在类.pic-group上设置像素高度,否则不会显示图像。我想做的是什么,我错过了一些明显的东西?设置基于像素的高度将会导致“侮辱”。我尝试流畅的布局。

<?php 
session_start();
include('debug-code.php');
$thisPage = "home";
$title="";
$metaDesc="";
include('head.php');?>
<style>
html {
height:100%;
font-size: 100%;
overflow-y: scroll;
}

body {
font-size:16px;
color:#434c50;
font-family: arial, serif;
background:white;
width:100%;
height:100%;
}

.clearfix:after {
content: " "; /* Older browser do not support empty content */
visibility: hidden;
display: block;
clear: both;
height:0;
}

#home-container {
position:relative;
margin:0 auto;
width:70%;
background:white;
}

#home-content {
position:relative;
}

#home-content .content {
width:100%;
}

div.logo.home {
position:relative;
float:left;
width:60%;
background:#fdf2fd;
}

div.logo.home img {
width:60%;
}

#home-footer {
position:relative;
bottom:0;
background:#d5d0d5;/*url('../images/footerBG.png')*/;
color:white;
border-top:1px solid #05577a;
}

#home-footer .content {
margin:0 auto;
width:70%;
padding:1.5rem 0;
}

#photo-group {
display:block;
width:20%;
height:100%;
float:left;
}

.pic-group {
height:30%;
display:block;
position:relative;
}

#home1 {
background: blue url('../images/home1.png') no-repeat top left;
background-size:100%;
}

#home2 {
background:yellow url('../images/home2.png') no-repeat top left;
background-size:100%;
}

#home3 {
background:red url('../images/home3.png') no-repeat top left;
background-size:100%;
}
</style>
</head> 
<body> 
<?php include('home-header.php')?>
<div id="home-container"><div class="content clearfix">
        <div id="home-content"><div class="content clearfix">
            <div class="logo home"><?php include('logo-home-image.htm');?></div>
            <div id="photo-group">
            <div id="home1" class="pic-group"></div><div id="home2" class="pic-group"></div><div id="home3" class="pic-group"></div>
            </div>
            <?php include('home-menu.php');?>
            <div id='mobile-menu'></div>            
        </div></div><!--end content-->  
    <?php include("disclaimer.htm") ?>
</div></div><!--end container-->
<?php include("home-footer.htm") ?>
</body> 
</html> 

1 个答案:

答案 0 :(得分:0)

您需要在div上明确设置height,以使其填写offsetparent的可用高度。在这种情况下身体。 Div元素是块元素。这意味着默认情况下它们会占用其offsetparent的可用宽度。默认情况下,高度设置为auto。这意味着当div中的内容被包装成一个新行时它会增加。

但是你希望你的div占据身体的所有空间。但是身体不是#home divs的偏移。

Offsetparents:

#home > #photo-group > #home-content > #home-container > body

但是在#home-container上你没有设置高度并将位置设置为相对位置。所以这成为所有子div的base。将它们的高度设置为相对到此div。因此,在30%上设置0会产生0。明确设置300px当然是有效的。这就是#home溢出其父级的内容。