【CSS布局】已知布局元素的高度,写出三栏布局,要求左栏、右栏宽度各为300px,中间自适应。
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,中间自适应。相关推荐
- php元素浮动会产生哪些影响,元素浮动的影响与三列布局的实现原理——2019年9月4日22时30分...
一.元素浮动造成父元素高度折叠同一个块元素中,子级元素浮动,会造成附骥元素的高度折叠,包裹不住子级元素. 网页实际效果展示 消除子元素浮动的影响实例 html> 清除浮动的影响 .box1 { ...
- [css] 移动端的布局用过媒体查询吗?写出例子看看
[css] 移动端的布局用过媒体查询吗?写出例子看看 @media [type] and [condition] - not [condition] {- } @media [condition] a ...
- 算法【二叉树】学习笔记 - 已知结点数计算可构建出多少种二叉树
算法[二叉树]学习笔记 - 已知结点数计算可构建出多少种二叉树 卡特兰数 相关知识点 排列组合公式 排列 Arrangement 组合 Combination 分步计算 简化 参考资料 题目:已知3个 ...
- flex布局怎么设置子元素大小_Web前端(三):前端布局
前端布局对前端开发而言是必不可少的环节之一.我所理解的前端布局可以分成两个大类,第一类是元素层面的布局,就是像absolute布局.flex布局等等,都是描述元素在页面上以何种形式呈现,即局部的布局: ...
- html页面布局是什么意思,html布局的常见类型有哪些?html的三种布局特点分析
html布局的常见类型有哪些?html中的布局方式有三种:流动布局.浮动布局以及层模型,html的这三种布局各有个的特点,本篇文章就给大家简单的说说html的三种布局方式的特点. 1.流动布局(htm ...
- 已知入栈顺序,总结出栈顺序的规律
规律: 出栈的每一个元素的后面,其中比该元素先入栈的一定按照入栈逆顺序排列. 举例说明: 已知入栈顺序: 1 2 3 4 5 判断出栈顺序: 4 3 5 1 2 结果:不合理,原因是出栈元素3之后有 ...
- 已知三角形的内角,画出三角形
Option Explicit Const pi = 3.1415926 Private Function calc_length(ByVal a As Double , By ...
- 已知组成元素可以唯一的确定物体形态吗?
如果把鼠标拆成一个一个的原子,能根据这些原子唯一的复现鼠标吗,或者把一个蛋白质拆成一个一个的氨基酸而顺序未知,能唯一的确定原来蛋白质的结构吗? 这次继续验算移位距离假设,所用的训练集是mnist的0, ...
- Cesium已知经纬度获取其高度
初始数据 let arr = [[124.32441911641862,48.678295141121914],[124.32851385859364,48.67824798558877],[124. ...
最新文章
- 华为突遭谷歌釜底抽薪!官方安卓不再支持华为手机
- Catalan数——卡特兰数
- javaweb带父标签的自定义标签
- 面向对象(下)知识点
- vue 固定名称 打包时_vuecli3 配置多环境打包
- mysql innodb 并发 插入 慢_Innodb 锁机制——一次插入慢查询的排查
- Spark DStream相关操作
- SpringCloud框架搭建+实际例子+讲解+系列五
- AI算法连载09:统计之决策树
- Android查询 每个进程的权限
- 如何设计领域特定语言,实现终极业务抽象?
- android设备(手机) 投屏 到mac电脑
- 机器学习分类算法之支持向量机
- Linux 重启nginx服务
- latex 公式 (正式,非正式。编号,不编号)
- android通过百度语音合成实现文字转换成语音(TTS)详细教程?
- 如何用css做一个爱心
- C#实现一个控制台飞行棋小游戏(附源码)
- 计算机控制技术在农业的应用,电力电子技术在农业电气化中的应用
- 30多个最受用的基于XML的Flash相册教程 -- Part I