Html 默认情况下是相对于文档的绝对位置还是相对于…;?
Html 默认情况下是相对于文档的绝对位置还是相对于…;?,html,css,xhtml,Html,Css,Xhtml,据我所知,绝对定位是相对于提供定位上下文(默认情况下是文档)的包含块的。因此,默认情况下,绝对位置应该相对于html文档的边缘而不是视口(浏览器窗口)的边缘指定 例如,假设html文档有一个宽度为2000px的元素E,则此文档的宽度约为2000px,因此如下代码: #abs { position: absolute; top: 128px; right: 0px; width: 100px; } 应在文档最右侧放置一个元素#abs(文档最右侧和最左侧之间的距离约为20
据我所知,绝对定位是相对于提供定位上下文(默认情况下是文档)的包含块的。因此,默认情况下,绝对位置应该相对于html文档的边缘而不是视口(浏览器窗口)的边缘指定 例如,假设html文档有一个宽度为2000px的元素E,则此文档的宽度约为2000px,因此如下代码:
#abs
{
position: absolute;
top: 128px;
right: 0px;
width: 100px;
}
应在文档最右侧放置一个元素#abs(文档最右侧和最左侧之间的距离约为2000px)。相反,将#abs放置在视口的右侧。我错过了什么
Thanx我认为您缺少的是视口算作最上面的元素
<html>
<head>
<style type="text/css">
#abs{
position: absolute;
top: 128px;
right: 0px;
width: 100px;
height: 100px;
background-color: #333;
}
</style>
<title>test</title>
</head>
<body>
<div id="abs">
test
</div>
</body>
</html>
#腹肌{
位置:绝对位置;
顶部:128px;
右:0px;
宽度:100px;
高度:100px;
背景色:#333;
}
测试
测试
这模仿了你所说的你所看到的行为。如果更改视口大小,则#abs div将跟随右边缘。添加2000px宽的元素不会改变这一点
<html>
<head>
<style type="text/css">
#wide{
width: 2000px;
height: 1px;
}
#abs{
position: absolute;
top: 128px;
right: 0px;
width: 100px;
height: 100px;
background-color: #333;
}
</style>
<title>test</title>
</head>
<body>
<div id="wide">
wide
</div>
<div id="abs">
test
</div>
</body>
</html>
#宽阔的{
宽度:2000px;
高度:1px;
}
#腹肌{
位置:绝对位置;
顶部:128px;
右:0px;
宽度:100px;
高度:100px;
背景色:#333;
}
测试
宽的
测试
所以我认为你的主要问题是你的假设是错误的。绝对位置是相对于视口的,而其他任何位置都没有相对或绝对位置包含它。我认为您缺少的是视口算作最上面的元素
<html>
<head>
<style type="text/css">
#abs{
position: absolute;
top: 128px;
right: 0px;
width: 100px;
height: 100px;
background-color: #333;
}
</style>
<title>test</title>
</head>
<body>
<div id="abs">
test
</div>
</body>
</html>
#腹肌{
位置:绝对位置;
顶部:128px;
右:0px;
宽度:100px;
高度:100px;
背景色:#333;
}
测试
测试
这模仿了你所说的你所看到的行为。如果更改视口大小,则#abs div将跟随右边缘。添加2000px宽的元素不会改变这一点
<html>
<head>
<style type="text/css">
#wide{
width: 2000px;
height: 1px;
}
#abs{
position: absolute;
top: 128px;
right: 0px;
width: 100px;
height: 100px;
background-color: #333;
}
</style>
<title>test</title>
</head>
<body>
<div id="wide">
wide
</div>
<div id="abs">
test
</div>
</body>
</html>
#宽阔的{
宽度:2000px;
高度:1px;
}
#腹肌{
位置:绝对位置;
顶部:128px;
右:0px;
宽度:100px;
高度:100px;
背景色:#333;
}
测试
宽的
测试
所以我认为你的主要问题是你的假设是错误的。绝对定位是相对于视口的,而其他任何元素都没有包含它的相对或绝对位置。
位置:绝对
元素的定位基于最近的父元素位置:相对
。元素的默认位置为静态
。(
-是一个元素,但可能是对该静态
规则的接受。)
从上面我所看到的,您所描述的是
包含#abc
,而不是视口(窗口等)。因此,水平滚动
位置:绝对
元素将其位置建立在距离位置:相对
最近的父元素上。元素的默认位置为静态
。(
-是一个元素,但可能是对该静态
规则的接受。)
从上面我所看到的,您所描述的是
包含#abc
,而不是视口(窗口等)。因此,水平滚动
默认情况下,绝对位置相对于文档的“初始包含块”。发件人: 定位框的包含块由最近的 定位的祖先(如果不存在,则为, 如我们的示例所示) “初始包含块”是一个与视口大小相同的矩形,始终位于文档的开头(通常为左上角)。滚动时,它不会像视口那样在文档中移动
说明相对于初始包含块的绝对定位。默认情况下,绝对定位相对于文档的“初始包含块”。发件人: 定位框的包含块由最近的 定位的祖先(如果不存在,则为, 如我们的示例所示) “初始包含块”是一个与视口大小相同的矩形,始终位于文档的开头(通常为左上角)。滚动时,它不会像视口那样在文档中移动
说明了相对于初始包含块的绝对位置。Uh,这完全令人困惑-我假设“视口是最上面的元素”是指视口包含页面中的所有其他元素,包括元素#abs?但如果是这样的话,那么视口还包含#wide元素(宽度为2000px)。如果视口还包含#wide元素,那么视口的宽度至少为2000px,因此视口的最右侧应该距离最左侧2000px?!另外,您的意思是,当水平条滚动到文档最左侧时,viewport只是浏览器显示的窗口,而据我所知,viewport是当前浏览器显示的文档的任何部分,甚至当水平滚动条滚动到文档最右侧时浏览器显示的文档部分(假设文档非常宽)?!“视口”并不是您认为它的意思。视口是浏览器的可见部分。如果你拖你