本节目标

  1. 掌握flex-flow的使用,flex-flow是flex-direction和flex-wrap的合集。
  2. 掌握上左右下的布局编写技巧。

内容摘要

本篇介绍了容器属性 flex-flow,是flex-direction和flex-wrap的合集,前面有讲解过相关属性了。这边就来做个应用。

阅读时间大约10~15分钟。

flex-flow基础

flex-flow属性flex-flow是flex-direction和flex-wrap的合集。语法格式如下:

.container {flex-flow: flex-direction flex-wrap;
}

其中:

默认值为:row nowrap,意思就是主轴方向水平向右,不换行。

这边两个属性前面两章都讲解过了,就不再赘述。下面来个实务中常用的例子。

flex-flow应用

实例1,实现如下上左右下布局,要求屏幕宽度变化时能够自动适应:

我们可以看出这个是一个移动端的页面,如果按照之前使用 div+css,样式使用float的方式来做,左边和右边要固定尺寸,要自适应就没有办法了。

这边我们用 flex 来试试,非常简单,总共步骤分为7步,4~6步是flex相关的设置

1)写出html代码:

<div class="container"><div class="header">头部</div><div class="left">左边</div><div class="right">右边</div><div class="footer">尾部</div>
</div>

html代码很简单,就是一个container容器,包含4个div。现在页面显示就是这样4个div:

2)设置 * 的 margin 和 padding 为0:

* {margin: 0;padding: 0;
}

这个是为了移除所有元素的默认边距和内边距,方便精确计算和设置。

3)设置 div 的背景色:

.header,
.left,
.right,
.footer {background-color: lightblue;
}

运行效果如下:

上面铺垫了一些步骤,下面就是 flex 布局的关键步骤了。

4)设置容器为 flex 弹性布局,根据页面布局大小来看header和footer宽度为100%:

.container {display: flex;
}.header,
.footer {flex-basis: 100%;
}

运行效果如下:

但是这样并没有效果,我们知道如果项目总宽度超过容器,那么项目会自己压缩,如果能自己换行就好了

5)设置容器内项目自动换行:

.container {display: flex;/* 设置容器内项目自动换行 */flex-flow: wrap;
}

可以直接用 flex-wrap,用flex-flow也是可以的。

运行效果:

按照预想的显示,下面再对left和right处理一下即可。

6)设置left和right的宽度,这边用flex-grow来占用剩余空间。

.left {flex-grow: 1;
}
.right {flex-grow: 3;
}

运行效果:

至此 flex 布局的关键代码就完了。后面我们再设置一下项目的高度和间距就好了。

7)设置项目的高度和间距:

.header,
.footer {height: 6.25rem;
}.header {margin-bottom: 0.625rem;
}.left {height: 18.75rem;
}.right {height: 18.75rem;margin-left: 0.625rem;
}.footer {margin-top: 0.625rem;
}

运行效果:

最后来一个完整代码,flex相关的代码都加了标注:

<!DOCTYPE html>
<html><head><meta name="viewport"content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /><meta charset="utf-8"><title>上左右下弹性布局</title></head><body><style type="text/css">* {margin: 0;padding: 0;}.header,.left,.right,.footer {background-color: lightblue;}.container {/* 设置容器为flex布局 */display: flex;/* 设置容器内项目自动换行 */flex-flow: wrap;}.header,.footer {/* 设置header和footer宽为100% */flex-basis: 100%;height: 6.25rem;}.header {margin-bottom: 0.625rem;}.left {/* 设置left的放大系数 */flex-grow: 1;height: 18.75rem;}.right {/* 设置right的放大系数 */flex-grow: 3;height: 18.75rem;margin-left: 0.625rem;}.footer {margin-top: 0.625rem;}</style><div class="container"><div class="header">头部</div><div class="left">左边</div><div class="right">右边</div><div class="footer">尾部</div></div></body>
</html>

本节总结

  1. flex-flow是flex-direction和flex-wrap的合集。
  2. 通过 宽度 和 换行属性的结合可以巧妙的实现不同的布局。

