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. django简单实现注册登录模块

    源码下载:https://files.cnblogs.com/files/hardykay/login.zip 新建项目(我使用pycharm开发,也可以使用如下命令建立项目 ) cmd命令行,前提需 ...

  2. select下拉框选中其中一个值

    function LoadList123() { var param = { action: "SelectShopType1"};//参数拼接 var Resultstr = & ...

  3. python-javascript之bom

    BOM BOM介绍 全称 Browser Object Mode 浏览器对象模式 操作浏览器的API接口.比如浏览器自动滚动 Windows对象的顶层部分是BOM的顶层(核心)对象,所有的对象都是通过 ...

  4. es6 Promise.reject()方法

    es6 Promise.reject()方法:https://blog.csdn.net/ixygj197875/article/details/79188195

  5. centos netstat 查看是否开放了端口

    netstat命令各个参数说明如下: -a :所有 -t : 指明显示TCP端口 -u : 指明显示UDP端口 -l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protoc ...

  6. 牛客网挑战赛24 青蛙(BFS)

    链接:https://www.nowcoder.com/acm/contest/157/E来源:牛客网 有一只可爱的老青蛙,在路的另一端发现了一个黑的东西,想过去一探究竟.于是便开始踏上了旅途 一直这 ...

  7. 编译Linux-2.6.23内核中遇见的错误

    编译linux-2.6.23 错误[1]: elf_x86_64: 没有那个文件或目录 原因是 gcc 4.6 不再支持 linker-style 架构.在 arch/x86/vdso/Makefil ...

  8. cnblogs博客主题原来可以弄得这么美观

    参考了网友 https://www.cnblogs.com/maybreath/p/5253824.html的做法,没想到真的可以耶. 总想弄个方便的.简洁的.可以被搜索引擎搜到的博客.以前用过wor ...

  9. BUUCTF 梅花香自苦寒来

    梅花香自苦寒来 打开图片可以看到,在jpg后面有大量的数据,将它保存出来,可以看出是十六进制,将它转为ascii,写脚本 with open('hex.txt','r') as h: h=h.read ...

  10. CentOS使用手册(二)

    前言: 本篇目录: 1.Linux软件安装调试 2.Linux内存.CPU.进程.端口.硬盘管理 3.Linux systemctl管理服务.防火墙firewalld以及SELinux配置 Linux ...