iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > 其他 >一文详解CSS3中的Flex布局
  • 486
分享到

一文详解CSS3中的Flex布局

cssCSS3flex 2022-11-22 23:11:06 486人浏览 泡泡鱼
摘要

简介什么是Flex布局Flex是Flexible Box 的缩写,也称为弹性盒子布局。 Flex布局组成:flex容器(flex container)flex项(flex items)主轴(main axis)交叉轴(cross axis)

简介

什么是Flex布局

Flex是Flexible Box 的缩写,也称为弹性盒子布局。
Flex布局组成:

  • flex容器flex container
  • flex项(flex items
  • 主轴(main axis
  • 交叉轴(cross axis

Flex布局的作用

在flex布局未出现前,网页布局的方式为标准流,浮动,定位等。在解决比较复杂的问题相对麻烦。【学习视频分享:CSS视频教程web前端

flex布局可以:

  • 自动弹性伸缩
  • 更轻松地设计灵活的响应式布局结构
  • 精确灵活控制块级盒子的布局方式
  • 在pc端和移动端都适用

Flex容器(父元素)属性

在使用flex布局之前首先定义 Flex 容器。

display:flex;

定义 Flex 容器后可以使用相应的属性, 改变子元素的布局方式,让子元素可以自动的挤压或拉伸。

相应属性:

1. justify-content  主轴元素对齐方式
2. align-items      交叉轴元素对齐方式
3. flex-direction   设置主轴方向
4. flex-wrap        主轴一行满了换行
5. align-content    交叉轴行对齐方式
6. flex-flow        同时设置 flex-direction和 flex-wrap属性

1. justify-content

容器的justify-content属性可以设置子元素在主轴方向的对齐方式。(记得先display:flex;定义容器)

justify-content: center;//居中对齐

image.png

justify-content: space-between;//间距在子元素之间

image.png

justify-content: space-evenly;//主轴方向所有地方的间距都相等

image.png

justify-content: space-around;//间距加在子元素的两侧(中间大的是两个子元素的加在一起)

image.png
代码:

<!DOCTYPE html>
<html>


  <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>主轴对齐方式</title>
    <style>
      * {
        margin: 0;
        padding: 0;
      }


      .box {
        display: flex;


        
        
        
        justify-content: space-around;

        height: 200px;
        margin: auto;
        border: 1px solid #000;
      }

      .box div {
        width: 100px;
        height: 100px;
        background-color: pink;
      }
    </style>
  </head>


  <body>
    <div>
      <div>1</div>
      <div>2</div>
      <div>3</div>
    </div>
  </body>


</html>

2. align-items

容器的align-items属性可以设置子元素在交叉轴方向的对齐方式。

由此我们可以设置将容器属性justify-contentalign-items 设置为居中,让元素实现完美居中。

align-items: center;//居中

image.png

align-items: stretch;//拉伸,默认值(现有状态,这里测试去掉子级的高度)

image.png

align-items: flex-start;//将子元素在容器顶部对齐

image.png

align-items: flex-end;//将子元素在容器底部对齐

image.png
代码:

<!DOCTYPE html>
<html>
  <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>交叉轴对齐方式</title>
    <style>
      * {
        margin: 0;
        padding: 0;
      }


      .father {
        display: flex;
        
        


        
        


        
        align-items: flex-end;
        height: 300px;
        margin: auto;
        border: 1px solid #000;
      }

      .father div {
        
        width: 100px;
        height: 100px;
        background-color: pink;
      }
    </style>
  </head>


  <body>
    <div>
      <div>1</div>
      <div>2</div>
      <div>3</div>
    </div>
  </body>


</html>

3. flex-direction

容器的flex-direction属性可以改变flex布局的主轴方向。flex主轴方向默认为水平向右方向。如果修改主轴方向,那么交叉轴方向也会与之改变。

flex-direction: column;//主轴方向为垂直方向(从上到下)

image.png

flex-direction: column-reverse;//主轴方向为垂直方向(从下到上)

image.png

flex-direction: row;//主轴方向为水平方向(从左到右)

image.png

flex-direction: row-reverse;//主轴方向为水平方向(从右到左)

image.png
修改主轴方向后实现垂直居中:

display:flex;
flex-direction: column;
justify-content: center;

image.png

4. flex-wrap

当定义flex容器之后,如果子元素过多超出主轴方向宽度,容器内的子元素会自动伸缩。
如:

<!DOCTYPE html>
<html>
  <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>弹性盒子换行</title>
    <style>
      * {
        margin: 0;
        padding: 0;
      }


      .box {
        display: flex;
        height: 500px;
        border: 1px solid #000;
      }

      .box div {
        width: 100px;
        height: 100px;
        background-color: pink;
      }
    </style>
  </head>


  <body>
    <div>
      <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>9</div>
    </div>
  </body>


</html>

image.png
解决:容器的flex-wrap属性可以让超出容器主轴方向的子元素换行显示。

flex-wrap: nowrap;//默认值,不换行
flex-wrap: wrap;//换行,从上到下

image.png

flex-wrap: wrap-reverse;//换行,从下到上

image.png

5. align-content

容器的align-content属性可以调节子元素行的对齐方式(需要先设置换行之后)。

align-content: center;//居中对齐
align-content: space-around;//间距加在子元素的两侧(中间大的是两个子元素的加在一起)
align-content: space-between;//间距在子元素之间

前三者的属性跟主轴对齐方式一样就不再赘述。

align-content: stretch;拉伸,默认值(现有状态,这里测试去掉子级的高度)

image.png

6.flex-flow

flex-flow属性是用于同时设置 flex-directionflex-wrap 属性的简写属性。

flex-flow: row wrap;

Flex项(子元素)属性

我们可以设置相应属性让flex 容器的直接子元素成为弹性(flex)项目。(在使用flex布局之前首先定义 Flex 容器。

相应属性:

1. flex-grow
2. flex-shrink
3. flex-basis
4. flex
5. align-self
6. order

1. flex-grow

使用flex-grow属性来定义弹性盒子内部子元素的放大比例(当所有子元素宽度之和小于父元素的宽度时子元素如何分配父元素的剩余空间)。

<!DOCTYPE html>
<html>
  <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>
      .father{
        display:flex;
        width:200px;
        height:150px;
      }


      .box1{
        
        background:red;
        flex-grow: 1;
      }


      .box2{
        background:blue;
        flex-grow: 2;
      }


      .box3{
        background:orange;
        flex-grow: 1;
      }
    </style>
  </head>
  <body>
    <div>
      <div></div>
      <div></div>
      <div></div>
    </div>
  </body>
</html>

image.png

2. flex-shrink

使用flex-shrink属性来定义弹性盒子内部子元素的缩小比例(当所有子元素宽度之和大于父元素的宽度时子元素如何缩小自己的宽度)。

<!DOCTYPE html>
<html>
  <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>
      .father{
        display:flex;
        width:200px;
        height:150px;
      }


      .box1{
        width: 100px;
        background:red;
        flex-shrink: 1;
      }


      .box2{
        width: 100px;
        background:blue;
        flex-shrink: 2;
      }


      .box3{
        width: 100px;
        background:orange;
        flex-shrink: 1;
      }
    </style>
  </head>
  <body>
    <div>
      <div></div>
      <div></div>
      <div></div>
    </div>
  </body>
</html>

image.png

3. flex-basis

使用flex-basis属性来设置子元素的宽度,默认值为auto(作用跟width一样,优先级比width高,就算width在后面也会显示flex-basis)。

4. flex

使用flex属性来同时设置flex-grow、flex-shrink、flex-basis这3个属性,flex属性就是一个复合属性。
实际应用一般用复合属性。
语法:

flex: grow shrink basis;//顺序不能改变,默认值为0 1 auto;

5. align-self

使用align-self属性设置子元素项目的对齐方式。

注意:align-self属性会覆盖容器的 align-items 属性所设置的对齐方式。

<!DOCTYPE html>
<html>
  <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>
      .father{
        display:flex;
        width:200px;
        height:150px;
        align-items: center;
        border: 1px solid #000;
      }


      .box1{
        width: 100px;
        height: 50px;
        background:red;
        align-self: flex-start;
      }


      .box2{
        width: 100px;
        height: 50px;
        background:blue;
      }


      .box3{
        width: 100px;
        height: 50px;
        background:orange;
      }
    </style>
  </head>
  <body>
    <div>
      <div>1</div>
      <div>2</div>
      <div>3</div>
    </div>
  </body>
</html>

image.png

6. order

使用order属性来定义子元素的排列顺序。

<!DOCTYPE html>
<html>
  <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>
      .father{
        display:flex;
        width:200px;
        height:150px;
      }


      .box1{
        width: 100px;
        background:red;
        order: 2;
      }


      .box2{
        width: 100px;
        background:blue;
        order: 1;
      }


      .box3{
        width: 100px;
        background:orange;
        order: 3;
      }
    </style>
  </head>
  <body>
    <div>
      <div>1</div>
      <div>2</div>
      <div>3</div>
    </div>
  </body>
</html>

image.png

以上就是一文详解css3中的Flex布局的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 一文详解CSS3中的Flex布局

本文链接: https://www.lsjlt.com/news/173424.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 一文详解CSS3中的Flex布局
    简介什么是Flex布局Flex是Flexible Box 的缩写,也称为弹性盒子布局。 Flex布局组成:flex容器(flex container)flex项(flex items)主轴(main axis)交叉轴(cross axis)...
    99+
    2022-11-22
    css CSS3 flex
  • CSS3中的Flex布局怎么使用
    这篇文章主要介绍“CSS3中的Flex布局怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CSS3中的Flex布局怎么使用”文章能帮助大家解决问题。简介什么是Flex布局Flex是Flexib...
    99+
    2023-07-04
  • CSS3中flex布局有什么用
    这篇文章将为大家详细讲解有关CSS3中flex布局有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。flex 基本概念flex布局(flex是flexible box的缩写), 也称为弹性盒模型 。将...
    99+
    2023-06-08
  • flex弹性布局详解
    目录初了解基本概念属性容器属性(container)flex 项目属性(item属性)骰子布局实践初了解 在学习弹性布局之前首先就要明白其概念flex 就是flexible box的...
    99+
    2024-04-02
  • CSS3中Flex布局整理是什么
    这篇文章给大家分享的是有关CSS3中Flex布局整理是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Flexbox布局模块旨在提供一个更有效的方式,在一个容器里面去布局分配空间。即使容器的大小是未知的,或者动...
    99+
    2023-06-08
  • CSS3的flex布局怎么使用
    这篇文章主要介绍“CSS3的flex布局怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CSS3的flex布局怎么使用”文章能帮助大家解决问题。   200...
    99+
    2024-04-02
  • flex布局属不属于css3的
    这篇文章主要介绍“flex布局属不属于css3的”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“flex布局属不属于css3的”文章能帮助大家解决问题。 ...
    99+
    2024-04-02
  • css3中dispaly的Grid布局与Flex布局有什么不同
    这篇“css3中dispaly的Grid布局与Flex布局有什么不同”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“css3中dispaly的Grid布局与Flex布局有什么不同”,给大家总结了以下内容,具有一定借鉴价值,内容...
    99+
    2023-06-08
  • CSS3中display属性Flex布局的示例分析
    这篇文章将为大家详细讲解有关CSS3中display属性Flex布局的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在设计首页布局的时候,新认识了一种布局方式di...
    99+
    2024-04-02
  • CSS3的Flex弹性布局怎么应用
    本文小编为大家详细介绍“CSS3的Flex弹性布局怎么应用”,内容详细,步骤清晰,细节处理妥当,希望这篇“CSS3的Flex弹性布局怎么应用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新...
    99+
    2024-04-02
  • css3中如何使flex布局justify-content:space-between最后一行左对齐
    这篇文章主要介绍了css3中如何使flex布局justify-content:space-between最后一行左对齐,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小...
    99+
    2024-04-02
  • 详解Css Flex 弹性布局在博客文章列表中的应用
    引言:随着博客平台的发展,越来越多的博主开始关注博客的外观和布局设计,其中的一个重要因素就是博客文章列表的展示方式。在这方面,Css Flex 弹性布局是一种非常实用和灵活的解决方案。本文将详细介绍 Css Flex 弹性布局在博客文章列表...
    99+
    2023-10-21
    博客 弹性布局 CSS flex
  • 怎么理解html的flex布局
    本篇内容主要讲解“怎么理解html的flex布局”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解html的flex布局”吧!需要注意的是:任何容器都可以指...
    99+
    2024-04-02
  • css3中flex布局如果实现平均分配元素
    这篇文章主要为大家展示了css3中flex布局如果实现平均分配元素,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“css3中flex布局如果实现平均分配元素”这篇文章吧。例子一:<!DOCTY...
    99+
    2023-06-08
  • CSS3的flex弹性盒模型布局的示例分析
    CSS3的flex弹性盒模型布局的示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Flexible Box(弹性盒子)能让页面的分布...
    99+
    2024-04-02
  • CSS 弹性布局属性详解:flex 和 justify-content
    CSS 弹性布局属性详解:flex 和 justify-content在现代的网页设计中,弹性布局(flexbox)成为了一种非常有用的布局方式。弹性布局允许我们轻松地创建自适应且灵活的布局,以适应各种屏幕尺寸和设备类型。两个核心属性 fl...
    99+
    2023-10-24
    CSS 弹性布局 flex
  • CSS Flex弹性布局详解!常用的12个属性
    CSS Flex弹性布局是一种用于布局网页元素的技术,它通过一系列的属性来定义弹性容器和其内部元素的行为。以下是常用的12个CSS ...
    99+
    2023-10-10
    CSS
  • CSS中的flex布局有什么用
    这篇文章给大家分享的是有关CSS中的flex布局有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。flex布局又称为弹性布局,任何一个容器都可以指定为flex布局声明弹性盒子的几种方式就像前面说的,所有容器都...
    99+
    2023-06-08
  • 详解Css Flex 弹性布局在移动端开发中的应用
    在移动设备的普及和多样化的时代,响应式设计已经成为了Web开发的标配。而CSS Flex 弹性布局作为一种响应式设计的解决方案,能够很好地适应不同屏幕尺寸和设备方向的变化,因此在移动端开发中应用广泛。什么是CSS Flex 弹性布局CSS ...
    99+
    2023-10-21
    移动端开发 弹性布局 CSS flex
  • 详解Css Flex 弹性布局与传统布局方式的比较与优缺点
    引言:随着Web应用的复杂性不断增加,页面布局也面临着更高的要求。CSS Flex 弹性布局作为一种新的布局方式,逐渐受到了前端开发者的青睐。本文将详细介绍 CSS Flex 弹性布局与传统布局方式的比较与优缺点,同时给出具体的代码示例,帮...
    99+
    2023-10-21
    CSS Flex 弹性布局 传统布局方式 比较与优缺点
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作