目录

---------

flex 布局基本概念

flex 布局,也被称为弹性布局,是 CSS3 新增的一种布局,只需要给父元素添加 display: flex; 即可

flex 布局特点

  1. 子元素默认横向显示,但是子孙元素不会受影响
  2. 子元素会默认变成块级元素,能设置宽度高度
  3. 如果只有一个子元素的话,则给子元素添加 margin: auto; 时,子元素会直接实现水平垂直居中效果

弹性盒子概念

注:触发弹性盒子之后,项目默认沿主轴排列

flex 布局中的容器属性

交叉轴(侧轴)对齐方式

align-items

属性值:

拆行属性

当给元素触发弹性盒子之后,子元素默认没有拆行横向显示,如果显示不下来,会挤压原来的宽度。

flex-wrap 默认值为 nowrap 不换行,设置 flex-wrap: wrap 换行,当显示不下来的时候,会换行显示

注意:当设定项目的高度并且存在父元素宽度不够显示的时候,行与行之间会出现间距(父元素高度足够的话)

原因:如果没有设定项目高度的话,高度默认是拉伸的效果,均分在每一行中,即使设置了高度,每一行的位置也不会变化,只是高度变小

多行侧轴对齐

如果项目过多,添加拆行之后(display: flex; flex-wrap: wrap;),项目之间会有比较大的行间距,如果要控制多行之间的间距,则需要使用 align-content

align-content 的属性值

flex 布局中的项目属性

项目中的属性,主要是对项目(子元素)的修饰

单独侧轴对齐

align-self 可以分别为每一个项目添加对应的对齐效果

align-self 属性:

调整显示顺序

order,取值为数值,默认为 auto(可以理解为 0)

结论:order 取值可以为整数,也可以为负数,取值越大越靠后面

剩余空间

flex: 1

  1. 主轴在横轴时

如果项目部设置高度,默认高度是拉伸的;项目添加 flex: 1 实现的是占剩余宽度的所有

  1. 主轴在侧轴时

如果项目部设置宽度,默认宽度是拉伸的;项目添加 flex: 1 实现的是占剩余高度的所有

flex: 1 详解

flex 属性,其实是一个复合属性,是由:flex-growflex-shrinkflex-basis 三个属性的缩写:

flex-shrink 应用

flex-shrink 定义项目的缩小比例,主要用于制作移动端横向滚动区域,制作一个滚动条

主要实现思路:

  1. 父元素设置 display: flexoverflow: auto 属性
  2. 子元素设置 flex-shrink: 0 属性

完整代码:

html
PlainText
<style>
    .box {
        display: flex;
        overflow: auto;
        width: 500px;
        height: 100px;
        border: 10px solid gray;
        margin: 100px auto;
    }
    .box > div {
        width: 100px;
        border: 2px dashed red;
        flex-shrink: 0
    }
</style>
<body>
    <div class="box">
        <div>1</div>
        <div>2</div>
        <div>3</div>
        <div>4</div>
        <div>5</div>
        <div>6</div>
        <div>7</div>
        <div>8</div>
    </div>
</body>