CSS 的布局应该是 CSS 体系中的重中之重了,主要的布局方式有 table 表格布局, flex 盒子布局、float 浮动布局、position 定位布局,grid 网格布局,还有针对于移动端的响应式布局,不论是工作还是面试都是非常重要的知识。

已知布局元素的高度,写出三栏布局,要求左栏、右栏宽度各为300px,中间自适应。

对于上面这道题,我们分别使用这几种布局方式来实现如下图所示的效果。

table 布局

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>table布局</title><style>.main{height:500px;width: 100%;}.left,.right{width: 300px;background-color: red}.center{background-color: pink}</style>
</head>
<body><table class=main><tbody><tr><td class=left></td><td class="center"></td><td class=right></td></tr></tbody></table>
</body>
</html>

table 的特性决定了它非常适合用来做布局,并且表格中的内容可以自动居中,这是之前用的特别多的一种布局方式。

但是它也有自身的局限性,比如 table 比其它 html 标记占更多的字节,造成下载时间延迟,占用服务器更多流量资源;table 会阻挡浏览器渲染引擎的渲染顺序,会延迟页面的生成速度,让用户等待更久的时间。但是某些情况下,当采用其他方式不能很好的达到自己的效果时,采用 table 布局能适应当前场景。

我们也可以使用dispaly:table-cell方式来实现表格布局。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="utf-8" /><title>table布局</title><style type="text/css">.main{display: table;width: 100%;height: 500px;}.main > div{display: table-cell;}.left,.right{           width: 300px;background: red;}.center{background: pink;}</style>
</head>
<body><div class="main"><div class="left"></div><div class="center"></div><div class="right"></div></div>
</body>
</html>

table-cell 布局的兼容性好,但是有时候不能固定高度,因为会被内容撑高。

flex 布局

<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /><title>flex布局</title><style type="text/css">.main{display: flex;height: 500px;}.left,.right{            flex-basis: 300px;background: red;}.center{flex: 1;background: pink;}</style>
</head>
<body><div class="main"><div class="left"></div><div class="center"></div><div class="right"></div></div>
</body>
</html>

flex 布局即弹性盒子布局,它的特点是盒子本来就是并列的,只需要指定宽度。flex 布局方式浏览器的支持不是太好,有一些兼容性的问题,但是是未来布局的趋势。

float 布局

<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /><title>float布局</title><style type="text/css">.main > div{height: 500px;}.left{float: left;width: 300px;background: red;}.right{float: right;width: 300px;background: red;}.center{background: pink;}  </style>
</head>
<body><div class="main"><div class="left"></div><div class="right"></div><div class="center"></div> </div>
</body>
</html>

float 布局思路主要是左边一个浮动元素,右边一个浮动元素。这里有个小问题,中间的元素要写在最后,因为中间的块级元素会影响右边浮动元素的定位——如果块级元素在浮动元素之前,浮动元素会把块级元素的位置空出来,造成如下图的效果。

float 布局应该是目前各大网站用的最多的一种布局方式了,兼容性比较好,但是浮动带来的影响比较多,页面宽度不够的时候会影响布局。

绝对定位布局

<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /><title>绝对定位布局</title><style type="text/css">.main div{position: absolute;height: 500px;}.left{left: 0;width: 300px;background: red;}.right{right: 0;width: 300px;background: red;}.center{left: 300px;right: 300px;background: pink;} </style>
</head>
<body><div class="main"><div class="left"></div><div class="center"></div><div class="right"></div></div>
</body>
</html>

绝对定位布局快捷方便,但是有效性比较差,因为脱离了文档流。

网格布局

<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /><title>网格布局</title><style type="text/css">.main{display: grid;width: 100%;/* 定义每一行的行高 */grid-template-rows: 500px;    /* 定义每一列的列宽 */grid-template-columns: 300px auto 300px;  }.left,.right{   background: red;}.center{background: pink;}</style>
</head>
<body><div class="main"><div class="left"></div><div class="center"></div><div class="right"></div></div>
</body>
</html>

网格布局(Grid)是最强大的 CSS 布局方案。它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局。

Grid 布局与 Flex 布局有一定的相似性,都可以指定容器内部多个项目的位置。但是,它们也存在重大区别。Flex 布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局。Grid 布局则是将容器划分成"行"和"列",产生单元格,然后指定"项目所在"的单元格,可以看作是二维布局。Grid 布局远比 Flex 布局强大。

