← CSS background-blend-mode 属性 CSS border-image 边框图像 →

CSS bottom 属性

原创 2025-09-07 CSS 已有人查阅

CSS bottom 属性详解:定位元素的底部位置控制

概述

CSS bottom 属性用于控制定位元素的垂直底部位置,是CSS定位系统中四个方向属性(top、right、bottom、left)之一。该属性只对定位元素(position值不为static的元素)生效,用于精确控制元素在垂直方向上的位置。

基本语法

selector {
  bottom: auto | length | percentage | initial | inherit;
}

属性值详解

1. auto(默认值)

浏览器自动计算元素的底部位置,基于正常文档流。

2. length

使用固定单位(px、pt、cm、em等)设置底部位置,可以是正值或负值。

3. percentage

使用百分比设置底部位置,相对于包含块的高度计算。

4. initial

将属性重置为默认值(auto)。

5. inherit

继承父元素的bottom属性值。

不同定位方式下的行为

相对定位(position: relative)

元素相对于其正常位置进行偏移,文档流中的原空间保留。

绝对定位(position: absolute)

元素相对于最近的非static定位祖先元素的底部边缘定位。

固定定位(position: fixed)

元素相对于浏览器视窗的底部边缘定位,滚动页面时位置不变。

粘性定位(position: sticky)

在特定滚动阈值内,元素在相对定位和固定定位之间切换。

基础示例

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>代码号 - CSS bottom 属性基础示例</title>
    <style>
        .container {
            position: relative;
            width: 400px;
            height: 400px;
            margin: 0 auto;
            border: 2px solid #3498db;
            background-color: #f8f9fa;
        }
        
        .box {
            position: absolute;
            width: 100px;
            height: 100px;
            text-align: center;
            line-height: 100px;
            color: white;
            font-weight: bold;
        }
        
        .box1 {
            background-color: #e74c3c;
            bottom: 50px;
            left: 50px;
        }
        
        .box2 {
            background-color: #2ecc71;
            bottom: 120px;
            left: 180px;
        }
        
        .box3 {
            background-color: #f39c12;
            bottom: 200px;
            left: 280px;
        }
        
        .description {
            text-align: center;
            margin: 20px auto;
            max-width: 600px;
            font-family: Arial, sans-serif;
        }
    </style>
</head>
<body>
    <div class="description">
        <h2>代码号CSS学习:bottom属性基础应用</h2>
        <p>以下示例展示了使用不同bottom值对绝对定位元素位置的影响</p>
    </div>
    
    <div class="container">
        <div class="box box1">bottom: 50px</div>
        <div class="box box2">bottom: 120px</div>
        <div class="box box3">bottom: 200px</div>
    </div>
</body>
</html>

不同定位类型的示例

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>代码号 - 不同定位类型的bottom属性示例</title>
    <style>
        body {
            margin: 0;
            padding: 20px;
            font-family: Arial, sans-serif;
            height: 1500px; /* 为了演示固定定位 */
        }
        
        .example-section {
            margin: 40px 0;
            padding: 20px;
            border: 1px solid #ddd;
            border-radius: 8px;
            background-color: #f9f9f9;
        }
        
        .example-title {
            color: #2c3e50;
            border-bottom: 2px solid #3498db;
            padding-bottom: 10px;
        }
        
        /* 相对定位示例 */
        .relative-container {
            position: relative;
            height: 200px;
            border: 2px dashed #95a5a6;
            background-color: #ecf0f1;
            margin: 20px 0;
        }
        
        .relative-box {
            position: relative;
            width: 100px;
            height: 100px;
            background-color: #9b59b6;
            color: white;
            text-align: center;
            line-height: 100px;
            bottom: -30px; /* 相对定位中使用负值 */
            left: 50px;
        }
        
        /* 绝对定位示例 */
        .absolute-container {
            position: relative;
            height: 200px;
            border: 2px dashed #95a5a6;
            background-color: #ecf0f1;
            margin: 20px 0;
        }
        
        .absolute-box {
            position: absolute;
            width: 100px;
            height: 100px;
            background-color: #e74c3c;
            color: white;
            text-align: center;
            line-height: 100px;
            bottom: 20px;
            right: 30px;
        }
        
        /* 固定定位示例 */
        .fixed-box {
            position: fixed;
            width: 120px;
            height: 60px;
            background-color: #f39c12;
            color: white;
            text-align: center;
            line-height: 60px;
            bottom: 40px;
            right: 40px;
            border-radius: 6px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.2);
        }
        
        /* 粘性定位示例 */
        .sticky-header {
            position: sticky;
            bottom: 20px;
            background-color: #2ecc71;
            color: white;
            padding: 15px;
            text-align: center;
            margin-top: 30px;
            border-radius: 6px;
        }
    </style>
