一、单列布局

常见的单列布局有两种:

  • header,content和footer等宽的单列布局
  • header与footer等宽,content略窄的单列布局

1.如何实现

对于第一种,先通过对header,content,footer统一设置width:1000px;或者max-width:1000px(这两者的区别是当屏幕小于1000px时,前者会出现滚动条,后者则不会,显示出实际宽度);然后设置margin:auto实现居中即可得到。

<div class="header"></div>
<div class="content"></div>
<div class="footer"></div>
.header{margin:0 auto; max-width: 960px;height:100px;background-color: blue;
}
.content{margin: 0 auto;max-width: 960px;height: 400px;background-color: aquamarine;
}
.footer{margin: 0 auto;max-width: 960px;height: 100px;background-color: aqua;
}

对于第二种,header、footer的内容宽度不设置,块级元素充满整个屏幕,但header、content和footer的内容区设置同一个width,并通过margin:auto实现居中。

<div class="header"><div class="nav"></div>
</div>
<div class="content"></div>
<div class="footer"></div>
.header{margin:0 auto;height:100px;background-color: blue;
}
.nav{margin: 0 auto;background-color: darkgray;height: 50px;
}
.content{margin: 0 auto;max-width: 800px;height: 400px;background-color: aquamarine;
}
.footer{margin: 0 auto;height: 100px;background-color: aqua;
}

二、两列自适应布局

两列自适应布局是指一列由内容撑开,另一列撑满剩余宽度的布局方式

1.float+overflow:hidden

如果是普通的两列布局,浮动+普通元素的margin便可以实现,但如果是自适应的两列布局,利用float+overflow:hidden便可以实现,这种办法主要通过overflow触发BFC,而BFC不会重叠浮动元素。由于设置overflow:hidden并不会触发IE6-浏览器的haslayout属性,所以需要设置zoom:1来兼容IE6-浏览器。具体代码如下:

<div class="parent" style="background-color: lightgrey;"><div class="left" style="background-color: lightblue;"><p>left</p></div><div class="right"  style="background-color: lightgreen;"><p>right</p><p>right</p></div>
</div>
.parent {overflow: hidden;zoom: 1;
}
.left {float: left;margin-right: 20px;
}
.right {overflow: hidden;zoom: 1;
}

2.Flex布局

Flex布局,也叫弹性盒子布局,区区简单几行代码就可以实现各种页面的的布局。

//html部分同上
.parent {display:flex;
}
.right {margin-left:20px; flex:1;
}

3.grid布局

Grid布局,是一个基于网格的二维布局系统,目的是用来优化用户界面设计。

//html部分同上
.parent {display:grid;grid-template-columns:auto 1fr;grid-gap:20px
} 

三、三栏布局

特征:中间列自适应宽度,旁边两侧固定宽度

1.圣杯布局

① 特点

