#menu{
position: sticky; /* Posicionamos el elemento con el valor sticky */
/* Indicamos el umbral de desplazamiento con el cual el elemento pasará de comportarse
como position: relative a position: fixed, es decir, cuando el elemento tome el valor de
top: 0 con respecto a la pantalla del navegador, este cambiará su comportamiento.*/
top: 0;
}
该属性
position
用于在页面内定位元素。但是,根据我们使用的属性,元素将采用一个或另一个引用来相对于它定位自己。该属性可以取的可能值为
position
:static | relative | absolute | fixed | inherit | initial
. 我将解释它们各自的组成:位置:静态
它是元素默认定位自身的值。有了这个值,元素就会尊重页面的正常流动,也就是说,它会被定位在合适的位置,并且会忽略、
top
和属性的值。left
right
bottom
请注意,我在第二个 div 中添加了一个 id 并调用了它
movido
。我正在尝试应用该属性left
而没有结果。位置:相对
通过这个值,我们可以相对于页面的正常流程定位元素。可以说,我们正在定位一个元素,以该元素的正常流程(默认位置)为参考。
我们可以使用
top
、和来定位我们的元素,并将元素的默认位置作为参考left
。在这种情况下,我将应用上一个示例中的属性,并且 div将从其默认位置向右移动 100 像素。right
bottom
left: 100px
movido
位置:绝对
该值也将接受值
top
、left
和。元素不会在页面的正常流程中,如果它是我们要定位的元素的父元素,它将作为参考浏览器窗口或最近定位的元素(具有任何值except )。right
bottom
position: absolute
position
static
以下是每个示例:
以浏览器窗口为参考的示例
在这种情况下,我将以浏览器窗口为参考,将 div
movido
向下移动 40 像素,向右移动 50 像素。您可以看到 div
movido
不在页面的正常流程内,不会影响其余元素的正常流程,因此其他两个元素被定位在一起(不考虑 divmovido
在前面留下的空间例如,它在页面的正常流程中)。position:relative
以最近的父元素为参考的示例在这种情况下,我对带有 id 的 div 使用了与
movido
上一个示例相同的 CSS,以表明在这种情况下,divmovido
引用父元素position: relative
而不是浏览器窗口(向下 40 像素,向上 50 像素)。父元素的右侧)。位置:固定
定位的元素
position: fixed
也在页面的正常流程之外。但是,不应将其与以 定位的元素相混淆position: absolute
。与后者不同的是,元素以
position: fixed
浏览器窗口为参考,不尊重定位的父容器。此外,当滚动页面时,定位为 as 的元素position: fixed
将保持在相对于浏览器窗口的相同位置,即使滚动已将页面向下移动。因为一张图值一千字,并以该部分的最后一个示例作为参考
position: absolute
:如您所见,div
movido
是position: fixed
相对于浏览器窗口定位的,无论它是否包含在元素中position: relative
或页面是否滚动。立场:固有
实际上,具有该值的属性
position
与inherit
其他可以获取该值的属性的行为方式相同,它从父元素继承该属性的值。位置:开始
与之前的值一样,它的行为方式与可以获取此值的其余属性相同,在这种情况下,使属性
position
采用其默认值,因此使用position: initial
, 与指示 相同position: static
。位置:粘性
对于此属性,这是一个相对较新的值。
使用此值,元素就像使用该值定位一样,
relative
直到达到偏移阈值(在元素本身或在父元素中),此时元素将被定位,就好像它使用该值定位一样fixed
。例如,我们将以页面顶部的水平菜单作为参考,该菜单位于我们所属公司的徽标下方。
像这样的东西:
并且我们希望当滚动并且菜单不再适合屏幕(即属性的值
top
小于 0)时,菜单保持固定在屏幕顶部。像这样的东西:
为此,我们将使用该值
sticky
,因为它可以为我们完成工作,而无需使用Javascript
.用法是这样的:
在此示例中,您可以上下滚动以查看 div
menu
在到达时冻结top: 0
。但是 - 这是我在答案开头没有将其作为属性值指出的主要原因
position
- 它尚未得到所有浏览器的完全支持。您可以在此处查看支持此属性的浏览器。
奖金:典型的例子。
以下是定位(居中)的一些典型示例。
1.-在页面上水平居中 div(使用
position: relative
)2.-在页面上水平居中 div(使用
position: absolute
)3.-在页面上水平居中 div(带
position: static
, 默认值)4.-在另一个 div 中水平居中 div
5.-在页面上水平和垂直居中 div
6.-在另一个 div 中垂直和水平居中 div
我认为这个问题-文章需要一个总结:
静态:默认值。该元素尊重其相对于父元素及其兄弟元素的位置,这决定了它在屏幕上的绘制顺序。
相对:将元素从其原始位置释放并结合上、下、左和右,允许我们相对于它移动它。其余元素的位置不受影响。
Absolute:与 relative 相同,但 top、bottom、left 和 right 属性将相对于第一个父元素定位,其位置值不是 static 或 initial,或者如果不存在,则为 HTML 元素。释放的空间被其余的兄弟元素占据。
固定:与 absolute 相同,只是元素始终相对于 :root 定位,因此它不受任何滚动的影响,甚至不受文档滚动的影响。
继承:继承直接父级的值。
Initial:返回初始值,在这种情况下是静态的。