分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

如何用CSS实现中间自适应,两边定宽三栏布局

发布时间:2023-09-06 02:09责任编辑:蔡小小关键词: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: 1; ???????????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实现中间自适应,两边定宽三栏布局

原文地址:https://www.cnblogs.com/wangjiachen666/p/9462858.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved