前端面试题之布局
来源:互联网 发布:windows怎么装显卡驱动 编辑:程序博客网 时间:2024/05/19 00:52
面试题之布局解决方案
前端面试的时候关于布局方面总是会问这样一个问题—假设已知高度,完成三栏布局,两边栏,定宽,中间栏自适应宽度。
对于这个问题,第一个想法就是利用浮动、定位来完成,但是对于面试题,只回答出来这两种往往是不够的。那么仔细的思考一下会再想到利用表格布局来实现,虽说表格布局已经不怎么采用,但是对于这个问题的解决还是很方便的。再一个解决方案就是利用flexbox。能答出来这四种解决方案已经是不错了,但是为了体现出你对新技术的关注和追求,就需要答出第5种解决方案了,即利用网格布局来实现。
那么接下来我们就介绍这5中解决方案,以及简单总结它们各自的优缺点。
1、利用浮动
<style> .layout.float .left{ float:left; width:300px; background-color:red; } .layout.float .right{ float:right; width:300px; background-color:blue; } .layout.float .center { background-color:orange; } </style> <section class="layout float"> <!-- 利用浮动解决布局时,center必须在最后。 --> <article class="left-right-center"> <div class="left"></div> <div class="right"></div> <div class="center"> <h1>浮动布局</h1> 1.这是浮动布局解决方案 2.这是浮动布局解决方案 </div> </article> </section>
浮动的缺点是造成元素脱离文档流,如果处理不好,后边的元素会塌陷,但是浮动的兼容性比较好,并且容易实现,在处理好与周边元素的关系的情况下,浮动还是很好的选择,也是大部分情况下采用的方案。
2、利用绝对定位
<style type="text/css"> .layout.absolute .left-center-right>div{ position: absolute; } .layout.absolute .left{ left: 0; width: 300px; background-color: red; } .layout.absolute .center { left: 300px; right: 300px; background-color: orange; } .layout.absolute .right{ right: 0; width: 300px; background-color: blue; } </style> <section class="layout absolute"> <article class="left-center-right"> <div class="left"></div> <div class="center"> <h1>绝对定位</h1> 1.这是绝对定位布局解决方案 2.这是绝对定位布局解决方案 </div> <div class="right"></div> </article> </section>
绝对定位呢我们都知道,同浮动一样也是会脱离文档流,而且,绝对定位最致命的就是以后的元素也必须脱离,在不是整个页面都用定位的情况下还是不建议使用这个方案。
3、利用表格(table)
<style type="text/css"> .layout.table { width: 100%; display: table; } .layout .left-center-right>div { display: table-cell; } .layout .left{ width: 300px; background-color: red; } .layout .center { background-color: orange; } .layout .right { width: 300px; background-color: blue; } </style> <section class="layout table"> <article class="left-center-right"> <div class="left"></div> <div class="center"> <h1>表格布局</h1> 1.这是表格布局解决方案 2.这是表格布局解决方案 </div> <div class="right"></div> </article> </section>
利用表格布局,它的兼容性可以说是非常好,老版本的浏览器也能支持。但是表格在有某一块超出设定宽的时候,其他的两块都会随着变化,一直保持着等高的状态,除非设定高度,但是有些情况下我们是不需要等高的。
4、利用flexbox
<style type="text/css"> .layout .left-center-right{ display: flex; } .layout .left { width: 300px; background-color: red; } .layout .center { /*flex 属性用于指定弹性子元素如何分配空间*/ flex: 1; background-color: orange; } .layout .right{ width: 300px; background-color: blue; } </style> <section class="layout flexbox"> <article class="left-center-right"> <div class="left"></div> <div class="center"> <h1>flexbox</h1> 1.这是flexbox布局解决方案 2.这是flexbox布局解决方案 </div> <div class="right"></div> </article> </section>
flexbox是一个相对来说完美的解决方法,但是兼容性不是太强,毕竟是是css3的新型布局模式,但是flexbox灵活多变可以使用不同尺寸的屏幕布局要求。
5、利用网格布局(grid)
<style type="text/css"> .layout.grid .left-center-right{ display: grid; width: 100%; grid-template-rows: 100px; grid-template-columns: 300px auto 300px; } .layout .left { background-color: red; } .layout .center { background-color: orange; } .layout .right { background-color: blue; } </style> <section class="layout grid"> <article class="left-center-right"> <div class="left"></div> <div class="center"> <h1>网格布局</h1> 1.这是网格布局解决方案 2.这是网格布局解决方案 </div> <div class="right"></div> </article> </section>
利用网格布局可以说是目前最简单的方案,仅仅4行代码就完成了这个效果。那么什么是网格布局呢?对此我也是一知半解,就不做过多解释,等深入的研究学习,有自己的理解后再来分享,不过可以给大家一个参考的地方,CSS Grid布局:什么是网格布局
同样的类型,比方说上中下三栏,上下固定高,中间栏自适应。这种也是很常见的布局类型。还有两栏的布局,左边固定宽,右边自适应,反过来的情况,等等。希望大家能多思考,有自己的独特的想法和观点。
作者也只是一名前端小学生,不足以及错误之处,望各位看官多提出自己的意见,共同进步~
- 前端面试题之布局
- 前端面试题 之 JavaScript
- Web前端之面试题
- 前端面试题之汇总
- 前端开发面试题之 JavaScript
- 前端开发面试题之 HTML
- 前端开发面试题之 JavaScript
- 前端开发面试题之综合篇
- 前端面试题之---HTML篇
- 前端开发面试题之 JavaScript
- 前端面试题之数组去重
- 前端之HTML面试题集锦
- 前端之HTML相关面试题。
- 前端进阶之路(面试题)
- 前端面试题之CSS盒模型
- 前端面试题之DOM事件
- 前端面试题之HTTP协议类
- 阿里巴巴前端面试题:三列布局知多少?
- AngularJS的指令
- Hadoop 安装完之后,做一个简单的测试
- Android基本架构
- 十一周-窗口程序浏览器
- sql2008备份集中的数据库备份与现有的xxx数据库不同解决方法
- 前端面试题之布局
- android报Error:No resource identifier found for attribute 'roundIcon' in package 'android'错误解决方法
- 阿里云2017双十一狂欢盛宴倒计时,你准备好了吗
- hdu 1789 How many ways(记忆化搜索)
- mysql的主从复制原理
- 呵呵以呵呵
- CS 400 Palindromic Tree 思维+构造(回文子串)
- pandas 读取大文件
- Spark内核机构图