CSS经典面试题-常用的CSS两栏和三栏布局方案

前言

HTML页面的布局在前端面试中应该算是很常见的题目了,大家能够熟练的写出多少呢?

今天这篇文章我们一起来看看在HTML中,如何通过CSS来实现常见的两栏和三栏布局吧。

CSS

布局1-左侧定宽,右侧自适应

左侧定宽,右侧自适应的布局在后台管理系统中是很常见的,左侧是目录页,右侧是内容区,根据路由切换动态展示。

我们首先来看看实现的效果,在浏览器宽度变窄的时候,左侧宽度依然保持不变,右侧宽度动态变化。

布局1

对于这种简单的两栏布局,我们先来看看HTML部分的代码,就是很简单的一个外部容器包含两个子元素。

HTML代码

对于以上的效果,我们有两种实现方式。

  • float浮动

给左侧定宽元素设置float属性,右侧元素设置margin属性。注意,为了让效果展示更好,我们给div设置了一个高度,实际开发中,div会根据内容高度自动撑开。

float方式

  • 双浮动+calc宽度

给左右两侧div都设置为浮动,然后利用calc方法动态计算右侧div的宽度同样可以达到这个效果。

得到的代码如下所示。

双浮动+calc

布局2-左右两侧定宽,中间自适应

左右两侧定宽,中间自适应的布局在blog类型的网站中是比较常见的。

左侧放置blog分类导航,右侧放个人信息,中间内容区域动态显示文章内容。

我们同样来看看实际完成的效果。

实际效果

我们同样讲解两种方法。

  • 方法1-左右浮动,中间margin

我们将左侧div浮动设置为left,右侧div浮动设置为right,中间的div根据左右两侧div宽度设置margin值。

注意:在页面排版的HTML元素不在是left,middle,right,而是left,right,middle。

方法1-HTML

然后我们看看CSS部分代码。

首先给外层容器一个高度,并设置宽度为100%,并让内层div高度为父容器的高度。

父容器CSS

然后是内层布局div的CSS属性。

内层CSS属性

其中的middle元素的margin值是根据left和right元素的宽度值确定的。

  • 方法2-同时浮动,中间calc计算宽度

第二种方法是给左中右三个div同时设置为左浮动,给左右两侧div定宽度,中间的div利用calc动态计算宽度。

注意:这种方式下,页面HTML排版元素正常表示为left,middle,right。

方法2-页面HTML元素

经上述分析后,CSS部分代码如下所示。

方法2-CSS代码

  • 方法3-flex布局

flex布局在移动端已经是最常见的一种布局方式了,我会专门写一篇文章来具体讲解如何使用flex布局。

针对这个问题,通过flex布局的方式可以很容易解决。

首先给外层容器的display设置为flex。

父容器CSS属性

左右两侧div和之前一样设置定宽即可;最后是给中间的div设置flex属性。

内层CSS属性

其中有个flex:1; 我注释了关键属性,在这里简单解释一下。

因为left和right两个div都已经设置了宽度,而对它们又没有设置flex属性;对于middle的div,设置了flex:1; 表示的是剩余空间将全部分配给middle,就可以达到自适应宽度的要求。

结束语

今天这篇文章讲述了两种简单的页面布局,每种布局都采用了两到三种方法实现,主要给大家提供不同的思路,大家如果有其他更好的方案也欢迎交流。

举报
评论 0