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. 手机网页制作的认识(有关meta标签)(转)

    仅用来记录学习: 链接地址:https://blog.csdn.net/ye1992/article/details/22714621

  2. Cocos2d之FlyBird开发---简介

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. 开发FlyBird其实非常的简单,在游戏的核心部分,我们需要实现的只有: 创建一个物理世界(世界设置重力加速度) 在物理世界中添加一个动态 ...

  3. Python 学习笔记13 类 - 创建和简单使用

    介绍: 面向对象编程是一种非常有效的软件编写方法之一,在面向对象编程中,我们会编写表示现实世界中的事物或者情景的类,并基于类来创建对象. 在编写类的的时候,这些类对象一般都有通用的行为或者属性.基于类 ...

  4. 阿里巴巴高级Java面试题(首发,70道)

    整理的70道阿里的Java面试题,都来挑战一下,看看自己有多厉害.下面题目都带超详细的解答,详情见底部. 1.java事件机制包括哪三个部分?分别介绍. 2.为什么要使用线程池? 3.线程池有什么作用 ...

  5. 使用自编译的Emacs26.0.50build10版本,helm报错(已解决)

    使用自编译的Emacs26.0.50build10版本,helm报错(已解决) */--> code {color: #FF0000} pre.src {background-color: #0 ...

  6. MVC的实体模型写在类库,为什么被其他类库调用时,用不了模型的表?

    一,很简单,由于第一次添加实体模型时,VS会自动帮你添加引用System.Data.Entity到当前类库,如下图示: 二,而手动添加的类库并不存在这个引用,则及时你引用了当前的实体模型的类库,却使用 ...

  7. 使用await写异步优化代码

    使用promise: function readMsg(){ return dispatch=>{ axios.post('/msgList').then(res=>{ console.l ...

  8. PHP数组函数实现栈与队列的方法介绍(代码示例)

    根据php提供的四个关于数组的函数: array_push(),array_pop(),array_unshift(),array_shift() 配合数组本身,一下子就实现了栈(stack)和队例( ...

  9. mac 安装Navicat_Premium 破解版带汉化

    因为近期要用mongodb,本想着下载一个Navicat for mongodb 但是一直没有给力带帖子,所以就靠着百度自己找,功夫不负有心人. 下面附上百度网盘,里面有一个txt文档,在安装前一定要 ...

  10. Windows服务 --- SqlDependency的使用

    1   启用当前数据库的 SQL Server Service Broker a   检查Service Broker 是否开启 SELECT is_broker_enabled FROM sys.d ...