CSS(十)-- 弹性盒子

1.弹性盒简介

  • flex(弹性盒,伸缩盒),是css的又一种布局手段
  • 主要用来代替浮动来完成页面的布局
  • flex可以使元素具有弹性,让元素可以跟随页面的大小的改变而改变

1.1弹性容器

  • 要使用弹性盒,必须先将一个元素设置为弹性容器

通过display来设置弹性容器

  • display:flex 设置为块级弹性容器
  • display:inline-flex 设置为行内的弹性容器

flex-direction 指定容器中弹性元素的排列方式

  • 可选值:

    • colum:纵向排列(上 向 下)
    • colum-reverse:反方向纵向排列(下 向 上)
    • row(默认值):横向排列(左 向 右)
    • row-reverse:弹性容器在容器中反向水平排列(右 向 左)
  • 主轴:弹性元素的排列方向称为主轴

  • 侧轴:与主轴垂直方向的称为侧轴

ul{
      width:500px;
      border:10px red solid;
      display:flex;
      flex-direction:row;
}

1.2弹性元素

  • 弹性容器的子元素(直接子元素)是弹性元素(弹性项)
  • 一个元素可以同时是弹性容器和弹性元素

弹性元素的属性:

flex-grow: 指定弹性元素的伸展的系数

注意这里边的比例是对剩余的空白部分分配的比例,不包括元素本身

  • 当父元素有多余空间时,子元素如何伸展
  • flex-grow:1;伸展
  • flex-grow:0(默认值)0;不伸展
  • 有多个子元素设置时,按比例伸展
  • 只能放在子元素中
  • 放在子元素中可以设置伸展的比例
依次按1:2:3比例分配
li:nth-child(1){
      flex-grow:1;
}
li:nth-child(2){
      background-color:pink;
      flex-grow:2;
}
li:nth-child(3){
      background-color:orange;
      flex-grow;
}

flex-shrink 指定弹性元素的收缩系数

  • 当父元素中的空间不足以容纳所有的子元素时,如何对子元素进行收缩
    用法和flex-grew相同

1.3 弹性盒子应用

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./css/reset.css">
    <style>
        ul{
             1210px;
            height: 48px;
            display: flex;
            flex-direction: row;
     
            background-color: #e8e7e3;
            margin: 0 auto;
        }
        li{
            flex-grow: 1;
            text-align: center;
        }
        ul a{
            display: block;
            text-decoration: none;
            color: #808080;
            line-height: 48px;
            font-size:16px
           
        }
        li a:hover{
            color:#e8e7e3;
            background-color:#808080;
        }


        
    </style>
</head>
<body>
    <ul class="nav">
        <li><a href="#">HTML/CSS</a></li>
        <li><a href="#">Browser Side</a></li>
        <li><a href="#">Server Side</a></li>
        <li><a href="#">Programming</a></li>
        <li><a href="#">XML</a></li>
        <li><a href="#">Web Building</a></li>
        <li><a href="#">Reference</a></li>
    </ul>
</body>
</html>

2.弹性盒子上的样式

flex-wrap:设置弹性远古三是否在弹性容器自动换行

可选值:

  • nowrap(默认值):不会自动换行
  • wrap 元素沿着辅轴方向自动换行
  • wrap-reverse 沿着辅轴方向反向换行

flex-flow:wrap和direction的简写属性

flex-flow:row wrap;

justify-content:如何分配主轴上的空白空间(主轴上的元素如何排列)

可选值:

  • flex-start:元素沿着主轴的起边(start)排列
  • flex-end:元素沿着主轴的终边(end)排列
  • center:元素居中排列
  • space-around:空白分布到元素两侧
  • space-evenly:空白分布到元素的单侧
  • space-between:把距离分配到元素中间

align-items:元素在辅轴上的表现

  • stretch(默认值):将元素的长度设置为相同的值

    6种颜色的高度是一样的

  • flex-start:元素不会拉伸,沿着辅轴起边对齐,高度自适应

  • flex-end:元素不会拉伸,沿着辅轴终边对齐,高度自适应

-center:- flex-end:元素不会拉伸,居中,高度自适应

-baseline:基线对齐

align-content:辅轴空白空间的分布

  • center:
  • flex-start
  • flex-end
  • space-around
  • space-between

align-self:stretch

3.弹性元素上的样式

flex-grow:弹性的增长系数

注意这里边的比例是对剩余的空白部分分配的比例,不包括元素本身

flex-grow:弹性元素的缩减系数

  • 缩减系数的计算方式比较复杂
  • 缩减多少是根据缩减系数和元素大小来计算的

flex-basis:

元素基础长度

  • 指定的是元素在主轴上的基础长度
  • 如果主轴是横向的则该值指定的就是元素的高度
  • 如果主轴是纵向的则该值指定的就是元素的高度
  • 默认值是auto,表示参考元素自身的高度
  • 如果传递了一个具体的数值,则以该值为准

flex:可以设置弹性元素所有的三个样式

  • flex:增长 缩减 基础
  • flex具有默认值:
    • initial "flex:0 1 auto"
    • auto: "flex:1 1 auto"
    • none: "flex:0 0 auto" 弹性元素没有弹性

order:指定弹性子元素的排列顺序

order:3
数值越大越在前面

原文地址:https://www.cnblogs.com/psyduck/p/14347601.html