比较特殊的三栏布局,同样也是两边固定宽度,中间自适应,唯一区别是dom结构必须是先写中间列部分,这样实现中间列可以优先加载

  .container {padding-left: 220px;//为左右栏腾出空间padding-right: 220px;}.left {float: left;width: 200px;height: 400px;background: red;margin-left: -100%;position: relative;left: -220px;}.center {float: left;width: 100%;height: 500px;background: yellow;}.right {float: left;width: 200px;height: 400px;background: blue;margin-left: -200px;position: relative;right: -220px;}
  <article class="container"><div class="center"><h2>圣杯布局</h2></div><div class="left"></div><div class="right"></div></article>

2.双飞翼布局

① 特点

同样也是三栏布局,在圣杯布局基础上进一步优化,解决了圣杯布局错乱问题,实现了内容与布局的分离。而且任何一栏都可以是最高栏,不会出问题

    .container {min-width: 600px;//确保中间内容可以显示出来,两倍left宽+right宽}.left {float: left;width: 200px;height: 400px;background: red;margin-left: -100%;}.center {float: left;width: 100%;height: 500px;background: yellow;}.center .inner {margin: 0 200px; //新增部分}.right {float: left;width: 200px;height: 400px;background: blue;margin-left: -200px;}
    <article class="container"><div class="center"><div class="inner">双飞翼布局</div></div><div class="left"></div><div class="right"></div></article>

② 实现步骤(前两步与圣杯布局一样)

  • 三个部分都设定为左浮动,然后设置center的宽度为100%,此时,left和right部分会跳到下一行;
  • 通过设置margin-left为负值让left和right部分回到与center部分同一行;
  • center部分增加一个内层div,并设margin: 0 200px;

③ 缺点

多加一层 dom 树节点,增加渲染树生成的计算量

3.两种布局实现方式对比:

  • 两种布局方式都是把主列放在文档流最前面,使主列优先加载。
  • 两种布局方式在实现上也有相同之处,都是让三列浮动,然后通过负外边距形成三列布局。
  • 两种布局方式的不同之处在于如何处理中间主列的位置:
    圣杯布局是利用父容器的左、右内边距+两个从列相对定位
    双飞翼布局是把主列嵌套在一个新的父级块中利用主列的左、右外边距进行布局调整

四、等高布局

等高布局是指子元素在父元素中高度相等的布局方式。接下来我们介绍常见几种实现方式:

1.利用正padding+负margin

我们通过等布局便可解决圣杯布局的第二点缺点,因为背景是在 padding 区域显示的,设置一个大数值的 padding-bottom,再设置相同数值的负的 margin-bottom,并在所有列外面加上一个容器,并设置 overflow:hidden 把溢出背景切掉。这种可能实现多列等高布局,并且也能实现列与列之间分隔线效果,结构简单,兼容所有浏览器。新增代码如下:

      .center,.left,.right {padding-bottom: 10000px;margin-bottom: -10000px;}.container {padding-left: 220px;padding-right: 220px;overflow: hidden;//把溢出背景切掉}

几种常见的CSS布局相关推荐

  1. 5 种常见的 CSS 布局,快看看你会几种?

    作者 | 浪里行舟 责编 | 胡巍巍 本文将介绍如下几种常见的布局: 其中实现三栏布局有多种方式,本文着重介绍圣杯布局和双飞翼布局.另外几种可以猛戳实现三栏布局的几种方法. 单列布局 常见的单列布局有 ...

  2. div固定在浏览器顶部_手写几种常见的css布局,1垂直两栏左边固定右边自适应,垂直3栏左右固定中间自适应...

    1垂直两栏右边固定左边自适应的四种写法 <!DOCTYPE html> <html lang="en"><head><meta chars ...

  3. 几种常见的CSS布局-- 双飞翼布局

    双飞翼布局:对圣杯布局(使用相对定位,对以后布局有局限性)的改进,消除相对定位布局 原理:主体元素上设置左右边距,预留两翼位置.左右两栏使用浮动和负边距归位,消除相对定位. .container {/ ...

  4. CSS几种常见的页面布局方式介绍

    问题:CSS几种常见的页面布局方式介绍? CSS常见的有以下7种,必须要掌握的是前3种: flex弹性盒子(弹性布局): rem布局(一般都是flex+rem使用的比较多): 响应式布局(响应式布局的 ...

  5. html中页面布局技术,CSS基础之几种常见的页面布局

    CSS基础之几种常见的页面布局 本人前端菜鸟一枚,在学习 CSS 过程中发现网上流传的教程参差不齐,要么内容不够详细,要么方法就是错的,按照它给出的方法不能实现我想要的目的.于是自己决定写一篇经验.如 ...

  6. 常见 五大CSS 布局方式 总结

    常见 五大CSS 布局方式 总结 之所以总结是因为最近也是在看css方面,让我迷惑的是有很多文章 关于布局名词都没有听说过,工作中也很少用.但是我们要与时俱进,叫的多了,它就成为正式名词了.比如 '双 ...

  7. 6种方法实现css布局水平居中

    说到常见css布局,面试时经常也会考考大家,看对css知识掌握的咋样,对css盒模型理解没,比如会问css布局水平居中的方法或者css布局垂直居中的方法等,今天分享常见css布局水平居中的6种方法. ...

  8. 几种检查调试CSS布局的有效方法

    1. 检查HTML元素是否有拼写错误.是否忘记结束标记 即使是老手也经常会弄错div的嵌套关系.可以用dreamweaver的验证功能检查一下有无错误. 2. 检查CSS是否书写正确 检查一下有无拼写 ...

  9. java简述常见的布局极其特点_请简要说明 Android 中五种常见布局的特点。_学小易找答案...

    [简答题]请简要说明有序广播和无序广播的区别 [简答题]请简要说明 Android 程序结构中 AndroidManifest.xml 的功能? [简答题]简述李村站人工办理进路的作业过程. [简答题 ...

最新文章

  1. 如何在超大分辨率的图片中检测目标?
  2. 前端开发面试题总结之——CSS3
  3. 固态+机械(uefi类型的bios),用easybcd安装win10+ubuntu16.04双系统
  4. 去除 position:fixed 抖动的方法
  5. 【计算机网络复习】1.1.3 速率相关的性能指标
  6. flutter天气_牛笔!自己用Flutter撸一个天气APP
  7. phpcmsV9视频模块开发——盛大游戏通行证注册与密码找回
  8. JQuery中使用Ajax赋值给全局变量失败异常的解决方法,jqueryajax
  9. 快速建站-html基础-0223
  10. Laravel-admin 使用表单动态地保存一个关联模型(源码探究到功能实现)
  11. 2020中国高校薪资排行出炉!好过双一流的高校原来这么多!| 留言送书
  12. javascript中concat方法深入理解
  13. html黑洞效果,html5黑洞动画特效
  14. 分布式定时任务调度平台Elastic-Job技术详解
  15. Android 6.0系统中图片剪切空指针崩溃问题解决纪录
  16. Handle Protocol
  17. 【ZDNS分享】广电行业(四)DHCP解决方案
  18. OLAP和数据立方体
  19. 互联网的女性主义特征(转载)
  20. 微型计算机vag是指,《微型计算机复习题》.docx

热门文章

  1. php调用restful接口_jzq_sdk_php
  2. java 指定文件格式_java删除指定目录下指定格式文件的方法
  3. linux vga 分辨率低,vga输出 1440x900 分辨率问题
  4. 这些知识点你会吗?redis的分布式布隆过滤器含答案解析
  5. linux yum list包数量少,Linux基础知识之YUM包管理工具
  6. xshell导出文件用ftp到本地_使用xshell从远程服务器下载文件到本地
  7. 驰为hi10u盘启动linux,驰为Hi10 Plus二合一平板电脑:双系统更有玩头
  8. C语言求m中n个数字的组合
  9. 进阶学习(3.11) Facade Pattern 门面模式
  10. 进阶学习(3.6) Prototype Pattern 原型模式