如何用CSS实现中间自适应,两边定宽三栏布局
1.前言
用css实现“两边定宽,中间自适应的三栏布局”这个问题应该是在前端面试中被面试官提问到的高频问题了,一般当面试者写出一种实现方法之后,面试官还会问你还有没有别的方法,尽量多的写出几种实现方法。
2.实现原理
要想实现这种“两边定宽,中间自适应的三栏布局”其实也不难,无外乎把握住以下几点:
- 要想中间自适应,那么中间的div不能设置宽度width,这样宽度就会随着浏览器窗口自适应。
- 由于div是块级元素,要想三个div处于同一行,那么两边的div就要脱离文档流。
- CSS3的flex伸缩布局。
- 表格table布局。
- 网格布局。
3.具体实现
下面就按照上面所说的实现原理,列举以下几种实现方式:
3.1 浮动解决方案
- <style>
- .layout-float .right{
- float: right;
- width: 300px;
- height: 100px;
- background-color: red;
- }
- .layout-float .left{
- float: left;
- width: 300px;
- height: 100px;
- background-color: blue;
- }
- .layout-float .center{
- height: 100px;
- background-color: yellow;
- }
- </style>
- <div class="right"></div>
- <div class="left"></div>
- <div class="center"><h1>浮动解决方案</h1></div>
3.2 绝对定位解决方案
- <style>
- .layout-absolute .right{
- width: 300px;
- height: 100px;
- right: 0px;
- position: absolute;
- background-color: red;
- }
- .layout-absolute .left{
- width: 300px;
- height: 100px;
- left: 0px;
- position: absolute;
- background-color: blue;
- }
- .layout-absolute .center{
- left: 300px;
- right: 300px;
- height: 100px;
- position: absolute;
- background-color: yellow;
- }
- </style>
- <div class="left"></div>
- <div class="center"><h1>绝对定位解决方案</h1></div>
- <div class="right"></div>
3.3 Flex伸缩布局解决方案
- <style>
- .layout-flex .left-center-right{
- display: flex;
- }
- .layout-flex .left-center-right .left{
- width: 300px;
- height: 100px;
- background-color: blue;
- }
- .layout-flex .left-center-right .center{
- flex:;
- background-color: yellow;
- }
- .layout-flex .left-center-right .right{
- width: 300px;
- height: 100px;
- background-color: red;
- }
- </style>
- <div class="left-center-right">
- <div class="left"></div>
- <div class="center"><h1>Flex伸缩布局解决方案</h1></div>
- <div class="right"></div>
- </div>
3.4 表格布局解决方案
- <style>
- .layout-table .left-center-right{
- width: 100%;
- display: table;
- height: 100px;
- }
- .layout-table .left-center-right>div{
- display: table-cell;
- }
- .layout-table .right{
- width: 300px;
- height: 100px;
- background-color: red;
- }
- .layout-table .left{
- width: 300px;
- height: 100px;
- background-color: blue;
- }
- .layout-table .center{
- height: 100px;
- background-color: yellow;
- }
- </style>
- <div class="left-center-right">
- <div class="left"></div>
- <div class="center"><h1>表格布局解决方案</h1></div>
- <div class="right"></div>
- </div>
3.5 网格布局解决方案
- <style>
- .layout-grid .left-center-right{
- width: 100%;
- display: grid;
- grid-template-rows: 100px;
- grid-template-columns: 300px auto 300px;
- }
- .layout-grid .right{
- background-color: red;
- }
- .layout-grid .left{
- background-color: blue;
- }
- .layout-grid .center{
- background-color: yellow;
- }
- </style>
- <div class="left-center-right">
- <div class="left"></div>
- <div class="center"><h1>网格布局解决方案</h1></div>
- <div class="right"></div>
- </div>
4. 效果图
(完)
如何用CSS实现中间自适应,两边定宽三栏布局的更多相关文章
- css高度已知,左右定宽,中间自适应三栏布局
css高度已知,左右定宽,中间自适应三栏布局: <!DOCTYPE html> <html lang="en"> <head> <meta ...
- 记一道css面试题 : 三栏布局两边宽度固定,中间宽度自适应,并且布局随屏幕大小改变。
前几天面试时有道css题没做出来,回来好好学习一番后把其记录下来. 题目是这样的:左中右三栏布局,左右两栏宽度固定,左右两栏的宽度为200像素,中间栏宽度自适应.当屏幕小于600px时,3栏会分别占用 ...
- 如何用CSS实现左侧宽度固定,右侧自适应(两栏布局)?左右固定中间自适应(三栏布局)呢?
在前端日常布局中,会经常遇到左侧宽度固定,右侧自适应或者左右两边固定,中间部分自适应的实用场景.本文例子中将列举出两种常用的两栏布局,左侧固定右侧自适应的常用方法以及代码和五种左右固定中间自适应的常用 ...
- Css三栏布局自适应实现几种方法
Css三栏布局自适应实现几种方法 自适应实现方法我们可以从三个方法来做,一个是绝对定位 ,自身浮动法 和margin负值法了,下面我们一起来看看这三个例子吧,希望例子能帮助到各位同学. 绝对定位法三栏 ...
- CSS | 圣杯布局、双飞翼布局 | 自适应三栏布局
圣杯布局和双飞翼布局是前端工程师需要日常掌握的重要布局方式.两者的功能相同,都是为了实现一个两侧宽度固定,中间宽度自适应的三栏布局 虽然两者的实现方法略有差异,不过都遵循了以下要点: 1.两侧宽度固定 ...
- 前端经典面试题之CSS实现三栏布局,左右宽度固定,中间宽度自适应
前端常问的面试题,题目:假设高度一定,请写出三栏布局,左右宽度300px,中间自适应. 看到这里我希望你能停下来思考几分钟, 1分钟~2分钟~3分钟~4分钟~5分钟! 好了,那么你想出了几种答案呢? ...
- css中,在高度已知,写出三栏布局,其中左栏、右栏宽度各位300px,中间自适应
解决方案主要有五种 首先写入全局样式 <style type="text/css"> html * { margin: ; padding: ; } .layout { ...
- CSS布局 - 三栏布局
CSS布局技术可谓是前端技术中最基础的技术,就是因为基础,所以我认为要更加熟练,深入的去掌握,去梳理. 一. 传统 ---> 浮动实现的三栏布局 采用浮动实现的三栏布局有以下特点及注意事项: · ...
- CSS三栏布局
一.绝对定位 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> < ...
随机推荐
- 设计模式----行为型模式之观察者模式(Observer Pattern)
下面是阅读<Head First设计模式>的笔记. 观察者模式 定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新. JDK API内置机制 ...
- 移动端border-radius的几个BUG
个人博客: http://mcchen.club 一.Android 2.3 自带浏览器不支持 % 通常我们实现一个正圆只需要border-radius: 50%即可,大致代码如下 .foo { wi ...
- 超详细!! sql server 同步数据库 发布 订阅 跨网段 无公网ip 常见问题
问题描述 主机1:发布端 阿里云服务器--有公网ip 主机2:订阅端 笔记本--无公网ip 数据量很小,主要是熟悉发布订阅的操作流程. 主机2仅仅作为主机1的本地备份,要求修改云服务器上数据后,能通过 ...
- IntelliJ IDEA使用JUnit单元测试
转载:https://www.cnblogs.com/huaxingtianxia/p/5563111.html 前言 单元测试的基本使用 一.环境配置 使用idea IDE 进行单元测试,首先需要安 ...
- 自己动手撸一个LinkedList
自己动手撸一个LinkedList 1. 原理 LinkedList是基于双链表的动态数组,数据添加删除效率高,只需要改变指针指向即可,但是访问数据的平均效率低,需要对链表进行遍历.因此,Linked ...
- ZGC介绍
zgc是一款可拓展的低时延,为实现以下几个目标而诞生的垃圾回收器: 停顿时间不超过10ms 停顿时间不会导致堆大小增长 堆大小范围可支持几G到几T 再看一下zgc的标签: region-based ( ...
- 域渗透基础之Windows 2012创建域控制器
创建备份域控制器 这里就拿windows 2012 R2来当备份域控 如果一个域内有多个域控制器,可以有如下好处. 提高用户登录的效率:如果同时有多台域控制器对客户提供服务,可以分担审核用户登录身份( ...
- C#版本websocket及时通信协议实现(教程示例)
1:Websocket有java.nodejs.python.PHP.等版本 ,我现在使用的是C3版本,服务器端是Fleck.客户端和服务器端来使用websocket的,下面开始讲解如何使用: 2:在 ...
- python学习-并发编程(十四)
14.2线程的创建与启动 import threading # 定义一个普通的action函数,该函数准备作为线程执行体 def action(max): for i in range(max): p ...
- 4. NFS存储服务器搭建
1.什么是NFS? Network file system 网络文件系统 nfs共享存储 2.nfs能干什么? nfs 能为 不同主机系统之间 实现 文件的共享 3.为什么要使用nfs? 在集群架构中 ...