学小程序我们需要有点html、css、js基础,而flex布局是我们小程序常用的css布局,学习小程序之前,我们需要了解一些css方面的布局知识-Flex布局,Flex 布局将成为未来布局的首选方案

1. flex 布局是什么

Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。

2. flex布局体验

2.1 传统布局与flex布局

传统布局

  • 兼容性好
  • 布局繁琐
  • 局限性,不能再移动端很好的布局

flex布局

  • 操作方便,布局极为简单,移动端应用很广泛
  • pc端浏览器支持情况较差
  • ie11或者更低版本,不支持或仅部分支持

2.2 初体验

html结构:

<div class="container"><span>1</span><span>2</span><span>3</span>
</div>
 .container{display: flex;height: 300px;width: 80%;background-color: red;justify-content: space-around;}.container span{background-color: blue;/* width: 150px; */height: 100px;margin-right: 10px;flex: 1;}

效果如下图:

3. flex布局原理

3.1 布局原理

flex是flexible box 的缩写,意为“弹性布局”,用来为盒状模型提供更大的灵活性,任何一个容器都可以指定为flex布局。

  • 当我们为父盒子设为flex布局以后,子元素的float、clear和vertical-align属性将失效。
  • flex布局可以简称: 伸缩布局=弹性不见=伸缩盒布局=弹性盒布局=flex布局

采用flex布局的元素,称为flex容器(flex container),简称“容器”。它的所有子元素自动成为容器成员,称为flex项目(flex item),简称“项目”。

拿上面的例子来说明:

  • 体验中div就是flex父容器。
  • 体验中span就是子容器flex项目
  • 子容器可以横向排列也可以纵向排列

