使用CSS创建固定左侧容器实现垂直布局:技能列表与主内容区实践


使用CSS创建固定左侧容器实现垂直布局:技能列表与主内容区实践

本教程将详细指导如何利用CSS的position: fixed属性,在网页中创建一个垂直固定在左侧的容器,用于展示技能列表或导航,同时确保右侧主内容区域的正常布局。文章将提供HTML结构和CSS样式示例,并探讨关键布局技巧与注意事项,帮助开发者构建清晰、专业的网页界面。

1. 理解核心概念:CSS position 属性

在网页布局中,实现元素固定定位的关键在于css的position属性。

  • position: fixed: 当一个元素被设置为position: fixed时,它会从正常的文档流中移除,并相对于浏览器视口(viewport)进行定位。这意味着无论用户如何滚动页面,该元素都会保持在屏幕上的固定位置。通过配合top、bottom、left、right属性,可以精确控制其在视口中的位置。

  • position: sticky: 作为fixed的替代方案,position: sticky提供了一种“粘性”定位。元素在达到某个滚动阈值之前表现为相对定位,一旦滚动到设定的位置,它就会像fixed元素一样固定在那里。这在某些导航栏或侧边栏需要先随页面滚动,然后才固定时非常有用。对于本教程的需求(页面加载即固定),fixed是更直接的选择。

2. 构建基础HTML结构

为了实现左侧固定容器和右侧主内容区的布局,我们需要两个主要的div元素:一个用于固定侧边栏,另一个用于承载主内容。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>简历页面布局</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>

    <!-- 固定左侧容器:用于技能列表 -->
    <div class="fixed-sidebar">
        <h3>我的技能</h3>
        <ul>
            <li>HTML5</li>
            <li>CSS3</li>
            <li>J*aScript (ES6+)</li>
            <li>React.js</li>
            <li>Node.js</li>
            <li>Git / GitHub</li>
            <li>Responsive Design</li>
        </ul>
        <!-- 更多技能... -->
    </div>

    <!-- 主内容区域:用于职业经历、教育背景等 -->
    <div class="main-content">
        <h1>我的个人简历</h1>
        <h2>职业经历</h2>
        <p><strong>公司A - 前端开发工程师</strong></p>
        <p>2025年3月 - 至今</p>
        <ul>
            <li>负责公司产品前端页面的开发与维护。</li>
            <li>参与新功能的需求分析、技术选型和架构设计。</li>
            <li>优化页面性能,提升用户体验。</li>
            <li>与后端团队紧密协作,完成项目交付。</li>
        </ul>

        <h2>教育背景</h2>
        <p><strong>大学B - 计算机科学与技术</strong></p>
        <p>2016年9月 - 2025年7月</p>
        <ul>
            <li>获得学士学位。</li>
            <li>主修数据结构、算法、操作系统等课程。</li>
        </ul>

        <h2>项目经验</h2>
        <p><strong>项目X - 在线商城系统</strong></p>
        <p>负责前端模块开发,使用React构建用户界面,实现商品展示、购物车、订单管理等功能。</p>
                    <div class="aritcle_card">
                        <a class="aritcle_card_img" href="/ai/1275">
                            <img src="https://img.php.cn/upload/ai_manual/001/431/639/68b6da8ca7356656.jpg" alt="Facetune">
                        </a>
                        <div class="aritcle_card_info">
                            <a href="/ai/1275">Facetune</a>
                            <p>一款在线照片和视频编辑工具,允许用户创建AI头像</p>
                            <div class="">
                                <img src="/static/images/card_xiazai.png" alt="Facetune">
                                <span>109</span>
                            </div>
                        </div>
                        <a href="/ai/1275" class="aritcle_card_btn">
                            <span>查看详情</span>
                            <img src="/static/images/cardxiayige-3.png" alt="Facetune">
                        </a>
                    </div>
                

        <!-- 添加更多内容以演示页面滚动效果 -->
        <p>为了更好地展示页面滚动时固定侧边栏的效果,这里添加了更多占位文本。请注意观察左侧的技能列表,它将始终保持在屏幕的可见区域内,而右侧的主内容区域则可以自由滚动。</p>
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
        <p>Curabitur pretium tincidunt lacus. Nulla gr*ida orci a odio. Nullam varius, turpis et commodo pharetra, est eros bibendum elit, nec luctus magna felis sollicitudin mauris. Integer in mauris eu nibh euismod gr*ida. Duis ac tellus et risus auctor iaculis. Aenean placerat. In in enim a arcu ornare hendrerit. Sed sed lectus. Aliquam eleifend et, dapibus adipiscing, elit. Sed ut dolor. Ut ac est. Integer ac sapien. In in enim a arcu ornare hendrerit. Sed sed lectus. Aliquam eleifend et, dapibus adipiscing, elit. Sed ut dolor. Ut ac est. Integer ac sapien.</p>
        <p>Proin ut quam non est volutpat mollis. Sed ut dolor. Ut ac est. Integer ac sapien. In in enim a arcu ornare hendrerit. Sed sed lectus. Aliquam eleifend et, dapibus adipiscing, elit. Sed ut dolor. Ut ac est. Integer ac sapien. In in enim a arcu ornare hendrerit. Sed sed lectus. Aliquam eleifend et, dapibus adipiscing, elit. Sed ut dolor. Ut ac est. Integer ac sapien.</p>
    </div>

