12、CSS3的flex布局(弹性布局、弹性盒子模型)

简介: 12、CSS3的flex布局(弹性布局、弹性盒子模型)

1、CSS3的flex布局


flex布局 基础知识
display:flex 元素变成一个flex容器
容器内部的元素 叫做flex元素或者flex项目(flex-item),默认不换行,高度占100%
优点 比浮动布局更简洁,更易于维护


2、flex-direction属性(设置元素是横向还是纵向的 )


image.png

3、justify-content属性(设置容器水平对齐)


justify-content属性 设置元素(flex-item)左右对齐
flex-start(默认值) 左对齐
flex-end 右对齐
center 居中
space-between 两端对齐,间隔相等
space-around 两端对齐,间隔相等,最两边有间隔


4、align-items属性(设置元素垂直对齐)


align-item属性 设置元素高度是否占满
stretch(延伸)(默认值) 如果元素没有设置高度,将占满整个容器
flex-start 交叉轴(y轴)的起点对齐
flex-end 交叉轴(y轴)的终点对齐
center 交叉轴(y轴)的中点对齐



5、flex-grow属性(放大元素比例,默认为0)


/* 5、flex-grow属性:定义元素放大比例,默认值为0,空间充足时,为1时等比例补全 */
  flex-grow: 0;
/* 5.1、元素占比为3 */
  flex-grow: 3;


6、flex-shrink属性(缩小元素比例)


/* 6、flex-shrink属性:缩小元素比例 */
  /* 如果项目宽度大于容器,不会溢出,会等比例缩放 */
  flex-shrink: 2;


7、aligin-self属性(跟align-item属性一样,设置【单个元素】垂直对齐)

/* 7、多个样式:flex:flex-grow、flex-shrink、flex-basis(auto) */
  flex: 2;
/* 8、align-self属性跟algin-item属性是一样的 */
  align-self: center;

8、实例(通过flex布局实现元素水平垂直居中)


  • 8.1效果:

3ccd7f9d18614880b0be6496306a65c4.png

8.2源代码:

<!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>
    * {
      padding: 0px;
      margin: 0px;
    }
    body,
    html {
      height: 100%;
    }
    .container {
      background-color: antiquewhite;
      height: 100%;
      display: flex;
      /* 水平居中 */
      justify-content: center;
      /* 垂直居中 */
      align-items: center;
    }
    .box {
      width: 100px;
      height: 100px;
      background-color: blueviolet;
      /* 单个垂直居中 */
      align-self: center;
    }
  </style>
</head>
<body>
  <div class="container">
    <div class="box"></div>
  </div>
</body>
</html>

9、实例(通过flex布局实现元素底部对齐)


  • 9.1、效果:

5471feed19d444fb88435552590b56d0.png


9.2、源代码:

<!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>
    * {
      padding: 0px;
      margin: 0px;
    }
    .container {
      background-color: antiquewhite;
      width: 100%;
      height: 70px;
      position: absolute;
      bottom: 0px;
      display: flex;
      justify-content: center;
      align-items: center;
    }
    .content {
      flex-grow: 1;
    }
    .container .content img {
      height: 30px;
    }
  </style>
</head>
<body>
  <div class="container">
    <div class="content">
      <img src="image/cart-dash-fill.svg" alt="">
    </div>
    <div class="content">
      <img src="image/chat-square-dots-fill.svg" alt="">
    </div>
    <div class="content">
      <img src="image/cloud-minus-fill.svg" alt="">
    </div>
    <div class="content">
      <img src="image/envelope.svg" alt="">
    </div>
    <div class="content">
      <img src="image/facebook.svg" alt="">
    </div>
  </div>
</body>
</html>

10、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>
    /* 
    将元素设置为display:flex;元素会变成一个flex容器
    容器内部的元素为flex元素或者叫flex项目(flex-item),默认不独立成行
    主轴:main axis
    交叉轴:cross axis
    */
    * {
      padding: 0px;
      margin: 0px;
    }
    .container {
      width: 200px;
      height: 200px;
      border: 1px solid black;
      /* 
      1、flex布局:弹性布局、弹性盒子布局
      元素(flex-item),默认不换行,高度占100%
      */
      display: flex;
      /* 
      2、flex-direction属性:设置元素水平垂直方向
      row(默认值):主轴为水平方向,起点在左端 
      row-reverse:主轴为水平方向,起点在右端 
      column:主轴为垂直方向,起点在上沿 
      column-reverse:主轴为垂直方向,起点在下沿 
      */
      flex-direction: row;
      /* 
      3、justify-content属性:设置元素水平对齐
      flex-start(默认):左对齐
      flex-end:右对齐
      center:居中
      space-between:两端对齐,项目之间有间隔
      space-around:两端对齐,项目之间、最两边都有间隔
      */
      justify-content: space-between;
      /* 4、algin-item属性:设置元素垂直对齐
      stretch(延伸)(默认值)  如果元素没有设置高度,将占满整个容器
      flex-start:交叉轴的起点对齐
      flex-end:交叉轴的终点对齐
      center:交叉轴的中点对齐
      */
      align-items: center;
    }
    .item {
      width: 100px;
      border: 1px solid black;
      /* 5、flex-grow属性:定义元素放大比例,默认值为0,空间充足时,为1时等比例补全 */
      flex-grow: 1;
    }
    .item2 {
      /* 5.1、元素占比为3 */
      flex-grow: 3;
      /* 6、flex-shrink属性:缩小元素比例 */
      /* 如果项目宽度大于容器,不会溢出,会等比例缩放 */
      flex-shrink: 2;
      /* 7、多个样式:flex:flex-grow、flex-shrink、flex-basis(auto) */
      flex: 2;
      /* 8、align-self属性跟algin-item属性是一样的 */
      align-self: center;
    }
  </style>
