1.static:(默认值)这是元素的默认值。除非另外指定,否则所有元素都使用 static 定位。top、bottom、left、right 和 z-index 属性将无效。
2.relative:(相对定位)元素相对于其正常位置进行定位。因此,"left:20px" 会向元素的左边添加 20 像素。其他属性(如 top、right 和 bottom)也以类似的方式工作。即使元素移动,它仍然保留其在文档流中的空间。
3.absolute:(绝对定位)元素相对于最近的已定位父元素(即 position 不为 static 的元素)进行定位。如果没有已定位的父元素,那么它会相对于初始包含块进行定位。
4.fixed:(固定定位)元素相对于浏览器窗口进行定位,即使页面滚动,它仍然会停留在同一的位置。top、bottom、left、right 等属性将设置元素相对于浏览器窗口的位置。
5.sticky:(粘性定位)这是相对于用户的滚动位置定位的元素,基本上是一种相对定位和固定定位的混合。一个 sticky 元素在用户滚动超过其滚动阈值之前为相对定位,之后为固定定位。
固定导航栏使用sticky属性,我们可以很容易地实现导航栏在滚动到特定位置后固定在屏幕顶部的效果,而无需使用JavaScript来动态添加或删除position:fixed属性。这不仅简化了代码,还提高了用户体验,避免了由于JavaScript滚动事件处理不当而导致的页面抖动问题。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Fixed Title with Sticky Position</title>
<style>
/* 在这里添加CSS样式 */
</style>
</head>
<body>
<header>
<h1 class="sticky-title">固定在顶部的标题</h1>
</header>
<main>
<p>这里是页面的主要内容...</p >
<!-- 添加更多内容,使页面可以滚动 -->
</main>
</body>
</html>
body {
margin: 0;
padding: 0;
font-family: Arial, sans-serif;
}
header {
position: sticky;
top: 0;
background-color: #333;
color: white;
padding: 10px 0;
text-align: center;
z-index: 100; /* 确保标题在内容之上 */
}
main {
padding-top: 50px; /* 为内容添加上边距,以避开固定的标题 */
}
在这个例子中,CSS样式定义了header的position为sticky,并设置top为0,这样当页面向下滚动时,标题会固定在浏览器的顶部。同时,z-index属性确保标题在其他内容之上。
main元素有一个padding-top,用于确保当标题固定在顶部时,内容不会覆盖标题下方的空间。