</head>
<body>
    <h1 style="text-align: center;">代码号CSS定位属性学习</h1>
    
    <div class="example-section">
        <h2 class="example-title">相对定位中的bottom属性</h2>
        <p>在相对定位中,bottom属性使元素相对于其正常位置向上移动。</p>
        <div class="relative-container">
            <div class="relative-box">bottom: -30px</div>
            <p>此元素使用相对定位,bottom值为-30px,使其向上移动。</p>
        </div>
    </div>
    
    <div class="example-section">
        <h2 class="example-title">绝对定位中的bottom属性</h2>
        <p>在绝对定位中,bottom属性指定元素底部与包含块底部的距离。</p>
        <div class="absolute-container">
            <div class="absolute-box">bottom: 20px</div>
            <p>此元素使用绝对定位,距离包含块底部20px。</p>
        </div>
    </div>
    
    <div class="example-section">
        <h2 class="example-title">固定定位中的bottom属性</h2>
        <p>在固定定位中,bottom属性指定元素底部与视窗底部的距离。</p>
        <div class="fixed-box">底部固定元素</div>
        <p>滚动页面时,此元素将始终保持在视窗底部上方40px的位置。</p>
    </div>
    
    <div class="example-section">
        <h2 class="example-title">粘性定位中的bottom属性</h2>
        <p>在粘性定位中,当元素到达指定阈值时,会从相对定位变为固定定位。</p>
        <div style="height: 800px; position: relative;">
            <div class="sticky-header">粘性头部 - 滚动到页面底部查看效果</div>
            <p>继续向下滚动,当此元素距离视窗底部20px时,它将变为固定定位。</p>
        </div>
    </div>
</body>
</html>

实际应用场景

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>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        
        body {
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            background-color: #f5f7fa;
            color: #333;
            line-height: 1.6;
        }
        
        .container {
            max-width: 1000px;
            margin: 0 auto;
            padding: 20px;
        }
        
        header {
            background: linear-gradient(135deg, #6a11cb 0%, #2575fc 100%);
            color: white;
            padding: 40px 20px;
            text-align: center;
            border-radius: 0 0 10px 10px;
            margin-bottom: 30px;
        }
        
        .content {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
            gap: 20px;
            margin-bottom: 100px;
        }
        
        .card {
            background: white;
            border-radius: 8px;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
            padding: 20px;
            transition: transform 0.3s ease;
        }
        
        .card:hover {
            transform: translateY(-5px);
        }
        
        .card h3 {
            color: #2575fc;
            margin-bottom: 15px;
        }
        
        /* 底部导航栏样式 */
        .bottom-nav {
            position: fixed;
            bottom: 0;
            left: 0;
            width: 100%;
            background-color: white;
            box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1);
            display: flex;
            justify-content: space-around;
            padding: 12px 0;
            z-index: 1000;
        }
        
        .nav-item {
            display: flex;
            flex-direction: column;
            align-items: center;
            text-decoration: none;
            color: #777;
            font-size: 12px;
            transition: color 0.3s;
        }
        
        .nav-item:hover {
            color: #2575fc;
        }
        
        .nav-icon {
            font-size: 20px;
            margin-bottom: 4px;
        }
        
        .active {
            color: #2575fc;
        }
        
        footer {
            text-align: center;
            padding: 20px;
            margin-top: 40px;
            color: #777;
        }
    </style>
