flex布局

为什么要学习flex布局?传统布局和flex布局区别

简述:

传统布局优点:兼容性强,基本上所有浏览器都适应

传统布局缺点:布局繁琐,在移动端不能很好的布局

flex布局优点:操作方便,布局极为简单,在移动端应用广泛

flex布局缺点:PC端支持性较差。IE11部分支持和低版本不支持

flex布局优势:行内元素也可以使用flex布局,用flex布局后,不区分行内元素(inline)和块级元素(block),且使用flex布局后,flex布局的元素会自适应页面(随着页面大小改变而改变)

使用flex进行布局后,父级称为flex容器,简称容器,父级的所有子元素自动成为容器成员,称为flex项目,简称项目 

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

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

(1) flex-direction设置主轴方向

row;(默认值)从左往右

row-reverse;从右往左

column;从上到下

column-reverse;从下到上

 flex-direction代码示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>flex-direction</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        #box{
            /* 设置为flex布局 */
            display: flex;
            /* 设置主轴方向 */
            flex-direction:row-reverse;
            width: 700px;
            height: 240px;
            border:1px solid red;
        }
        #box>span{
            width: 120px;
            height: 100px;
            margin-left: 20px;
            margin-right: 20px;
            background-color: aqua;
        }
    </style>
</head>
<body>
    <span id="box">
        <span>1</span>
        <span>2</span>
        <span>3</span>
    </span>
</body>
</html>

 注:如果设置主轴为x轴那默认侧轴为y轴

(2)justify-content设置主轴元素上排序方式

1.flex-start;(默认)从左往右

2.flex-end;从右往左

3.center;居中

4.space-around;平分剩余空间(平分后剩余)

5.space-between;先贴两边再平分剩余空间

代码示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>flex-direction</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        #box{
            /* 设置为flex布局 */
            display: flex;
            /* 设置主轴方向 */
            flex-direction:row;
            /* 设置主轴排序方式 */
            justify-content:space-between;
            width: 700px;
            height: 240px;
            border:1px solid red;
        }
        #box>span{
            width: 120px;
            height: 100px;
            margin-left: 20px;
            margin-right: 20px;
            background-color: aqua;
        }
    </style>
</head>
<body>
    <span id="box">
        <span>1</span>
        <span>2</span>
        <span>3</span>
    </span>
</body>
</html>

 注:设置主轴方向和设置排序方式是不一样的

主轴排序从右到左:flex-direction:row-reverse

排序方式从右到左justify-contnet:flex-end

(3)flex-wrap;默认情况下,项目都是排在一条线上(又称“轴线”)上,flex-wrap属性定义,flex布局中默认是不换行的,如果超出,则每个项目缩减宽度

1.nowrap;(默认)不换行

2.wrap;换行

(4)align-items;设置侧轴排列方式在子项为单项(不换行)时使用

1.flex-start;(默认)从上到下

2.flex-end;从下到上

3.center;垂直居中

6.stretch;拉伸

注:使用stretch;进行拉伸操作子项不需要设置高

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

1.flex-start;(默认)从上到下

2.flex-end;从下到上

3.centerl居中

4.space-around;子项在侧轴平分剩余空间

5.space-between;子项在侧轴先分布在两头,在平分剩余空间

6.stretch;设置子项元素高度平分父元素高度

注:使用stretch;进行拉伸操作子项不需要设置高

(6)flex-flow;属性是flex-direction和flex-wrap属性的复合属性

row  wrap;从左到右,换行

flex布局子项常用属性

(1)align-self:控制子项自己在侧轴上的排列方式,该属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items

1.flex-start;默认值,从上到下
2.flex-end;从下到上
3.center;挤在一起居中(垂直居中)
4.stretch;拉伸。注:stretch在子项宽高有值的情况下不会拉伸

(2)order;该属性定义项目排列顺序,数值越小越靠前,默认是0;注意和z-index不一样

order:-1;

注意z-index是层次,order是排列顺序

注:文章 如有雷同,纯属巧合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值