【CSS布局】已知布局元素的高度,写出三栏布局,要求左栏、右栏宽度各为300px,中间自适应。相关推荐

  1. php元素浮动会产生哪些影响,元素浮动的影响与三列布局的实现原理——2019年9月4日22时30分...

    一.元素浮动造成父元素高度折叠同一个块元素中,子级元素浮动,会造成附骥元素的高度折叠,包裹不住子级元素. 网页实际效果展示 消除子元素浮动的影响实例 html> 清除浮动的影响 .box1 { ...

  2. [css] 移动端的布局用过媒体查询吗?写出例子看看

    [css] 移动端的布局用过媒体查询吗?写出例子看看 @media [type] and [condition] - not [condition] {- } @media [condition] a ...

  3. 算法【二叉树】学习笔记 - 已知结点数计算可构建出多少种二叉树

    算法[二叉树]学习笔记 - 已知结点数计算可构建出多少种二叉树 卡特兰数 相关知识点 排列组合公式 排列 Arrangement 组合 Combination 分步计算 简化 参考资料 题目:已知3个 ...

  4. flex布局怎么设置子元素大小_Web前端(三):前端布局

    前端布局对前端开发而言是必不可少的环节之一.我所理解的前端布局可以分成两个大类,第一类是元素层面的布局,就是像absolute布局.flex布局等等,都是描述元素在页面上以何种形式呈现,即局部的布局: ...

  5. html页面布局是什么意思,html布局的常见类型有哪些?html的三种布局特点分析

    html布局的常见类型有哪些?html中的布局方式有三种:流动布局.浮动布局以及层模型,html的这三种布局各有个的特点,本篇文章就给大家简单的说说html的三种布局方式的特点. 1.流动布局(htm ...

  6. 已知入栈顺序,总结出栈顺序的规律

    规律: 出栈的每一个元素的后面,其中比该元素先入栈的一定按照入栈逆顺序排列. 举例说明: 已知入栈顺序: 1 2 3 4 5 判断出栈顺序: 4 3 5 1 2 结果:不合理,原因是出栈元素3之后有 ...

  7. 已知三角形的内角,画出三角形

    Option   Explicit Const  pi  =   3.1415926 Private   Function  calc_length(ByVal a  As   Double , By ...

  8. 已知组成元素可以唯一的确定物体形态吗?

    如果把鼠标拆成一个一个的原子,能根据这些原子唯一的复现鼠标吗,或者把一个蛋白质拆成一个一个的氨基酸而顺序未知,能唯一的确定原来蛋白质的结构吗? 这次继续验算移位距离假设,所用的训练集是mnist的0, ...

  9. Cesium已知经纬度获取其高度

    初始数据 let arr = [[124.32441911641862,48.678295141121914],[124.32851385859364,48.67824798558877],[124. ...

最新文章

  1. 华为突遭谷歌釜底抽薪!官方安卓不再支持华为手机
  2. Catalan数——卡特兰数
  3. javaweb带父标签的自定义标签
  4. 面向对象(下)知识点
  5. vue 固定名称 打包时_vuecli3 配置多环境打包
  6. mysql innodb 并发 插入 慢_Innodb 锁机制——一次插入慢查询的排查
  7. Spark DStream相关操作
  8. SpringCloud框架搭建+实际例子+讲解+系列五
  9. AI算法连载09:统计之决策树
  10. Android查询 每个进程的权限
  11. 如何设计领域特定语言,实现终极业务抽象?
  12. android设备(手机) 投屏 到mac电脑
  13. 机器学习分类算法之支持向量机
  14. Linux 重启nginx服务
  15. latex 公式 (正式,非正式。编号,不编号)
  16. android通过百度语音合成实现文字转换成语音(TTS)详细教程?
  17. 如何用css做一个爱心
  18. C#实现一个控制台飞行棋小游戏(附源码)
  19. 计算机控制技术在农业的应用,电力电子技术在农业电气化中的应用
  20. 30多个最受用的基于XML的Flash相册教程 -- Part I

热门文章

  1. 设计模式 建造者模式
  2. php 整行插入mysql_MySQL的多行插入
  3. imos style android,自定义的第一个view
  4. macOS安装Telnet
  5. 信息安全工程师考试大纲-科目1:信息安全基础知识
  6. GDC2017分享:移动VR开发者的赚钱之道
  7. Git---命令行语法
  8. @PathVariable为空时指定默认值
  9. 看《Linux入门讲座》随记
  10. Django Web在Apache上的部署