欢迎光临
我们一直在努力

你说你都学了这么久了,这个网页的经典布局思路都懒得来看了吗

大家好,我是正在努力学前端的小白。

最近我在学习网页布局,看到了一张非常经典的“红绿蓝”三色图。别看这图简单,它其实是无数网页的“骨架”——导航栏、左侧栏、中间内容区、右侧栏、页脚。

学会了怎么把这些“积木”横着排,你就掌握了网页布局的核心技能。

今天,我把自己的学习笔记整理成这篇博客,用三种不同的方法(`inline-block`、`position`、`flex`)来实现同样的效果,并且告诉你——哪种写法最推荐,哪种已经过时了。


 一、方法一:用 inline-block —— 最原始的“横排魔法”

我们先从最基础的方法开始:把块级元素变成行内块元素。

在HTML里,div 默认是“块级”的,意思是它们会一个接一个往下堆。要让它们并排,我们可以给每个 div 加上 display: inline-block;

 核心代码思路

.left, .middle, .right {
    display: inline-block;  /* 横向并排 */
}

然后给它们分配宽度:左边 10%,中间 80%,右边 10%。

⚠️ 一个大坑:幽灵空白间隙

当你满心欢喜地把三列宽度设为 10% + 80% + 10% = 100% 时,你会惊奇地发现——第三列被挤到下一行了!

为什么?因为行内块元素之间的HTML代码里的换行和空格,会被浏览器当成一个“空白字符”渲染出来。这个空白虽然看不见,但它会占用宽度。

解决方案: 把中间的宽度从 80% 改小一点点,比如 79.5%,给幽灵空白腾出空间。

.middle {
    width: 79.5%;  /* 给空白留点位置 */
}

小结

优点 缺点
简单,容易理解 需要手动处理空白间隙
适合静态页面 盒模型计算容易出问题


二、方法二:用 position —— 像贴标签一样精准定位

第二种方法是使用 定位(position)。它的思路很直接:给父容器定一个坐标系,然后把子元素精确地“粘”在指定的位置。

核心代码思路

/* 父容器:建立参考坐标系 */
.container {
    position: relative;
}

/* 左侧栏:贴在左边 */
.left {
    position: absolute;
    left: 0;
    top: 0;
}

/* 中间栏:贴在左侧栏右边 */
.middle {
    position: absolute;
    left: 10%;   /* 跳过左侧栏的10%宽度 */
    top: 0;
}

/* 右侧栏:贴在右边 */
.right {
    position: absolute;
    right: 0;
    top: 0;
}

🎯 优缺点

这种方法就像在墙上贴画,想贴哪儿就贴哪儿,定位非常精准。

但是,它也有一个致命问题:不够灵活。如果你想把左侧栏从 10% 改成 20%,中间栏的 left 也要手动改成 20%。改一个地方,其他所有位置都得跟着调,很麻烦。

小结

优点

缺点

定位精准,不受文档流影响 需要手动计算位置,维护困难
适合做悬浮或固定元素 内容多了容易重叠

 三、方法三:用 flex —— 现代布局的“神器”

终于到了Flexbox(弹性盒子)。这是目前最推荐、最优雅的布局方式。

核心代码思路

/* 父容器:开启弹性盒子 */
.container {
    display: flex;
}

/* 三列分别设置宽度 */
.left   { width: 10%; }
.middle { width: 80%; }
.right  { width: 10%; }

就这么简单!不需要处理幽灵空白,不需要手动计算位置。Flexbox 会自动搞定一切,而且三列会自动填满空间,不会多出来也不会少。

🌟 更高级的玩法:让中间的内容自动换行

在 Flexbox 中,你还可以让中间列内部的元素自动换行排列。比如,中间区域有很多小方块,你可以这样做:

.middle {
    display: flex;
    flex-wrap: wrap;          /* 允许子元素自动换行 */
    align-content: flex-start; /* 从起点开始排列 */
}

这样,中间区域就像一个大盒子,里面的小方块一行放不下就会自动换到下一行,完全不用你操心。

小结

优点 缺点
没有空白间隙问题 需要浏览器支持(现代浏览器全支持)
高度灵活,容易调整 /
响应式布局的基石 /

四、终极进化:Flexbox + 响应式布局

有了 Flexbox,我们就能轻松实现 响应式布局——即网页在不同屏幕尺寸(电脑、平板、手机)下自动调整样式。

核心思路

1. 开启弹性盒子,并允许自动换行:flex-wrap: wrap
2. 用媒体查询(@media)针对不同屏幕宽度,重新设置每一列的宽度。

代码示例

.container {
    display: flex;
    flex-wrap: wrap;  /* 关键:空间不够就自动换行 */
}

/* 默认:电脑端三列并排 */
.left   { width: 10%; }
.middle { width: 80%; }
.right  { width: 10%; }

/* 平板端:宽度 ≤ 768px */
@media (max-width: 768px) {
    .left   { width: 50%; }  /* 左侧占一半 */
    .middle { width: 100%; } /* 中间占满一整行,换到下一行 */
    .right  { width: 50%; }  /* 右侧占一半,跟在左侧后面 */
}

/* 手机端:宽度 ≤ 480px */
@media (max-width: 480px) {
    .left, .middle, .right {
        width: 100%;  /* 全部单列显示,从上到下 */
    }
}

🌈 效果展示

·电脑上:三列并排(左10%、中80%、右10%)。

·平板上:左侧(50%)、中间(100% 换行到下一行)、右侧(50% 跟左侧在同一行)。

·手机上:三列全部占满一行,从上到下依次排列。

一套代码,三端适配! 这就是现代前端开发的魅力。


五、总结:三种方法怎么选?

方法 优点 缺点 推荐场景
inline-block 简单易懂 空白间隙问题 初学者练习,静态页面
position 定位精准 维护困难,不灵活 悬浮元素、固定元素
flex 优雅、灵活、响应式 95%的场景首选


 六、写在最后

通过这次学习,我最大的感受是:技术会更新,但解决问题的思路是相通的。

inline-blockposition 再到 flex,每种方法都有它的时代背景。而今天,Flexbox + 响应式布局 就是我们最好的工具。

如果你刚入门,直接学 Flexbox 吧!它能让你少走很多弯路,而且未来几年它依然是主流。


如果你觉得这篇文章对你有帮助,欢迎点赞、收藏、转发!也可以在评论区留言交流~

赞(0)
未经允许不得转载:171主机测评 » 你说你都学了这么久了,这个网页的经典布局思路都懒得来看了吗
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址