css flex布局实用

news/2024/5/19 18:01:01 标签: css, flex

CSS3 flex布局应用介绍

96 
张歆琳  关注
2016.06.17 10:50*  字数 701  阅读 1063 评论 1

上一篇介绍了flex弹性盒子的语法,本篇用flex来实际布局一下。例如我们以前会用inline-block或float配合%百分比来实现自适应的三列等高布局。但margin / padding计算起来比较复杂,加加减减维护起来很麻烦。用flex弹性盒模型就简单多了。

首先弄出原始的HTML结构,左右侧边栏定宽220px

* { margin: 0; padding: 0; }
#header, #footer { width: 100%; }
#left, #right { width: 220px; }

<div id="header">header</div>
<div id="page">
    <div id="main">main</div>
    <div id="left">left</div>
    <div id="right">right</div>
</div>
<div id="footer">footer</div>

现在将内容容器(#page)设成flex弹性盒模型:#page { display: flex; }

中间main就是个普通的div,因此宽度好像没有自适应,很简单设 #main { flex: auto; }即可。因为两个侧边栏没有设flex,因此剩余的宽度将被main独享

main的位置不对,调整位置非常简单,设置 #main { … order: 1; }即可。当然别忘了同步给right设 #right { … order: 2; }。left不设默认为0。

你可能会疑惑,直接在DOM按left->main->right顺序排列不就行了,为何排列成main->left->right?确实调整DOM顺序也能达到同样效果,但将main越置前,对SEO搜索越友好。这其实并无标准答案,如果你觉得left的内容同样重要,那left->main->right的DOM顺序也是没问题的。

现在只剩最后一步,将footer置底并拉升page部分。先将html和body的height设成100%,为全屏做准备。由于body里包含了header,page,footer,因此为body设置flex弹性盒模型,同时设置flex-direction: column;让3个子元素垂直排列body { … display: flex; flex-direction: column; }

最后将page拉伸就简单了,思路和上面main一样,只要给page设置flex:auto;,因为header和footer没有设flex,因此剩余的高度将被page独享。

css">css" style="font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:12px;color:rgb(101,123,131);background-color:transparent;border:none;">* { margin: 0; padding: 0; }
html, body { height: 100%; }
body {
    display: flex;
    flex-direction: column;
}
#header, #footer { width: 100%; }
#page {
    display: flex;
    flex:auto;
}
#left, #right { width: 220px; }
#right { order: 2; }
#main {
    flex: auto;
    order: 1;
}

总结一下自适应三列等高布局的思路,body应用垂直的flex模型,让页头,页面,页脚垂直排列,其中只有页面部分有flex:auto;将自适应高度。页面部分应用flex模型,内容,左侧栏,右侧栏将水平排列,其中只有内容部分有flex:auto;将自适应宽度。如果为了SEO优化,在DOM中将内容部分放在左右侧边栏上面的话,通过order调整顺序。

更多布局的例子,可以看看Solved by Flexbox

flex弹性盒子可以轻松实现等比例布局:

.Grid { display: flex; }
.Grid-cell { flex: 1; }

<div class="Grid">
  <div class="Grid-cell"></div>
  <div class="Grid-cell"></div>
  <div class="Grid-cell"></div>
</div>

也可以实现部分固定比例,剩余部分自适应布局:


评论区布局:

代码页面上都有,极其简单,可以自行参考。

总结

flex用于布局真的非常方便,原先用inline-block,float写的一堆既丑且难维护的代码,用flex可以很优雅地实现,什么垂直居中都是浮云。唯一需要的只是时间,等那些旧式浏览器都死透了,弹性盒子的春天就来了


http://www.niftyadmin.cn/n/1731972.html

相关文章

如何改变tabcontrol控件背景色和标签字体和颜色_如何制定一份设计规范(移动端)?...

17年出过一份设计规范&#xff0c;19年又整理了一份设计规范&#xff0c;发现进步不大。于是梳理一下如何正确的制定一份设计规范。设计规范是为了给上下游&#xff08;产品、开发&#xff09;查看&#xff0c;方便其他设计师使用。所以规范一定要够落地、方便使用。设计规范包…

android oreo运行环境,Android Oreo 后台运行限制

原标题&#xff1a;Android Oreo 后台运行限制后台计算十分重要 —— 不论是从服务器获取最新数据还是对 UI 搜集到的数据进行进一步处理都需要用到后台处理。然而&#xff0c;在如今的移动环境下&#xff0c;过量的后台计算也会确实地影响用户体验和手机续航。所以我们在 Andr…

PS 切图

写给前端小白的切图技巧&#xff08;实用&#xff09;2016年08月21日 17:20:33阅读数&#xff1a;16028我一开始是不会切图的&#xff0c;面试的时候心里也没有底气&#xff0c;但是之前也知道一点切图的知识&#xff0c;只是没有那种疯狂的天天做切图&#xff0c;所以一直也不…

python list 排序_6个python内置函数,每个 Python 高手都应该知道!

python内置了一些非常巧妙而且强大的内置函数&#xff0c;对初学者来说&#xff0c;一般不怎么用到&#xff0c;我也是用了一段时间python之后才发现&#xff0c;哇还有这么好的函数&#xff0c;这个函数都是经典的而且经过严格测试的,可以一下子省了你原来很多事情&#xff0c…

ps 快速切图

前端实战系列之---两种快速切图的方法今天给大家分享一下我自己在前端工作中的一些切图小技巧&#xff0c;虽然好的UI会给我们把图切好&#xff0c;但是他们切的图不一定百分之百符合我们的需求&#xff0c;所以还是自己动手丰衣足食嘛&#xff0c;看本教程之前希望大家能先看看…

怎么限制电脑网速_路由器用的人太多网速变慢,可以限制别人的网速吗?这里告诉你...

温馨提示&#xff1a;请您在阅读本文之前&#xff0c;点击文章上方的“关注”&#xff0c;以后您就可以免费收到智慧网络2333每天推送的网络、宽带等内容了。谢谢您的关注与转发&#xff01;小编专门整理了这篇文章&#xff0c;来详细介绍&#xff0c;在新版tplink路由器中&…

sublime text详解

一、 前言使用Sublime Text 也有几个年头了&#xff0c;版本也从2升级到3了&#xff0c;但犹如寒天饮冰水&#xff0c;冷暖尽自知。最初也是不知道从何下手&#xff0c;满世界地查找资料&#xff0c;但能查阅到的资料&#xff0c;苦于它们的零碎、片面&#xff0c;不够系统和全…

怎么把html转换成字符串,怎么把HTML格式的转成字符串?

回答&#xff1a;CAD如何字符串缩放CAD字符串缩放命令(SCALETEXT)属于其他常用编辑文字的命令字符串缩放命令启动方法如下。下拉菜单&#xff1a;“修改>对象>文字>比例”命令&#xff1b;“文字”工具栏&#xff1a;“缩放”按钮 &#xff1b;命令名&#xff1a;SCAL…