---
title: "css布局实例"
url: "https://yjyj.net/learn/3901.html"
author: "小 虾 (生猛大蝦编辑部)"
published_at: "2006-04-01T01:45:17+08:00"
updated_at: "2006-04-01T01:45:17+08:00"
categories: "招数学习"
tags: "CSS布局技巧, 前端开发实战, 网页视觉设计"
summary: "这篇早期 CSS 布局实战，讲透固定宽度三列页面如何用绝对定位排版，并直面“100% 高度不生效”的经典坑。作者从 body 基础样式、左右中三栏宽度设置到高度失效的排查过程，最后给出更务实的思路：别被 table 思维绑住，布局要先跑通再优化。"
source: "生猛大蝦 (https://yjyj.net)"
---

# css布局实例

> 来源：[生猛大蝦 (yjyj.net)](https://yjyj.net/learn/3901.html) · 作者：小 虾 · 发布时间：2006-04-01

> 🔄 **2026 实时联网保鲜核验（2026-11-11）**：这套 2006 年的绝对定位三栏法在 2026 年仍能跑，但已非首选；当前主流是 CSS Grid 或 Flexbox，尤其三栏与响应式布局更适合用网格，absolute 只适合少量叠放与特殊定位，且要注意缩放与可访问性。

## 30 秒核心看点 (TL;DR)

- 固定宽度三列布局：左中右分别 200/300/280px，核心靠绝对定位排版。
- body 先统一字体、背景、字号和行高，页面基础视觉一次定好。
- 100% 高度在这里不如预期，作者改用临时固定高度并反思 table 思维。

定义body样式
先定义整个页面的body的样式,代码如下：
body { margin: 0px;
padding: 0px;
background: url(../images/bg_logo.gif) #fefefe no-repeat right bottom;
font-family: 'lucida grande','lucida sans unicode','宋体','新宋体',arial,verdana,sans-serif;
color: #666;
font-size:12px;
line-height:150%; }
以上代码的作用在上一天的教程有详细说明，大家应该一看就明白。定义了边框边距为0；背景颜色为#fefefe，背景图片为bg_logo.gif，图片位于页面右下角，不重复；定义了字体尺寸为12px；字体颜色为#666;行高150%。
3.定义主要的div
初次使用css布局，我决定采用固定宽度的三列布局(比自适应分辨率的设计简单,hoho，别说我偷懒，先实现简单的，增加点信心嘛！)。分别定义左中右的宽度为200:300:280，在css中如下定义:
/*定义页面左列样式*/
#left{ width:200px;
margin: 0px;
padding: 0px;
background: #cdcdcd;
}
/*定义页面中列样式*/
#middle{ position: absolute;
left:200px;
top:0px;
width:300px;
margin: 0px;
padding: 0px;
background: #dadada;
}
/*定义页面右列样式*/
#right{ position: absolute;
left:500px;
top:0px;
width:280px;
margin: 0px;
padding: 0px;
background: #fff; }
注意：定义中列和右列div我都采用了position: absolute;，然后分别定义了left:200px;top:0px;和left:500px;top:0px;这是这个布局的关键，我采用了层的绝对定位。定义中间列距离页面左边框200px，距离顶部0px；定义右列距离页面左边框500px，距离顶部0px；。
这时候整个页面的代码是：

欢迎进入新《网页设计师》:web标准教程及推广

页面左列

页面中列

页面右列

这时候页面的效果仅仅可以看到三个并列的灰色矩形，和一个背景图。但是我希望高度是满屏的，怎么办呢？
4.100%自适应高度?
为了保持三列有同样的高度，我尝试在#left、#middle和#right中设置"height:100%;"，但发现完全没有预想的自适应高度效果。经过一番尝试后，我只好给每个div一个绝对高度:"height:1000px;"，并且随着内容的增加，需要不断修正这个值。难道没有办法自适应高度了吗？随着阿捷自己学习的深入，发现一个变通的解决办法，实际上根本不需要设置100%，我们已经被table思维禁锢太深了，这个办法在下一节的学习中详细介绍。

## 延伸问答与排错指南 (FAQ)

### CSS 三列固定宽度布局怎么写？
本文的做法是把左列设为普通流，宽度 200px；中列和右列用 position:absolute 绝对定位，分别 left:200px 和 left:500px，再配合各自宽度 300px、280px。这样能快速搭出固定宽度三栏页面。

### 为什么给 div 设置 height:100% 没效果？
因为父级高度没有被明确建立时，子元素的 100% 高度往往无法按预期计算。文章里作者尝试后发现三列并不会自动拉满屏幕，只能先用固定高度顶住，说明单纯写 100% 并不能解决所有布局问题。

### 这篇文章对新手学 CSS 有什么价值？
它展示了早期 CSS 布局从基础样式到三列排版的完整思路，也暴露了新手常见误区：把网页当成表格来想。适合用来理解定位、宽度和高度之间的关系，先把页面搭出来，再继续优化自适应。

---
更多 Linux 运维、WordPress 性能优化、前端工程化、Shopify 独立站与极客折腾指南：[生猛大蝦全站文章归档 (https://yjyj.net/archive)](https://yjyj.net/archive)