</body>
</html>

3. 应用CSS样式实现布局

接下来,我们将创建styles.css文件,并为上述HTML结构添加样式,实现固定左侧容器和主内容区的布局。

/* styles.css */

/* 重置默认浏览器样式 */
body {
    margin: 0;
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
    color: #333;
    line-height: 1.6;
}

/* 固定左侧容器样式 */
.fixed-sidebar {
    position: fixed; /* 关键:使元素固定在视口中 */
    top: 0;          /* 距离视口顶部0距离 */
    left: 0;         /* 距离视口左侧0距离 */
    width: 220px;    /* 设置侧边栏宽度 */
    height: 100vh;   /* 设置侧边栏高度为视口高度 */
    background-color: #f8f8f8; /* 侧边栏背景色 */
    padding: 20px;   /* 内边距 */
    box-shadow: 2px 0 8px rgba(0,0,0,0.1); /* 阴影效果 */
    overflow-y: auto; /* 如果内容溢出,允许垂直滚动 */
    box-sizing: border-box; /* 确保padding包含在width内 */
    z-index: 100; /* 确保侧边栏在其他内容之上 */
}

.fixed-sidebar h3 {
    margin-top: 0;
    color: #0056b3;
    border-bottom: 1px solid #eee;
    padding-bottom: 10px;
    margin-bottom: 20px;
}

.fixed-sidebar ul {
    list-style: none; /* 移除列表默认样式 */
    padding: 0;
    margin: 0;
}

.fixed-sidebar li {
    margin-bottom: 10px;
    padding: 5px 0;
    color: #555;
    font-size: 0.95em;
}

/* 主内容区域样式 */
.main-content {
    /* 关键:为主要内容区域设置左外边距,以避免被固定侧边栏覆盖 */
    margin-left: 220px; /* 必须与.fixed-sidebar的宽度相同 */
    padding: 30px; /* 内边距 */
    max-width: 800px; /* 限制主内容最大宽度,提高可读性 */
    margin-right: auto; /* 配合max-width实现居中 */
    margin-left: 250px; /* 调整以适配侧边栏宽度+padding */
}

.main-content h1, .main-content h2 {
    color: #222;
    margin-top: 40px;
    margin-bottom: 20px;
    border-bottom: 1px solid #eee;
    padding-bottom: 10px;
}

.main-content h1 {
    font-size: 2.5em;
}

.main-content h2 {
    font-size: 1.8em;
    color: #0056b3;
}

.main-content p {
    margin-bottom: 1em;
}

.main-content ul {
    margin-left: 20px;
    list-style: disc;
}

.main-content li {
    margin-bottom: 0.5em;
}

/* 媒体查询:适应小屏幕设备 */
@media (max-width: 768px) {
    .fixed-sidebar {
        position: relative; /* 在小屏幕上改为相对定位 */
        width: 100%;       /* 占据全部宽度 */
        height: auto;      /* 高度自适应内容 */
        box-shadow: 0 2px 8px rgba(0,0,0,0.1); /* 调整阴影 */
        padding: 15px;
    }

    .main-content {
        margin-left: 0;    /* 移除左外边距 */
        padding: 20px;
        max-width: none;   /* 移除最大宽度限制 */
    }

    .fixed-sidebar h3 {
        text-align: center;
        margin-bottom: 10px;
    }

    .fixed-sidebar ul {
        display: flex; /* 技能列表横向排列 */
        flex-wrap: wrap;
        justify-content: center;
    }

    .fixed-sidebar li {
        margin: 5px 10px;
        border: 1px solid #ddd;
        padding: 5px 10px;
        border-radius: 5px;
        background-color: #fff;
    }
}

4. 注意事项与最佳实践

  • margin-left 的重要性: 当使用position: fixed将侧边栏固定后,它会脱离文档流。这意味着主内容区域会向上移动,可能会被侧边栏覆盖。为了避免这种情况,必须给主内容区域设置一个左外边距(margin-left),其值应等于或略大于固定侧边栏的宽度。

  • 初学者建议:先掌握原生CSS: 对于刚接触Web开发的初学者,建议优先学习和掌握原生HTML、CSS和J*aScript。过早依赖Bootstrap、Tailwind CSS等CSS框架可能会让你在不理解底层原理的情况下,难以调试和自定义样式。理解position、display、flexbox、grid等核心概念是构建复杂布局的基础。

  • 响应式设计: 固定侧边栏在桌面端表现良好,但在移动设备上可能会占据过多屏幕空间或导致布局混乱。因此,强烈建议使用CSS媒体查询(@media规则)来调整布局。例如,在小屏幕上可以将固定侧边栏改为堆叠在主内容上方,或通过点击按钮显示/隐藏。示例代码中已包含一个简单的响应式处理。

  • z-index 的使用: 如果页面中有其他元素可能与固定侧边栏重叠,可以使用z-index属性来控制它们的堆叠顺序。给侧边栏设置一个较高的z-index值(例如z-index: 100),可以确保它始终显示在其他内容之上。

  • 滚动行为: position: fixed的元素不会随页面滚动,但其自身如果内容溢出(如技能列表过长),可以通过overflow-y: auto使其内部滚动。