</head>
<body>
    <header>
        <h1>代码号CSS学习平台</h1>
        <p>掌握CSS定位属性,构建精美网页布局</p>
    </header>
    
    <div class="container">
        <div class="content">
            <div class="card">
                <h3>HTML基础教程</h3>
                <p>学习HTML标记语言的基本结构和常用标签,为网页开发打下坚实基础。</p>
            </div>
            
            <div class="card">
                <h3>CSS样式设计</h3>
                <p>掌握CSS各种属性用法,包括布局、颜色、字体和动画效果。</p>
            </div>
            
            <div class="card">
                <h3>JavaScript编程</h3>
                <p>从基础语法到高级应用,全面学习网页交互功能的实现。</p>
            </div>
            
            <div class="card">
                <h3>响应式设计</h3>
                <p>学习如何创建适应不同屏幕尺寸的网页布局和设计。</p>
            </div>
            
            <div class="card">
                <h3>前端框架</h3>
                <p>探索流行前端框架如React、Vue和Angular的使用方法。</p>
            </div>
            
            <div class="card">
                <h3>项目实战</h3>
                <p>通过实际项目练习,巩固所学知识并积累开发经验。</p>
            </div>
        </div>
    </div>
    
    <!-- 底部导航栏 -->
    <nav class="bottom-nav">
        <a href="https://www.ebingou.cn/" class="nav-item active">
            <span class="nav-icon">❄️</span>
            <span>首页</span>
        </a>
        <a href="https://www.ebingou.cn/jiaocheng/" class="nav-item">
            <span class="nav-icon">✨</span>
            <span>教程</span>
        </a>
        <a href="https://www.ebingou.cn/biancheng/" class="nav-item">
            <span class="nav-icon">⚙️</span>
            <span>编程</span>
        </a>
        <a href="https://www.ebingou.cn/yuanma/" class="nav-item">
            <span class="nav-icon">⚡</span>
            <span>源码</span>
        </a>
    </nav>
    
    <footer>
        <p>© 2023 代码号编程学习平台 - 提供优质的IT技术教程资源</p>
    </footer>