[
flex布局原理: 通过给父盒子添加flex属性,来控制子盒子的位置和排列方式

4. flex布局父项常见的属性

#### 4.1 常见的父项属性
父元素设置的常见6个属性:

  • flex-direction: 设置主轴的方向
  • justify-content: 设置主轴上的子元素排列方式
  • flex-wrap: 设置子元素是否换行
  • align-content: 设置侧轴上的子元素的排列方式(多行)
  • aling-items: 设置侧轴上的子元素排列方式(单行)
  • flex-flow:复合属性,相当于同时设置了flex-direction和flex-wrap

4.2 flex-direction设置主轴的方向

  1. 主轴与侧轴

在flex布局中,是分为主轴和侧轴两个方向,同样的说法:行和列、x轴和y轴

  • 默认的主轴方向就是x轴方向,水平方向
  • 默认的侧轴方向就是y轴方向,水平向下
  1. 属性值

flex-direction属性决定主轴的方向(即项目的排列方向)
注意: 主轴和侧轴是会变化的,就看flex-direction设置谁为主轴,剩下的就是侧轴,而我们的子元素是跟着主轴来排列的。

利用上面的html结构,我们重新写样式效果

.container{/* 给父元素添加flex 属性 */display: flex;height: 300px;width: 80%;background-color: red;/*默认的主轴是x轴,子元素跟着主轴从左到右排列*//*flex-direction: row;*//*我们可以把我们的主轴设置为与轴,那么x轴就成为了侧轴,子元素沿着主轴的方向从上到下排列*/flex-direction: column;}.container span{background-color: blue;width: 150px; height: 100px;margin-right: 10px;}

4.3 justify-content 设置主轴上的子元素排列方式

justify-content属性定义了项目在主轴上的对齐方式
注意:使用这个属性之前一定要确定好主轴是哪个


下面用案例说明:
html结构

<div class="container"><span>1</span><span>2</span><span>3</span><span>4</span></div>

css样式效果:

.container{/* 给父元素添加flex 属性 */display: flex;height: 300px;width: 800px;background-color: red;/*默认的主轴是x*/flex-direction: row;/* justify-content是设置主轴上子元素的排列方式 *//*让元素居中对齐*//* justify-content:center; *//*平均分配剩余空间*//* justify-content: space-around; *//*先贴两边,再分配剩余空间*/justify-content: space-between;}.container span{background-color: blue;width: 150px;height: 100px;/* margin-right: 10px; */}


当cssy轴变为主轴的时候:

.container{/* 给父元素添加flex 属性 */display: flex;height: 800px;width: 800px;background-color: red;/*默认的主轴是x*/flex-direction: column;/* justify-content是设置主轴上子元素的排列方式 *//*让元素居中对齐*//* justify-content:center; *//*平均分配剩余空间*//* justify-content: space-around; *//*先贴两边,再分配剩余空间*/justify-content: space-between;}.container span{background-color: blue;width: 150px;height: 100px;/* margin-right: 10px; */}

4.4 flex-wrap 设置子元素是否换行

默认情况下,项目都排在一条线上,flex-wrap属性定义,flex布局中默认是不换行的。如果装不下,会缩小子元素宽度,放到父元素里面。

4.5 align-items 设置侧轴上你的子元素排列方式(单行)

该属性是控制子项在侧轴(默认是y轴)上的排列方式,在子项为单项的时候使用

侧轴居中代码:

.container{/* 给父元素添加flex 属性 */display: flex;height: 300px;width: 800px;background-color: red;/*默认的主轴是x*/justify-content: center;/*侧轴居中*/align-items: center;}.container span{background-color: blue;width: 150px;height: 100px;margin: 10px;}

显示效果如下图:

4.6 align-content 设置侧轴上的子元素的排列方式(多行)

设置子项在侧轴上的排列方式并且只能用于子项出现换行的情况(多行),在单行下是没有效果的

多行居中效果
代码如下:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>flex</title>
<style>
.container{/* 给父元素添加flex 属性 */display: flex;height: 300px;width: 800px;background-color: red;/*默认的主轴是x*/justify-content: center;flex-wrap: wrap;/*因为有了换行*/align-content: space-around;}.container span{background-color: blue;width: 150px;height: 100px;margin: 10px;}
</style>
</head><body><div class="container"><span>1</span><span>2</span><span>3</span><span>4</span><span>5</span><span>6</span></div>
</body>
</html>

效果如下:

align-content和align-items区别:

  • align-items适用于单行情况下,只有上对齐、下对齐、居中和拉伸
  • align-content适用于多行的情况下(单行情况下无效),可以设置上对齐、配剩余空间等属性值。
  • 总结就是单行找align-items多行找align-content

4.7 flex-flow

flex-flow属性是flex-direction和flex-wrap属性的复合属性

flex-flow: row wrap;

5. flex布局子项常见属性

  • flex子项占份数
  • align-self控制子项自己在侧轴的排列方式
  • order属性定义子项的排列顺序(前后顺序)

5.1 flex 属性

flex属性定义子项目分配剩余空间,用flex来表示占了多少份数

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>flex</title>
<style>
.container{/* 给父元素添加flex 属性 */display: flex;height: 150px;width: 60%;background-color: red;margin: 0 auto;}.container div:nth-child(1) {width: 100px;height: 150px;background-color: pink;}.container div:nth-child(2) {flex:1;height: 150px;background-color: green;}.container div:nth-child(3) {width: 100px;height: 150px;background-color: blue;}
</style>
</head><body><section class="container"><div>1</div><div>2</div><div>3</div></section>
</body>
</html>

效果如下图:

5.2 align-self 控制子项自己在侧轴上的排列方式

align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch.

5.3 order属性定义项目的排列顺序

数值越小,排列越靠前,默认为0,
注意: 和z-index不一样。

总结

今天只要分享了关于移动端布局用到的flex布局,主要是各属性的用法,如果想了解更多。请扫描二维码,关注公众号:

小程序入门到精通(三):学小程序必备技术基础-flex布局相关推荐

  1. 【微信小程序入门到精通】— 微信小程序开发工具的安装

    目录 前言 一.注册小程序账号 二.安装开发环境 2.1 微信小程序开发工具介绍 2.1 安装微信开发者工具 总结 前言 微信小程序在我们日常使用中已经占据很大一部分了,此专栏是专门为了微信小程序学习 ...

  2. 【微信小程序入门到精通】— 微信小程序实现多页面切换(tabBar)

    目录 前言 一.tabBar 介绍 二.实操(创建 tabBar ) 2.1 基本配置 2.2 详细配置 总结 前言 对于目前形式,微信小程序是一个热门,那么我们该如何去学习并且掌握之后去做实际项目呢 ...

  3. 小程序入门到精通:微信小程序介绍及开发准备工作(一)

    1. 什么是小程序? 微信小程序(wei xin xiao cheng xu),简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用 ( 张小龙对其的定义是无需安装,用完即走 ...

  4. Kali Linux 从入门到精通(三)-入侵系统定制

    Kali Linux 从入门到精通(三)-入侵系统定制 定制 网络配置 临时IP地址 dhclient eth0 ifconfig eth0 192.168.11/24 route add defau ...

  5. C4D致富经典入门到精通(三)

    C4D样条曲线创建 C4D基础界面的介绍与常用快捷键:  C4D致富经典入门到精通(一) C4D父子关系的理解与创建参数几何体与可编辑对象: C4D致富经典入门到精通(二) C4D样条曲线创建 :  ...

  6. 【微信小程序入门到精通】—小程序实战构建售货平台首页

    目录 前言 一.步骤阐述 二.新建项目并梳理结构 三.配置导航栏 四.tabBar 实现 五.轮播图实现 总结 前言 对于目前形式,微信小程序是一个热门,那么我们该如何去学习并且掌握之后去做实际项目呢 ...

  7. 小程序入门到精通一篇就够了!

    一.小程序介绍 1.1.小程序是什么 官方文档:微信开放文档 微信小程序,简称小程序,英文名 MiniProgram ,是一种不需要下载安装即可使用的应用,它实现了应用 " 触手可及 &qu ...

  8. 【微信小程序入门到精通】— window 导航栏配置

    目录 前言 一.全局配置的常用配置项 二 .window 导航栏 2.1 navigationBarTitleText 配置项 2.2 下拉刷新的配置 总结 前言 对于目前形式,微信小程序是一个热门, ...

  9. 微信小程序入门的笔记(微信小程序的开发工具已经安装好了)

    小程序项目的基本构成 1.pages 是用来存放所有小程序的页面 2.utils 用来存发工具性质的模块(例如:格式化时间的自定义模块) 3.app.js 小程序项目的入口文件 4.app.json ...

最新文章

  1. tomcat修改默认web目录
  2. Linux命令集合(更新中。。。)
  3. 计算机视觉与深度学习 | 基于MATLAB 使用CNN拟合一个回归模型来预测手写数字的旋转角度(卷积神经网络)
  4. HttpURLConnection与 HttpClient 区别/性能测试对比
  5. Revit二次开发之“为Ribbon设置快捷键”
  6. 顺序表的动态存储细节
  7. Linux之POSTFIX邮件服务
  8. C#创建一个文本文件简单代码
  9. Vitamio 3.0 新手教程
  10. vsCode PlatformIO + jlink + GD32VF103
  11. 前端实现在线预览pdf、word、xls、ppt等文件
  12. HMC5883L校准
  13. 计算机添加启动程序,电脑如何设置开机启动项
  14. 设置Hi提醒实现机器人盯盘|自动监测股票价格达到条件推送消息通知
  15. 带托管代码的infopath2007表单创建, 发布,应用(MOSS开发)
  16. windows 启动修复总结
  17. 高职单招面试自我介绍稿子计算机专业,单招面试自我介绍稿子范文
  18. HDU 胜利大逃亡(BFS)
  19. Android快递轨迹查询 “KD快递查询”
  20. Windows 10 下安装gcc

热门文章

  1. c语言流感,维生素C能防流感?专家:或减轻普通感冒引起不适症状
  2. JAVA 正则表达式 RegexUtil
  3. 人工智能人才缺口巨大,是否要从大学生抓起?
  4. 第一章信息安全基础考试要点及真题分布
  5. 湖北省计算机技能高考c语言试题及答案,最新湖北省技能高考C语言测试题
  6. python api测试框架_python api 测试框架
  7. Windows下Python3+nose+appium自动化测试之Android篇
  8. kubernetes 简介:kube-dns 和服务发现
  9. js 获取最后一个字符
  10. Junit4单元测试报错