</head>
<body>
  <div class="container">
    <div class="item">item1</div>
    <div class="item item2">item2</div>
    <div class="item">item3</div>
  </div>
</body>
</html>


相关文章
|
4月前
|
前端开发
如何设置 CSS 盒子模型的边框样式?
CSS盒子模型的边框样式可以通过`border`属性设置,包括边框宽度、样式和颜色。例如:`border: 2px solid red;` 设置了2像素宽的红色实线边框。也可分别设置四边,如`border-top`、`border-right`等。
|
4月前
|
前端开发 开发者
css两种盒子模型
在CSS中,有两种盒子模型:标准盒子模型和IE盒子模型(怪异盒子模型)。标准盒子模型中,`width`和`height`仅指内容区的尺寸,总宽度和高度还包括内边距、边框和外边距。IE盒子模型中,`width`和`height`包括内容区、内边距和边框,总宽度和高度仅加外边距。通过`box-sizing`属性可以切换这两种模型,`box-sizing: content-box;`表示标准盒子模型,`box-sizing: border-box;`表示IE盒子模型。
|
4月前
|
前端开发 容器
给 CSS 盒子模型添加边框时,需要注意什么?
在给CSS盒子模型添加边框时,需要注意边框的宽度、样式和颜色,以及它如何影响盒子的总尺寸和布局。边框会增加盒子的总宽度和高度,可能需要调整其他属性以保持布局的完整性。
|
3月前
|
容器
Bootstrap5 Flex(弹性)布局4
排序:.order 类可设置弹性子元素的排序,范围从 .order-1 至 .order-12,数字越小优先级越高。外边距:.ms-auto 和 .me-auto 分别用于设置子元素的右侧和左侧外边距为 auto。包裹:.flex-nowrap(默认)、.flex-wrap 和 .flex-wrap-reverse 用于控制弹性容器中的子元素是否换行及换行方向。
|
2月前
|
容器
Bootstrap5 Flex(弹性)布局6
使用 `.align-self-*` 类可控制指定子元素的对齐方式,包括 `.align-self-start`, `.align-self-end`, `.align-self-center`, `.align-self-baseline`, 和 `.align-self-stretch`。示例代码展示了如何在一个弹性布局中应用这些类,以实现不同设备上的响应式设计。
Bootstrap5 Flex(弹性)布局5
使用 .align-content-* 控制多行子元素在垂直方向上的堆叠方式,如 .align-content-start、.align-content-center 等。对于单行子元素,使用 .align-items-* 控制对齐,例如 .align-items-start、.align-items-center 等。示例代码展示了不同对齐效果的应用。
Bootstrap5 Flex(弹性)布局2
介绍Flex布局的水平和垂直方向控制。`.flex-row`使子元素水平排列,默认左对齐;`.flex-row-reverse`则右对齐。`.flex-column`让子元素垂直排列;`.flex-column-reverse`则反向排列。示例展示了不同类的效果,通过改变类名实现布局调整。
Bootstrap5 Flex(弹性)布局3
`.justify-content-*` 类用于调整弹性子元素的对齐方式,支持 start、end、center、between、around 等值。`.flex-fill` 类使所有子元素等宽,而 `.flex-grow-1` 则让指定子元素占据剩余空间。这些类在布局设计中非常实用。
|
3月前
|
前端开发 UED 容器
在 CSS 中使用 Flex 布局实现页面自适应时需要注意什么?
【10月更文挑战第22天】在使用 Flex 布局实现页面自适应时,需要对其基本原理和特性有深入的理解,同时结合具体的布局需求和场景,进行细致的调整和优化。通过合理的设置和注意事项的把握,才能实现理想的自适应效果,提升用户体验。还可以根据实际情况进行更深入的探索和实践,以不断提升 Flex 布局的应用能力。