</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>
        body {
            font-family: 'Arial', sans-serif;
            margin: 0;
            padding: 20px;
            background-color: #f0f2f5;
            color: #333;
        }
        
        .container {
            max-width: 800px;
            margin: 0 auto;
            padding: 20px;
        }
        
        h1 {
            text-align: center;
            color: #2c3e50;
            margin-bottom: 30px;
        }
        
        .button {
            display: inline-block;
            padding: 12px 24px;
            background-color: #3498db;
            color: white;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            font-size: 16px;
            transition: background-color 0.3s;
            margin: 10px;
        }
        
        .button:hover {
            background-color: #2980b9;
        }
        
        /* 模态框样式 */
        .modal {
            display: none;
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(0, 0, 0, 0.6);
            z-index: 1000;
            justify-content: center;
            align-items: center;
        }
        
        .modal-content {
            background-color: white;
            width: 90%;
            max-width: 500px;
            border-radius: 8px;
            padding: 30px;
            box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
            position: relative;
        }
        
        .close {
            position: absolute;
            top: 15px;
            right: 15px;
            font-size: 24px;
            cursor: pointer;
            color: #777;
        }
        
        /* 底部提示信息 */
        .toast {
            position: fixed;
            bottom: 20px;
            left: 50%;
            transform: translateX(-50%);
            background-color: #333;
            color: white;
            padding: 12px 24px;
            border-radius: 4px;
            box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
            z-index: 1001;
            display: none;
        }
        
        .notification {
            position: fixed;
            bottom: 80px;
            right: 20px;
            background-color: white;
            border-left: 4px solid #2ecc71;
            padding: 15px;
            border-radius: 4px;
            box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
            max-width: 300px;
            display: none;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>代码号CSS定位实战示例</h1>
        
        <p>这个示例展示了如何使用CSS bottom属性创建模态框和提示信息。</p>
        
        <div style="text-align: center; margin: 40px 0;">
            <button class="button" onclick="openModal()">打开模态框</button>
            <button class="button" onclick="showToast()">显示底部提示</button>
            <button class="button" onclick="showNotification()">显示通知</button>
        </div>
        
        <div class="content">
            <h2>关于bottom属性的使用技巧</h2>
            <p>在CSS中,bottom属性通常与position属性一起使用,用于控制定位元素的垂直位置。</p>
            
            <h3>使用场景:</h3>
            <ul>
                <li>固定底部导航栏</li>
                <li>模态框和弹出层</li>
                <li>提示信息和通知</li>
                <li>页脚定位</li>
                <li>粘性元素</li>
            </ul>
            
            <h3>注意事项:</h3>
            <ul>
                <li>bottom属性只对定位元素(非static)有效</li>
                <li>使用百分比值时,相对于包含块的高度计算</li>
                <li>负值会使元素向相反方向移动</li>
                <li>在响应式设计中,结合媒体查询使用效果更好</li>
            </ul>
        </div>
    </div>
    
    <!-- 模态框 -->
    <div id="modal" class="modal">
        <div class="modal-content">
            <span class="close" onclick="closeModal()">&times;</span>
            <h2>欢迎访问代码号</h2>
            <p>代码号是一个专注于编程学习的平台,提供HTML、CSS、JavaScript等前端技术的详细教程和实践项目。</p>
            <p>我们的使命是帮助开发者提升技能,构建出色的网页和应用。</p>
            <div style="text-align: center; margin-top: 20px;">
                <button class="button" onclick="closeModal()">开始学习</button>
            </div>
        </div>
    </div>
    
    <!-- 底部提示 -->
    <div id="toast" class="toast">
        操作成功!底部提示信息示例。
    </div>
    
    <!-- 通知 -->
    <div id="notification" class="notification">
        <strong>新消息</strong>
        <p>您有一个新的学习任务待完成。</p>
    </div>
    
    <script>
        function openModal() {
            document.getElementById('modal').style.display = 'flex';
        }
        
        function closeModal() {
            document.getElementById('modal').style.display = 'none';
        }
        
        function showToast() {
            const toast = document.getElementById('toast');
            toast.style.display = 'block';
            setTimeout(() => {
                toast.style.display = 'none';
            }, 3000);
        }
        
        function showNotification() {
            const notification = document.getElementById('notification');
            notification.style.display = 'block';
            setTimeout(() => {
                notification.style.display = 'none';
            }, 5000);
        }
        
        // 点击模态框外部关闭
        window.onclick = function(event) {
            const modal = document.getElementById('modal');
            if (event.target === modal) {
                closeModal();
            }
        }
    </script>
</body>
</html>

本节课程知识要点

  1. bottom属性只对定位元素有效:必须设置position值为relative、absolute、fixed或sticky

  2. 不同定位上下文中的行为差异

    • 相对定位:相对于元素自身原有位置移动

    • 绝对定位:相对于最近定位祖先元素的底部边缘

    • 固定定位:相对于浏览器视窗底部边缘

    • 粘性定位:在特定滚动阈值内切换行为

  3. 取值方式

    • 使用固定单位(px、em等)精确控制位置

    • 使用百分比实现响应式布局

    • 负值使元素向相反方向移动

  4. 实际应用场景

    • 底部导航栏和页脚

    • 模态框和弹出层

    • 提示信息和通知

    • 粘性元素设计

  5. 注意事项

    • 在移动端设计中考虑bottom属性与虚拟键盘的交互

    • 结合left/right属性实现水平居中布局

    • 使用CSS过渡和动画增强用户体验

通过掌握bottom属性的使用方法,开发者可以更精确地控制页面元素的垂直位置,创建出更具吸引力和功能性的网页布局。

← CSS background-blend-mode 属性 CSS border-image 边框图像 →
分享笔记 (共有 篇笔记)
验证码:
微信公众号