5. 总结

通过本教程,您应该已经掌握了如何使用CSS的position: fixed属性来创建一个固定在页面左侧的容器,并合理布局右侧的主内容区域。这种布局模式在简历页面、管理后台侧边导航、博客文章目录等场景中非常常见。记住,理解CSS的核心布局原理,并结合响应式设计思想,才能构建出既美观又实用的网页界面。

以上就是使用CSS创建固定左侧容器实现垂直布局:技能列表与主内容区实践的详细内容,更多请关注其它相关文章!


# 创建一个  # seo怎么连接原文  # 资源网站宣传推广  # 洛阳seo优化运营  # 梧州高端网站建设服务  # 抖音seo专业优化  # 月饼营销推广视频大全  # 网站优化目标标语  # 济南网站建设找谁  # https 网站建设  # 杭州首页seo  # 在那里  # 这意味着  # 文档  # 口中  # 屏幕上  # css  # 它会  # 背景色  # 两种  # 移除  # bootst  # node.js  # 前端  # js  # html  # css3  # java  # es6  # javascript  # react 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894 】


相关推荐: iphone16系列配置参数介绍  wps文字怎么设置文字环绕图片的方式_wps文字如何设置文字环绕图片方式  店铺如何关联视频号推广?视频号推广有什么用?  LocoySpider如何批量采集电商商品_LocoySpider电商采集的模板应用  如何测试您的网站全球打开速度-网站海外测速工  使用VS Code调试Python代码:从入门到精通  路由器DNS怎么设置最快 优化DNS提升上网速度教程  AngularJS动态内容中DOM元素查找的时序问题及$timeout解决方案  解决CSS background 属性中 cover 关键字的常见误用  斯宾塞称XGP云游戏“蒸蒸日上”:正在构建一个游戏从未如此唾手可得的未来  yandex网页版直接登录 yandex官方入口平台访问方法  如何在CSS中设置背景图像:一个全面指南  邮编号码查询app有哪些_邮编号码查询推荐app及使用体验  快手网页版官方访问 快手网页版页面在线打开  b站怎么查看视频的码率_b站视频码率查看方法  《撕歌》会员开通方法  构建可配置的J*aScript加权点击计数器与共享总计功能  高德地图导航路线偏差报警频繁怎么办 高德地图路线偏差修复与优化方法  小米手机截图后如何查看历史_小米手机截图历史记录查看方法  CSS绝对定位与溢出控制:实现背景元素局部显示不触发滚动条  CodeIgniter 3 连接 SQL Server:正确获取查询结果的教程  胃动力不足?试试这5个调理方法  火柴人战争网页版在线玩  Word如何将文字快速转成表格 Word文本转换成表格功能使用技巧【效率】  Golang如何实现HTTP请求重试机制_Golang HTTP请求错误处理策略  Mac怎么关闭按键声音_Mac键盘打字音效设置  多闪电脑版下载_多闪PC端模拟器使用  汽水音乐官网网页版入口 汽水音乐官网网页版在线入口  《随手记》启用语音备注方法  《海底捞》点外卖方法  Bootstrap 5导航栏折叠功能失效:数据属性迁移指南  mysql通配符能用于日志查询吗_mysql通配符在系统日志查询中的实际使用方法  mysql触发器如何编写_mysql触发器编写规范与代码示例讲解  中大网校app做题记录清除方法  Win10运行窗口在哪里打开 Win10调出运行命令框快捷键【技巧】  如何在CSS中清除浮动解决背景颜色不包裹内容问题_clear after技巧  QQ网页版入口导航 QQ网页版在线访问通道  荣耀Magic7拍照夜景噪点处理_荣耀Magic7相机优化  在J*a中如何实现在线问答与评分系统_问答评分项目开发方法说明  12306售票时间最新规定 | 网上订票和车站窗口时间一样吗  电脑没有声音了怎么办 电脑声音问题的全面排查与修复指南【详解】  Word 2003字体大小设置方法  Git命令与VS Code UI操作的对应关系解析  SQLAlchemy 2.0 与 Pydantic 模型类型安全集成指南  荣耀magicv5怎么上手测评  sublime如何撤销关闭的标签页_sublime重新打开已关闭文件技巧  Python中处理嵌套字典与列表的数据提取与过滤教程  腾讯QQ邮箱官方入口 QQ邮箱网页版登录平台  猫眼电影app如何设置电影上映提醒_猫眼电影上映提醒设置教程  圆通快递官网入口查询单号 手机版官方查询入口 

 2025-10-10

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.