Flex伸缩布局

Flex伸缩布局

  • flexible Box的缩写,意为弹性布局

Flex 布局原理

  • 当父元素设置为 flex 布局之后子元素的 float clear 和 vertical-align 属性都将失效

  • 采取 Flex 布局的元素我们称为 Flex容器

  • Flex容器的子元素称为容器成员,简称项目

  • 通过给父盒子添加 flex 属性,来控制子盒子的位置和排列方式

  • Flex 可以使行内元素可以设置高度和宽度

Flex 布局父项常用属性

  • 给父元素添加 flex 属性
div {
   
    display : flex;
}
属性名 解释
flex-direction 设置主轴方向
justify-content 设置主轴上的子元素排列方式
flex-wrap 设置子元素是否换行
align-content 设置侧轴上的元素排列方式(多行)
align-items 设置侧轴上的元素排列方式(单行)
flex-flow 复合属性,相当于同时设置了 flex-direction 和 flex-warp

flex-direction 设置主轴方向

  • 主轴与侧轴:x 和 y 两个方向

    • 默认主轴方向就是 x 轴方向,水平向右
    • 默认侧轴方向就是 y 轴方向,水平向下
  • 主轴和侧轴是可以变换的,看 flex-direction 设置谁为主轴,剩下的就是侧轴,子元素是跟着主轴来排列的

属性值 说明
row 默认值从左到右
row-reverse 从右到左
column 从上到下
column-reverse 从下到上

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

  • justify-content 属性定义了项目在主轴上的对齐方式
  • 注意:在使用这个属性之前一定要确定主轴
属性值 说明
flex-start 默认值从头部开始 如果主轴是 x 轴则从左到右
flex-end 从尾部开始排列
center 在主轴居中对齐 (如果主轴是 x 轴则水平居中)
space-around 平分剩余空间
space-between 先两边贴边,再平分剩余空间重要

flex-wrap 是否放在一行

  • flex-wrap 属性默认让所有的元素再一行显示,如果放不下了会把子元素的宽度缩小强制放在一行
属性值 说明
nowrap 默认值 不换行
wrap 换行

align-items 侧轴排列方式 (单行)

  • align-items属性控制侧轴上单行子元素排列方式
属性值 说明
flex-start 默认值 从上到下
flex-end 从下到上
center 挤在一起居中 (垂直居中)
stretch 拉伸
  • 设置 stretch 属性的子元素不设置高度的话拉伸成和父盒子一样的高度

align-content 侧轴排列方式 (多行)

  • align-content 设置子元素有多行时的排列方式
属性值 说明
flex-start 默认值 从侧轴头部开始排列
flex-end 从侧轴尾部开始排列
center 整体在侧轴中间显示
space-around 子项在侧轴平分剩余空间
space-between 子项在侧轴先分布两头,再平分剩余空间
stretch 设置子项元素高度平分父元素高度

flex-flow 复合属性

  • flex-flow 属性是 flex-direction 和 flex-wrap 的复合属性
  • 也就是同时设置主轴方向和主轴
div {
   
  flex-direction: row;
  flex-wrap: wrap;
}
/* 上下两个是相等的 */
div {
   
  flex-flow: row wrap;
}

Flex 布局子项常见属性

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

Flex 属性

  • 分配剩余空间,用flex来表示占多少份
div {
   
  flex: number;
  /* 默认为0 */
}

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

  • 可以允许单个项目在侧轴上有不一样的对齐方式,可以覆盖align-items 属性,默认值为 auto 表示继承align-items 属性
  • 如果没有父元素,等同于 stretch
div {
   
  align-self: flex-end;
}
/* 只把这个盒子移到后面 */

order 定义元素的排列顺序

  • 数值越小, 排列越靠前, 默认为0
  • 这样更改的话没有动html结构,使用css来改变元素的位置
<!-- 我们把 2 放到 1 的前面 -->
<div>1</div>
<div>2</div>
<style>
  body:nth-child(2) {
    
    order: -1;
  }
</style>

  • 下面是携程网移动端的案例,请选择观看

携程网首页移动端案例

  • 移动端的最小宽度是 320px
  • 初始化 body 示例:
/* body初始化样式 */
body {
   
    max-width: 540px;
    min-width: 320px;
    margin: 0 auto;
    font: normal 14px/1.5 Tahoma, "Lucida Grande", Verdana, "Microsoft Yahei", STXihei, hei;
    color: #000;
    background: #f2f2f2;
    /* 横滚动条隐藏 */
    overflow-x: hidden;
    /* 防止点击之后出现背景高亮 */
    -webkit-tap-highlight-color: transparent;
}

顶层搜索栏

  • 搜索栏父盒子使用固定定位,固定定位需要给出宽度

  • 固定定位和父级没有关系,他以屏幕为主

    • 这里使用left: 50% 和 transform: translateX(-50%) 来使他居中
  • html结构:

<div class="search-index">
    <div class="search">搜索:目的地/酒店/景点/航班号</div>
    <a href="#" class="user">我 的</a>
</div>
  • 顶部最大的模块css
/* 搜索模块 */
.search-index {
   
    position: fixed;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    /* 固定定位的盒子要有宽度 */
    width: 100%;
    min-width: 320px;
    max-width: 540px;
    height: 4
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值