我正在努力理解CSS,因此我尽力使下面的实验代码尽可能通用。
我有一个简单的页面,有两个盒子,我想让其中一个盒子以某种方式定位,根据为什么设置“right”CSS属性会将元素推到左侧?需要我像这样设置其位置
我希望我的第一个class为object,id为top_object的div能够绝对定位到页面顶部。但随后出现的其他class为object的div需要自然地流动到top_object下面。换句话说,我想使用top_object来定义class为object的第一个div的绝对位置,然后让其后的div们在不需要单独设置每个object的
我的第一个问题是为什么我的第二个object出现在第一个object上方?如何使class为relative的div在class为absolute的div下面流动?
其次,如何在不使用浮动的情况下使背景div围绕子div扩展?
此外,我正在努力理解发生了什么。虽然直接回答我的问题将不胜感激,但我想听一下为什么我的方法是错误的,以及为什么任何解决方案都会修复它。我想理解CSS背后的逻辑,而不仅仅是看到特定的代码片段来解决问题,尽管这也很好!
我有一个简单的页面,有两个盒子,我想让其中一个盒子以某种方式定位,根据为什么设置“right”CSS属性会将元素推到左侧?需要我像这样设置其位置
position:absolute
。然而,我现在想添加一些位于我的绝对div下方的div,此外我希望父div能够扩展以适应子div的大小。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<style type="text/css">
#outer {
position : relative;
background-color : green;
width : 500px;
height : 500px;
/* overflow : hidden; */
/* I know from working with floating elements inside divs that this works
* to cause parent divs to exand out around floating children, but this
* does not do the same thing here, it lops off the bottom of the child divs
* if I un-comment the preceding line!
*/
}
#inner {
position : absolute;
background-color : blue;
height : 400px;
width : 400px;
top : 10px;
right : 20px;
}
#top_object {
position : absolute;
top : 450px;
}
.object {
position : relative;
width : 450px;
height : 200px;
background-color : yellow;
margin-bottom : 25px;
}
/* The followsing was suggested by:
https://dev59.com/d3I-5IYBdhLWcg3wta_w
But has no effect!
*/
.clear {
clear : both;
}
</style>
</head>
<body>
<div id="outer">
<div id="inner">
</div>
<div id="top_object" class="object">
Top Object
</div>
<div class="object">
Second Object
</div>
<div class="clear"></div>
</div>
</body>
</html>
我希望我的第一个class为object,id为top_object的div能够绝对定位到页面顶部。但随后出现的其他class为object的div需要自然地流动到top_object下面。换句话说,我想使用top_object来定义class为object的第一个div的绝对位置,然后让其后的div们在不需要单独设置每个object的
top:XXXpx;
属性的情况下,紧跟着top_object从而自然地向下流动,且保持25像素的外边距(即.object
中设置的margin:25px;
)。我的第一个问题是为什么我的第二个object出现在第一个object上方?如何使class为relative的div在class为absolute的div下面流动?
其次,如何在不使用浮动的情况下使背景div围绕子div扩展?
此外,我正在努力理解发生了什么。虽然直接回答我的问题将不胜感激,但我想听一下为什么我的方法是错误的,以及为什么任何解决方案都会修复它。我想理解CSS背后的逻辑,而不仅仅是看到特定的代码片段来解决问题,尽管这也很好!
#top_object
,为什么不将其设为相对定位,并设置一个450像素的上边距?而且为什么你需要将内部元素绝对定位呢?为什么不能将其设置为float:right;
,但相对定位呢? - random_user_name