1. 页面布局

题目:假设高度已知,请写出三栏布局,其中左栏、右栏宽度各为300px,中间自适应。

1)浮动

2)绝对定位

3)Flexbox

4)表格布局

5)网格布局(CSS3的Grid布局)

代码:

通用样式:

<style>

html * {

padding:0;

margin:0;

}

.layout article div {

min-height: 100px;

}

</style>

1)       浮动

layout.html:

<section class="layout float">

<style>

.layout.float .left {

float:left;

width: 300px;

background: red;

}

.layout.float .right {

float: right;

width: 300px;

background: blue;

}

.layout.float .center {

background: yellow;

}

</style>

<article class="left-right-center">

<div class="left">

</div>

<div class="right">

</div>

<div class="center">

<h1>浮动解决方案</h1>

1.这是三栏布局中间部分

</div>

</article>

</section>

2)       绝对定位

<section class="layout absolute">

<style>

.layout.absolute .left-center-right > div {

position: absolute;

}

.layout.absolute .left {

left:0;

width: 300px;

background: red;

}

.layout.absolute .center {

left: 300px;

right: 300px;

background: yellow;

}

.layout.absolute .right {

right:0;

width: 300px;

background: blue;

}

</style>

<article class="left-center-right">

<div class="left"></div>

<div class="center">

<h2>绝对定位解决方案</h2>

1.这是三栏布局绝对定位中间部分

2.这是三栏布局绝对定位中间部分

</div>

<div class="right"></div>

</article>

</section>

3)       Flexbox

<section class="layout flexbox">

<style>

.layout.flexbox .left-center-right {

display: flex;

}

.layout.flexbox .left {

width: 300px;

background: red;

}

.layout.flexbox .center {

flex: 1;

background: yellow;

}

.layout.flexbox .right {

width: 300px;

background: blue;

}

</style>

<article class="left-center-right">

<div class="left"></div>

<div class="center">

<h2>flexbox解决方案</h2>

1.这是三栏布局flexbox中间部分

2.这是三栏布局flexbox中间部分

</div>

<div class="right"></div>

</article>

</section>

4)       表格布局

<section class="layout table">

<style>

.layout.table .left-center-right {

width: 100%;

display: table;

height: 100px;

}

.layout.table .left-center-right > div {

display: table-cell;

}

.layout.table .left {

width: 300px;

background: red;

}

.layout.table .center {

background: yellow;

}

.layout.table .right {

width: 300px;

background: blue;

}

</style>

<article class="left-center-right">

<div class="left"></div>

<div class="center">

<h2>表格布局</h2>

1.这是三栏布局表格布局中间部分

2.这是三栏布局表格布局中间部分

</div>

<div class="right"></div>

</article>

</section>

5)       网格布局

<section class="layout grid">

<style>

.layout.grid .left-center-right {

display: grid;

width: 100%;

grid-template-rows:  100px;

grid-template-columns: 300px auto 300px;

}

.layout.grid .left {

background: red;

}

.layout.grid .center {

background: yellow;

}

.layout.grid .right {

background: blue;

}

</style>

<article class="left-center-right">

<div class="left"></div>

<div class="center">

<h1>网格布局解决方案</h1>

1.这是三栏布局网格布局中间部分

2.这是三栏布局网格布局中间部分

</div>

<div class="right"></div>

</article>

</section>

延伸:

1)       这五种方案各自有什么优点,有什么缺点?

浮动:常见的问题就是清除浮动,优点是兼容性比较好。只要把清除浮动做的好,那么它的兼容性是比较好的。因为浮动是脱离文档流的。

绝对定位:优点是快捷。缺点是已经脱离文档流了,那么子元素也必须脱离文档流。导致这个方案的有效性是比较差的。

Flexbox布局:是比较完美的一个,尤其是在移动端,基本上都是使用flex布局。

表格布局:在很多场景中是比较适用的,表格布局的兼容性是非常好的。可以兼容IE8,因为IE8是不支持flex的。缺点是,当某一个单元格的高度变高时,其他的单元格的高度也会自己变高。

网格布局:网格布局是新出的技术。

2)       如果高度未知,中间的高度撑开了,需要左侧和右侧的高度也跟着撑开,那么刚才的五种方案,哪个还可以适用,哪个已经不可以用了?

如果去掉高度已知,哪个不再适用了呢?

3)       这五种方案的兼容性如何?最优的解决方案是哪一个?

