0

0

css布局项目实战_制作一个带有侧边栏的博客模板

P粉602998670

P粉602998670

发布时间:2026-01-14 11:54:02

|

895人浏览过

|

来源于php中文网

原创

最稳妥的侧边栏固定+主内容自适应布局用 display: flex;.sidebar 设固定宽260px,.main 必须设 flex: 1 和 min-width: 0;侧边栏滚动需 height: calc(100vh - 64px) + overflow-y: auto;图片和代码块需 max-width: 100%、pre 加 overflow-x: auto;收起时需同步修改 .main 为 width: 100%。

css布局项目实战_制作一个带有侧边栏的博客模板

侧边栏固定宽度 + 主内容自适应的 flex 布局写法

display: flex 是目前最稳妥的方案,避免浮动或绝对定位带来的流式断裂问题。主区域必须设 flex: 1,否则在小屏下会溢出或塌陷。

.container {
  display: flex;
}
.sidebar {
  width: 260px; /* 固定宽度,不建议用 % */
}
.main {
  flex: 1; /* 关键:撑满剩余空间 */
  min-width: 0; /* 防止内容过长时 flex 项不收缩 */
}
  • 别给 .mainwidth: 100% —— 它会和 .sidebar 冲突,导致换行
  • min-width: 0 必须加,否则内部 text-overflow: ellipsis 或长单词可能失效
  • 如果侧边栏需要响应式隐藏,用 flex: none + display: none 组合,不要只靠 display

侧边栏滚动独立于主内容的 overflow 处理

用户常误以为给 .sidebaroverflow-y: auto 就够了,但实际需配合高度约束,否则滚动条不会出现。

.sidebar {
  height: calc(100vh - 64px); /* 减去 header 高度 */
  overflow-y: auto;
}
.sidebar::-webkit-scrollbar {
  width: 6px;
}
.sidebar::-webkit-scrollbar-thumb {
  background: #ccc;
}
  • 高度必须是「可计算值」,height: 100% 在 flex 容器里通常无效
  • calc() 比 JS 动态算更轻量,也避免 SSR 渲染错位
  • 滚动条样式仅在 WebKit 内核生效;若需全平台统一,得用第三方库(如 simplebar

博客正文图片与代码块的宽度越界问题

Markdown 渲染后的 <img alt="css布局项目实战_制作一个带有侧边栏的博客模板" ><pre class="brush:php;toolbar:false;">&lt;/code&gt; 默认按原始尺寸显示,极易突破 &lt;code&gt;.main&lt;/code&gt; 宽度,尤其在移动设备上。&lt;/p&gt;&lt;div class=&quot;aritcle_card flexRow&quot;&gt; &lt;div class=&quot;artcardd flexRow&quot;&gt; &lt;a class=&quot;aritcle_card_img&quot; href=&quot;/ai/761&quot; title=&quot;Pliny&quot;&gt;&lt;img src=&quot;https://img.php.cn/upload/ai_manual/001/503/042/68b6db26747b8162.png&quot; alt=&quot;Pliny&quot; onerror=&quot;this.onerror='';this.src='/static/lhimages/moren/morentu.png'&quot; &gt;&lt;/a&gt; &lt;div class=&quot;aritcle_card_info flexColumn&quot;&gt; &lt;a href=&quot;/ai/761&quot; title=&quot;Pliny&quot;&gt;Pliny&lt;/a&gt; &lt;p&gt;创建、分享和重新组合AI应用程序&lt;/p&gt; &lt;/div&gt; &lt;a href=&quot;/ai/761&quot; title=&quot;Pliny&quot; class=&quot;aritcle_card_btn flexRow flexcenter&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;span&gt;下载&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt;&lt;pre class=&quot;brush:php;toolbar:false;&quot;&gt;.main img, .main pre { max-width: 100%; box-sizing: border-box; } .main pre { overflow-x: auto; /* 横向滚动代替折行 */ padding: 1rem; }</pre><ul> <li> <code>max-width: 100% 必须作用于具体元素,不能只写在 .main

  • overflow-x: auto<pre class="brush:php;toolbar:false;">&lt;/code&gt; 更友好 —— 保留缩进和语法高亮完整性&lt;/li&gt;&lt;li&gt;如果用了 Prism.js,注意它生成的 &lt;code&gt;&lt;code&gt;&lt;/code&gt; 嵌套层级深,选择器要写全:&lt;code&gt;.main pre code&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;H3&gt;移动端侧边栏收起后内容区宽度未重占的问题&lt;/H3&gt;&lt;p&gt;用 &lt;code&gt;transform: translateX(-100%)&lt;/code&gt; 隐藏侧边栏时,&lt;code&gt;.main&lt;/code&gt; 的宽度不会自动扩展,视觉上仍留白。&lt;/p&gt;&lt;p&gt;&lt;span&gt;立即学习&lt;/span&gt;“&lt;a href=&quot;https://pan.quark.cn/s/cb6835dc7db1&quot; style=&quot;text-decoration: underline !important; color: blue; font-weight: bolder;&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;前端免费学习笔记(深入)&lt;/a&gt;”;&lt;/p&gt;&lt;pre class=&quot;brush:php;toolbar:false;&quot;&gt;.sidebar.collapsed { transform: translateX(-100%); } .container.sidebar-collapsed .main { flex: none; width: 100%; }</pre><ul> <li>不能只动侧边栏,必须同步调整 <code>.main 的 flex 行为 —— 否则它还“记得”原来要让出 260px
  • 用 class 切换比 media query 更可控,便于配合 JS 控制按钮状态
  • 动画过渡要加在 .sidebar 上,但 transition: transform .3s ease,别加在 width 上(会触发重排)
  • 侧边栏布局真正难的不是怎么“放上去”,而是各种边界场景下的行为一致性:小屏折叠后是否留白、长代码块是否截断、图片在 Retina 屏是否模糊、滚动是否卡顿……这些细节堆起来,才决定用户愿不愿意多看两篇文章。

    热门AI工具

    更多
    DeepSeek
    DeepSeek

    幻方量化公司旗下的开源大模型平台

    豆包大模型
    豆包大模型

    字节跳动自主研发的一系列大型语言模型

    通义千问
    通义千问

    阿里巴巴推出的全能AI助手

    腾讯元宝
    腾讯元宝

    腾讯混元平台推出的AI助手

    文心一言
    文心一言

    文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

    讯飞写作
    讯飞写作

    基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

    即梦AI
    即梦AI

    一站式AI创作平台,免费AI图片和视频生成。

    ChatGPT
    ChatGPT

    最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

    相关专题

    更多
    堆和栈的区别
    堆和栈的区别

    堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

    434

    2023.07.18

    堆和栈区别
    堆和栈区别

    堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

    600

    2023.08.10

    class在c语言中的意思
    class在c语言中的意思

    在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

    808

    2024.01.03

    python中class的含义
    python中class的含义

    本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

    26

    2025.12.06

    js正则表达式
    js正则表达式

    php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

    530

    2023.06.20

    js获取当前时间
    js获取当前时间

    JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

    534

    2023.07.28

    js 字符串转数组
    js 字符串转数组

    js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

    718

    2023.08.03

    js是什么意思
    js是什么意思

    JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

    6020

    2023.08.17

    JavaScript浏览器渲染机制与前端性能优化实践
    JavaScript浏览器渲染机制与前端性能优化实践

    本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

    1

    2026.03.06

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    Sass 教程
    Sass 教程

    共14课时 | 0.9万人学习

    Bootstrap 5教程
    Bootstrap 5教程

    共46课时 | 3.5万人学习

    CSS教程
    CSS教程

    共754课时 | 40.3万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号