深入CSS

99 阅读1分钟

👉⭐️布局相关技术💎

🍊Flex Box是什么

一种新的排版上下文 它可以控制子级盒子的 摆放的流向 摆放顺序 盒子宽度和高度 水平和垂直

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"> 
<title>flex布局</title> 
<style>
    .container{
        display: flex;
        border: 2px solid #966;
    }
    .a,.b,.c{
        text-align: center;
        padding: 1em;
    }
    .a{
        background-color: #fcc;
    }
    .b{
        background-color: aquamarine;
    }
    .c{
        background-color: purple;
    }
</style>
</head>
<body>
<div class="container">
    <div class="a">A</div>
    <div class="b">B</div>
    <div class="c">C</div>
</div>
</body>
</html>

🍊布局原理:

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

🍎常见父项属性:

  • flex-diretion:设置主轴的方向

image.png

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

image.png

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

image.png

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

image.png

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

image.png

  • flex-flow:复合属性,相当于同时设置了flex-direction和flex-wrap

🍎 flex布局子项常见属性

  • flex属性:定义子项目分配剩余空间,用flex来表示占多少份
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        p{
            display: flex;
            width:80% ;
            height: 150px;
            background-color: rgb(119, 190, 119);
            margin: 0 auto;
        }
        p span{
            flex: 1;
        }
        p span:nth-child(2){
            flex: 2;
            background-color: antiquewhite;
        }
    </style>
</head>
<body>
    <p>
        <span>1</span>
        <span>2</span>
        <span>3</span>
    </p>

</body>
</html>

image.png

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

image.png

  • oder属性:定义项目的排列顺序
    数值越小越靠前,默认为0

🍊行级排版上下文(IFC)

  • 只包含行级盒子的容器会创建一个IFC
  • IFC内的排版规则

盒子在一行内水平摆放
一行放不下时,换行显示
text-align决定一行内盒子的水平摆放
vertical-align决定一个盒子在行内的垂直对齐
避开浮动(float)元素

🍊块级排版上下文(BFC)

  • 某个容器会创建一个BFC 根元素 浮动,绝对定位,inline-block Flex子项和Grid子项 overflow值不是visible的块盒 display:flow-root; BFC内的排版规则 盒子从上到下摆放 垂直margin合并 BFC内盒子的margin不会与外面的合并 BFC不会和浮动元素重叠

image.png

🍊Grid布局

image.png

image.png