日期:2014-05-16  浏览次数:20714 次

问一个css的问题,position相关
<style>
#main {
height: 100px;
width: 100px;
overflow: auto;
}
#child1 {
height: 100px;
width: 50px;
border: 2px solid red;
}
#child2 {
border: 2px solid green;
height: 100px;
width: 50px;
position: relative;
top: -100px;
}

</style>
<div id='main'>
<div id='child1'>

</div>
<div id='child2'>

</div>
</div>

主div使用了overflow: auto;
子div1很普通
子div2使用relative向上偏移
效果如图1所示
但是当滚动条向下是就会出现大量空白
效果如图2所示
因为这个空白是原来div2的位置,因为向上浮动了,所以留下了空白

请问能去掉空白吗?
限制:不能更改main的尺寸和overflow,不同iframe来替代main
------解决方案--------------------
<!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=gb2312" />
<title>无标题文档</title>
<style type="text/css">
    #main {
        height: 100px;
        width: 100px;
        overflow: auto;
    }
    #child1 {
        height: 100px;
        width: 50px;
        border: 2px solid red;
    }
    #child2 {
        border: 2px solid green;
        height: 100px;
        width: 50px;
        margin-top: -100px;
    }
 
</style>
</head>

<body>
<div id='main'>
    <div id='child1'>
 
    </div>
    <div id='child2'>
 
    </div>
</div>
</body>
</html>
这样试试