css篇-页面布局-三栏布局的更多相关文章

  1. CSS布局 - 三栏布局

    CSS布局技术可谓是前端技术中最基础的技术,就是因为基础,所以我认为要更加熟练,深入的去掌握,去梳理. 一. 传统 ---> 浮动实现的三栏布局 采用浮动实现的三栏布局有以下特点及注意事项: · ...

  2. CSS布局——三栏布局

    说到三栏布局,很多都会提到圣杯布局和双飞翼布局这两个经典的三栏布局方式.于是,我在网上搜了一些相关资料,阅读并跟着代码敲了一遍,发现在处理三栏布局上,他们采用的都是两边栏固定,中间栏自适应的策略.在处 ...

  3. html5 css练习,弹性三栏布局

    *{    margin: 0;    padding: 0;} body,html{    width: 100%;    height: 100%;        font: bold 24px ...

  4. CSS实现经典的三栏布局

    实现效果: 左右栏定宽,中间栏自适应 (有时候是固定高度) 1 . 绝对定位布局:position + margin <div class="container"> & ...

  5. CSS实现三栏布局(5种)

    常见的布局方式: float布局.Position定位.table布局.弹性(flex)布局.网格(grid)布局 那么我们就是用以上5种方式完成三栏布局,不过前提是左右宽度(假如左右宽度为300px ...

  6. css三栏布局方案整理

    日常开发中,经常会用到css三栏布局,现将工作中常用的css 三栏布局整理如下: 什么是三栏布局: 三栏布局,顾名思义就是两边固定,中间自适应. 一. float布局 <!DOCTYPE htm ...

  7. 如何用CSS实现左侧宽度固定,右侧自适应(两栏布局)?左右固定中间自适应(三栏布局)呢?

    在前端日常布局中,会经常遇到左侧宽度固定,右侧自适应或者左右两边固定,中间部分自适应的实用场景.本文例子中将列举出两种常用的两栏布局,左侧固定右侧自适应的常用方法以及代码和五种左右固定中间自适应的常用 ...

  8. CSS布局:Float布局过程与老生常谈的三栏布局

    原文见博客主站,欢迎大家去评论. 使用CSS布局网页,那是前端的基本功了,什么两栏布局,三栏布局,那也是前端面试的基本题了.一般来说,可以使用CSSposition属性进行布局,或者使用CSSfloa ...

  9. 转:CSS布局:Float布局过程与老生常谈的三栏布局

    使用CSS布局网页,那是前端的基本功了,什么两栏布局,三栏布局,那也是前端面试的基本题了.一般来说,可以使用CSSposition属性进行布局,或者使用CSSfloat属性布局.前者适合布局首页,因为 ...

随机推荐

  1. Unity中文本AssetBundle的解析

     Unity在其安装目录下提供了许多实用的小工具,就存放在unity安装目录下的:Editor/Data/Tools, 其中该路径下的WebExtract.ext和binary2text.exe可以用 ...

  2. smartforms 字段文本碰见 "-" 自动换行

    长文本会在 '-' 这个符号处自动换行 原理:SAP 标准SMARTFORMS 的功能,遇到 '-' 自动判断后面字段是否能在本行完全显示,不够则换行 注意:如果一行文本有多个 ‘-’ ,则 判断 ' ...

  3. Android(一)Android Eclipse环境搭建

    SDK Manager下载实在是太慢了,不知道什么时候能下完,所以我是通过手工下载的. Android SDK 手工下载各个包然后解压到Android对应的目录 API对应的是platforms目录 ...

  4. TP框架的模板路径问题以及常用的模板常量的定义

    在TP框架中,为了各个模块加载静态文件方便,往往是不需要按照默认的方式放置静态文件到/app/模块名/VIEWS/下面,而是在顶级目录下创建一个新的目录(比如说./tpl目录下),来存放静态文件   ...

  5. UVA 11355 Cool Points( 极角计算 )

    We have a circle of radius R and several line segments situated within the circumference of this cir ...

  6. 好用的打包工具webpack

    <什么是webpack> webpack是一个模块打包器,任何静态资源(js.css.图片等)都可以视作模块,然后模块之间也可以相互依赖,通过webpack对模块进行处理后,可以打包成我们 ...

  7. html/js部分问题和小结

    2015/9/8 1.js中不要试图去处理由[变量:变量]组成的map(不过可以通过DWR.addOptions添加),而是处理[bh:变量][xm:变量],然后通过data[i].bh,data[i ...

  8. EBCDIC 1025 俄语

    https://en.wikipedia.org/wiki/EBCDIC_1025 EBCDIC 1025   _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E ...

  9. 使用python开启你的opencv之旅---图像的读入,存储

    python的便捷是如此的引人着迷,而opencv给python提供的接口使我们能够使用python来快速验证我们的想法,或者与别的模块快速结合,在这个系列文章我会通过jupyter notebook ...

  10. Struts 2中的constant详解【转载】

    通过对这些属性的配置,可以改变Struts 2 框架的一些默认行为,这些配置可以在struts.xml文件中完成,也可以在struts.properties文件中完成. struts.xml 1.&l ...