flex弹性布局教程-09-容器属性flex-flow相关推荐

  1. flex弹性布局教程-10容器属性justify-content

    本节目标 掌握justify-content的基础使用. 掌握项目多列排列使用justify-content对齐的技巧. 内容摘要 本篇介绍了容器属性justify-content,用来设置项目在主轴 ...

  2. flex弹性布局教程-07容器属性flex-direction

    本节目标 掌握flex-direction的使用. 了解主轴变化的概念. 内容摘要 本篇讲解了容器属性 flex-direction,用来设置主轴的方向. 阅读时间大约10~15分钟. flex容器属 ...

  3. flex弹性布局教程-12容器属性align-content

    本节目标 掌握align-content的基础使用. 掌握align-content和justify-content的区别. 掌握align-content和align-items的区别. 内容摘要 ...

  4. flex弹性布局教程-04项目属性flex-grow

    本节目标 掌握flex-grow的使用. 掌握flex-grow放大的计算公式(难点). 掌握编写导航条的技巧. 内容摘要 本篇介绍了项目属性 flex-grow,用于定义项目的扩大系数,用于分配容器 ...

  5. flex弹性布局教程-03-项目属性flex-basis

    本节目标 掌握 flex-basis 的用法. 了解 flex-basis 和 width 的不同. 阅读时间大约5分钟. 内容摘要 本篇介绍了 flex 项目属性的第一个 flex-basis ,用 ...

  6. Flex 弹性布局教程以及对主轴 交叉轴的理解 :语法篇

    弹性布局的主轴交叉轴的理解 容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis).主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main ...

  7. CSS中使用flex弹性布局实现上下左右垂直居中排列并设置子元素之间的间距

    场景 Flex是Flexible Box的缩写,意为"弹性布局". 怎样使用弹性布局实现页面上下两个元素上下左右垂直居中排列. 实现如下类似布局 最外层是是一个div,div里面是 ...

  8. 页面布局 - flex弹性布局

    flex弹性布局 html: <!DOCTYPE html> <html><head><meta charset="utf-8" /> ...

  9. 移动web现状、viewport视口、二倍图、移动web开发主流方案、布局技术选型(流式布局、flex弹性布局、less+rem+媒体查询布局、混合布局、媒体查询、bootstrap)

    移动端web现状: 移动端常见浏览器:UC浏览器,QQ浏览器,Opera浏览器,百度手机浏览器,360安全浏览器,谷歌浏览器,搜狗手机浏览器,猎豹浏览器及杂牌浏览器.移动端常见的浏览器都是基于webk ...

最新文章

  1. windows2008域下exchange2007sp1部署系列一
  2. Angularjs中文教程
  3. Microsoft.Net框架程序设计学习笔记(11):类型构造器
  4. zendStudio|Eclipse 相关收藏
  5. javascript span ie 与FF
  6. C++ COM编程之QueryInterface函数(二)
  7. 「直播回顾」Mars:加速数据科学的新方式
  8. modelsim与quartus仿真的区别
  9. 虚拟光驱安装WIN7(client mac addr: no DHCP问题)
  10. 定积分求导例题_高中数学导数简单题——定积分、导数、导数的几何意义等解题方法...
  11. 传教士与野人渡河问题(使用C++解决)
  12. 计算机全选的键盘,全选快捷键是什么,教您电脑全选快捷键是什么
  13. U8二开之界面增加按钮处理事件
  14. 全球与中国网络连接视频门铃对讲机设备市场深度研究分析报告
  15. 写运维实习生第五周实习周报,包括心得体会和下周计划,多于300字
  16. check the manual that corresponds to your MySQL server version for the right
  17. Harmonious Graph (并查集 —父亲为最大值)
  18. 汽车CAN通信基础知识-Java之Socket通信实战
  19. 超好看的二次元透明网站登录页模板
  20. 数字VR虚拟博物馆的功能介绍

热门文章

  1. 激光SLAM入门学习笔记
  2. 计算机搜索功能卡,电脑卡
  3. C语言——switch....case函数用法
  4. 带你学习不一样的数据仓库系列-框架概念
  5. 关于固态硬盘设置虚拟内存的问题
  6. 跟我一起进行kiCad设计(四)
  7. Android接入stripe支付
  8. ie 滚动条样式 宽度 兼容IE8。ie11滚动条宽度
  9. 【3D视觉创新应用竞赛作品系列​】多楼层室内环境下的三维几何重建
  10. Maixll-Dock 快速上手