欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > CSS 美化页面(五)

CSS 美化页面(五)

2025/4/20 10:13:54 来源:https://blog.csdn.net/hlx20080808/article/details/147320631  浏览:    关键词:CSS 美化页面(五)

一、position属性

属性值描述应用场景
static默认定位方式,元素遵循文档流正常排列,top/right/bottom/left 属性无效‌。普通文档流布局,默认布局,无需特殊定位。
relative相对定位,相对于元素原本位置进行偏移,但仍保留原空间‌。微调元素位置,或作为子元素绝对定位的基准(父元素设为 relative)‌。
absolute绝对定位,相对于最近的非 static 祖先元素定位,脱离文档流‌。创建浮动菜单、对话框,或重构页面布局(需配合父级 relative 使用)‌。
fixed固定定位,相对于视口定位,不随页面滚动改变位置‌。固定导航栏、回到顶部按钮等需要始终可见的元素‌。
sticky粘性定位,在特定滚动阈值前表现为 relative,超过后变为 fixed‌。实现滚动时固定表头、侧边导航栏等效果‌。

二、定位的应用

1、static 默认定位

<!DOCTYPE html>
<html lang="zh-cn">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>默认定位示例</title><style>/* 父容器样式 */.container {width: 300px;height: auto;background-color: #f0f8ff; /* 浅蓝色背景 */border: 2px solid #ddd;margin: 20px auto;padding: 10px; /* 内边距 */}/* 第一个盒子:默认定位 */.box1 {width: 100px;height: 100px;background-color: #4CAF50; /* 绿色背景 */margin-bottom: 10px; /* 下方间距 */}/* 第二个盒子:默认定位 */.box2 {width: 100px;height: 100px;background-color: #FF5722; /* 橙色背景 */margin-bottom: 10px; /* 下方间距 */}/* 第三个盒子:默认定位 */.box3 {width: 100px;height: 100px;background-color: #2196F3; /* 蓝色背景 */}</style>
</head>
<body><div class="container"><div class="box1">默认定位1</div><div class="box2">默认定位2</div><div class="box3">默认定位3</div></div>
</body>
</html>

  1. 排列方式

    • 三个盒子按照正常的文档流从上到下排列。
    • 每个盒子之间有一定的间距(通过 margin-bottom 设置)。
  2. 布局特点

    • 没有使用任何定位属性,盒子不会发生重叠,也不会偏移。

2、relative相对定位

<!DOCTYPE html>
<html lang="zh-cn">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>相对定位示例</title><style>/* 父容器样式 */.container {position: relative; /* 父容器设置为相对定位 */width: 300px;height: auto;background-color: #f0f8ff; /* 浅蓝色背景 */border: 2px solid #ddd;margin: 20px auto;padding: 10px; /* 内边距 */}/* 第一个盒子:相对定位 */.box1 {position: relative;width: 100px;height: 100px;background-color: #4CAF50; /* 绿色背景 */top: 10px; /* 向下偏移 10px */left: 10px; /* 向右偏移 10px */}/* 第二个盒子:相对定位 */.box2 {position: relative;width: 100px;height: 100px;background-color: #FF5722; /* 橙色背景 */top: 20px; /* 向下偏移 20px */left: 20px; /* 向右偏移 20px */}/* 第三个盒子:相对定位 */.box3 {position: relative;width: 100px;height: 100px;background-color: #2196F3; /* 蓝色背景 */top: 30px; /* 向下偏移 30px */left: 30px; /* 向右偏移 30px */}</style>
</head>
<body><div class="container"><div class="box1">相对定位1</div><div class="box2">相对定位2</div><div class="box3">相对定位3</div></div>
</body>
</html>
  1. 第一个盒子(绿色)

        相对于自身默认位置向下偏移 10px,向右偏移 10px。
  2. 第二个盒子(橙色)

        相对于自身默认位置向下偏移 20px,向右偏移 20px。
  3. 第三个盒子(蓝色)

        相对于自身默认位置向下偏移 30px,向右偏移 30px。

注意事项

  • 相对定位的特点

    • 元素仍然保留在文档流中,偏移后不会影响其他元素的布局。
    • 偏移的效果仅影响元素的视觉位置。
  • 重叠问题

    • 如果偏移量较大,可能会导致元素之间发生重叠。

3、absolute绝对定位

<!DOCTYPE html>
<html lang="zh-cn">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>绝对定位示例</title><style>/* 父容器样式 */.container {position: relative; /* 父容器设置为相对定位,作为子元素的定位参考点 */width: 300px;height: 300px;background-color: #f0f8ff; /* 浅蓝色背景 */border: 2px solid #ddd;margin: 20px auto;}/* 第一个盒子:绝对定位 */.box1 {position: absolute;width: 100px;height: 100px;background-color: #4CAF50; /* 绿色背景 */top: 10px; /* 距离父容器顶部 10px */left: 10px; /* 距离父容器左侧 10px */}/* 第二个盒子:绝对定位 */.box2 {position: absolute;width: 100px;height: 100px;background-color: #FF5722; /* 橙色背景 */top: 50px; /* 距离父容器顶部 50px */right: 10px; /* 距离父容器右侧 10px */}/* 第三个盒子:绝对定位 */.box3 {position: absolute;width: 100px;height: 100px;background-color: #2196F3; /* 蓝色背景 */bottom: 10px; /* 距离父容器底部 10px */left: 50px; /* 距离父容器左侧 50px */}</style>
</head>
<body><div class="container"><div class="box1">绝对定位1</div><div class="box2">绝对定位2</div><div class="box3">绝对定位3</div></div>
</body>
</html>
  1. 第一个盒子(绿色)

         位于父容器的左上角,距离顶部 10px,左侧 10px。
  2. 第二个盒子(橙色)

         位于父容器的右上角,距离顶部 50px,右侧 10px。
  3. 第三个盒子(蓝色)

         位于父容器的左下角,距离底部 10px,左侧 50px。

注意事项

  1. 定位参考点

    • 绝对定位的元素会相对于最近的定位祖先(position: relativeabsolute 或 fixed 的父级元素)进行定位。
    • 如果没有定位祖先,则相对于 html(视口)进行定位。
  2. 脱离文档流

    绝对定位的元素不会占据文档流中的空间,因此可能会与其他元素重叠。
  3. 灵活布局

    绝对定位适合用于弹窗、工具提示、精确布局等场景。

4、fix固定定位

<!DOCTYPE html>
<html lang="zh-cn">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>固定定位示例</title><style>/* 父容器样式 */.container {width: 300px;height: 300px;background-color: #f0f8ff; /* 浅蓝色背景 */border: 2px solid #ddd;margin: 20px auto;text-align: center;}/* 第一个盒子:固定定位 */.box1 {position: fixed;width: 100px;height: 100px;background-color: #4CAF50; /* 绿色背景 */top: 10px; /* 距离视口顶部 10px */left: 10px; /* 距离视口左侧 10px */}/* 第二个盒子:固定定位 */.box2 {position: fixed;width: 100px;height: 100px;background-color: #FF5722; /* 橙色背景 */top: 10px; /* 距离视口顶部 10px */right: 10px; /* 距离视口右侧 10px */}/* 第三个盒子:固定定位 */.box3 {position: fixed;width: 100px;height: 100px;background-color: #2196F3; /* 蓝色背景 */bottom: 10px; /* 距离视口底部 10px */left: 10px; /* 距离视口左侧 10px */}</style>
</head>
<body><div class="container"><p>滚动页面,观察固定定位效果。</p></div><div class="box1">固定定位</div><div class="box2">固定定位</div><div class="box3">固定定位</div>
</body>
</html>
  1. 第一个盒子(绿色)

        固定在视口的左上角,距离顶部 10px,左侧 10px。
  2. 第二个盒子(橙色)

         固定在视口的右上角,距离顶部 10px,右侧 10px。
  3. 第三个盒子(蓝色)

          固定在视口的左下角,距离底部 10px,左侧 10px。

 

注意事项

  1. 固定定位的特点

    • 元素相对于视口定位,不受父容器的影响。
    • 页面滚动时,固定定位的元素始终保持在指定位置。
  2. 适用场景

    • 固定导航栏。
    • 返回顶部按钮。
    • 固定广告或提示框。
  3. 重叠问题

    • 如果多个固定定位的元素位置重叠,可以通过 z-index 属性控制它们的层级。

5、sticky粘性定位

<!DOCTYPE html>
<html lang="zh-cn">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>粘性定位示例</title><style>/* 父容器样式 */.container {width: 300px;height: auto;background-color: #f0f8ff; /* 浅蓝色背景 */border: 2px solid #ddd;margin: 20px auto;padding: 10px; /* 内边距 */}/* 通用盒子样式 */.box {width: 100%;height: 100px;background-color: #4CAF50; /* 默认绿色背景 */margin-bottom: 20px; /* 下方间距 */text-align: center;line-height: 100px; /* 垂直居中 */color: #fff;font-size: 16px;}/* 第一个盒子:粘性定位 */.box1 {position: sticky;top: 0; /* 滚动到视口顶部时固定 */background-color: #4CAF50; /* 绿色背景 */}/* 第二个盒子:粘性定位 */.box2 {position: sticky;top: 50px; /* 滚动到距离视口顶部 50px 时固定 */background-color: #FF5722; /* 橙色背景 */}/* 第三个盒子:粘性定位 */.box3 {position: sticky;top: 100px; /* 滚动到距离视口顶部 100px 时固定 */background-color: #2196F3; /* 蓝色背景 */}</style>
</head>
<body><div class="container"><div class="box box1">粘性定位 - Box 1</div><div class="box box2">粘性定位 - Box 2</div><div class="box box3">粘性定位 - Box 3</div><p>滚动页面,观察粘性定位效果。</p><p style="height: 1000px;">这是一个长内容区域,用于测试粘性定位。</p></div>
</body>
</html>
  1. 第一个盒子(绿色)

        滚动到视口顶部时固定,直到父容器的内容滚动结束。
  2. 第二个盒子(橙色)

        滚动到距离视口顶部 50px 时固定,直到父容器的内容滚动结束。
  3. 第三个盒子(蓝色)

         滚动到距离视口顶部 100px 时固定,直到父容器的内容滚动结束。

注意事项

  1. 粘性定位的特点

    • position: sticky; 是相对定位和固定定位的结合。
    • 元素在滚动到指定位置时变为固定定位,但超出父容器范围后恢复正常流。
  2. 父容器的限制

    • 粘性定位的元素必须在一个有滚动内容的父容器中才能生效。
    • 如果父容器没有足够的高度,粘性定位可能无法触发。
  3. 浏览器支持

    • position: sticky; 在现代浏览器中支持良好,但在旧版 IE 中不支持。

三、综合应用

 1、数字定位在图片上

<!DOCTYPE html>
<html lang="zh-cn">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>数字定位在图片底部</title><style>/* 容器样式 */.image-container {position: relative; /* 设置父容器为相对定位 */width: 600px;height: 300px;margin: 20px auto;border:5px solid #69b8ec; /* 边框 */}/* 图片样式 */.image-container img {width: 100%;height: 100%;display: block;}/* 数字容器样式 */.number-container {position: absolute; /* 绝对定位 */bottom: 10px; /* 距离图片底部 10px */left: 50%; /* 水平居中 */transform: translateX(-50%); /* 水平居中对齐 */display: flex; /* 使用 flexbox 布局 */gap: 10px; /* 数字之间的间距 */}/* 数字样式 */.number {color: #fff; /* 白色字体 */font-size: 18px; /* 字体大小 */font-weight: bold; /* 加粗字体 */background-color: rgba(0, 0, 0, 0.5); /* 半透明黑色背景 */border-radius: 50%; /* 圆形背景 */width: 30px;height: 30px;line-height: 30px; /* 垂直居中 */text-align: center; /* 水平居中 */text-decoration: none; /* 去掉超链接下划线 */}/* 数字悬停效果 */.number:hover {background-color: rgba(209, 231, 166, 0.8); /* 背景变为白色 */color: #000; /* 字体变为黑色 */}</style>
</head>
<body><div class="image-container"><img src="https://imgs.699pic.com/images/500/363/911.jpg!seo.v1" alt="图片"><div class="number-container"><a href="#link1" class="number">1</a><a href="#link2" class="number">2</a><a href="#link3" class="number">3</a><a href="#link4" class="number">4</a><a href="#link5" class="number">5</a></div></div>
</body>
</html>

 

2、窗口两侧固定广告

<!DOCTYPE html>
<html lang="zh-cn">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>窗口两侧固定广告</title><style>/* 左侧广告样式 */.ad-left {position: fixed; /* 固定定位 */top: 50%; /* 垂直居中 */left: 0; /* 靠左 */transform: translateY(-50%); /* 垂直居中对齐 */width: 120px; /* 广告宽度 */height: 300px; /* 广告高度 */background-color: #4CAF50; /* 绿色背景 */color: #fff; /* 白色文字 */text-align: center; /* 水平居中 */line-height: 300px; /* 垂直居中 */font-size: 16px; /* 字体大小 */box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3); /* 阴影效果 */}/* 右侧广告样式 */.ad-right {position: fixed; /* 固定定位 */top: 50%; /* 垂直居中 */right: 0; /* 靠右 */transform: translateY(-50%); /* 垂直居中对齐 */width: 120px; /* 广告宽度 */height: 300px; /* 广告高度 */background-color: #FF5722; /* 橙色背景 */color: #fff; /* 白色文字 */text-align: center; /* 水平居中 */line-height: 300px; /* 垂直居中 */font-size: 16px; /* 字体大小 */box-shadow: -2px 2px 5px rgba(0, 0, 0, 0.3); /* 阴影效果 */}/* 页面内容样式 */.content {width: 80%;margin: 50px auto;font-size: 18px;line-height: 1.6;text-align: justify;}</style>
</head>
<body><!-- 左侧广告 --><div class="ad-left">左侧广告</div><!-- 右侧广告 --><div class="ad-right">右侧广告</div><!-- 页面内容 --><div class="content"><h1>content内容</h1><p>这是一个页面,展示如何在窗口的左右两边添加固定广告。无论页面如何滚动,广告始终保持在视口的两侧。</p><p>通过使用 CSS 的固定定位(`position: fixed`),可以轻松实现这种效果。固定定位的元素相对于视口进行定位,不会随页面滚动而移动。</p><p>这种布局常用于广告、导航栏或其他需要始终可见的元素。</p><p style="height: 2000px;">滚动页面,观察广告始终固定在窗口两侧的效果。</p></div>
</body>
</html>

  1. 左侧广告始终固定在视口的左侧,垂直居中。
  2. 右侧广告始终固定在视口的右侧,垂直居中。
  3. 页面滚动时,广告不会移动,始终保持在窗口两侧。

四、总结

相对定位:一般情况下很少自己单独使用,都是配合绝对定位使用,为绝对定位创造定位父级而又不设置偏移量 。

绝对定位:一般用在下拉菜单、焦点图轮播、弹出数字气泡、特别花边等场景。

固定定位:一般在网页中被用在窗口左右两边的固定广告、返回顶部图标、吸顶导航栏等

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词