首页 > 其他分享 >CSS|Flex布局

CSS|Flex布局

时间:2023-07-05 16:47:10浏览次数:34  
标签:Flex 主轴 容器 items 布局 flex div 默认值 CSS

演示动图来源:GitHub

一. 什么是flex布局

是一种专门的CSS一维(水平/垂直)布局方案

  • 位置(定性)
  • 大小(定量)

怎么研究位置和大小

借助坐标系(平面直角坐标系)

  • 水平轴: 主轴
  • 垂直轴: 交叉轴
flex3.png

二. 区分flex容器和flex项目

img

1) 什么是flex容器

启用flex布局方案的元素

2) 如何产生flex容器

通过设置display: flex属性, 让一个元素变成flex容器

3) 什么是flex项目

容器中的第一层子元素就是flex项目(item)

示例

<!-- 
  如果ul是flex容器的话, 3个li元素就是flex项目
  如果第一个li元素是flex容器的话, 1 和 a元素就是flex项目
 -->
<ul>
  <li>1 <a href="#">111</a></li>
  <li>2</li>
  <li>3</li>
</ul>

三. 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>
      /* 1. 确定flex容器, 根据flex容器确定flex项目 */
      .father {
        /* 设置flex容器, 确定了两个轴(主轴水平/交叉轴垂直) */
        /* 元素默认在主轴上排列 */
        display: flex;
        width: 400px;
        height: 400px;
        background-color: pink;
      }
      .one {
        width: 100px;
        height: 100px;
        background-color: skyblue;
      }
      .two {
        width: 100px;
        height: 100px;
        background-color: lightgreen;
      }
    </style>
  </head>
  <body>
    <div class="father">
      <div class="one"></div>
      <div class="two"></div>
    </div>
  </body>
</html>
  • 设置flex容器, 确定了主轴(默认是水平)
  • flex项目沿主轴排列
img

1 flex-direction

确定主轴方向

  • row(默认值): 水平方向, 从左到右
  • column: 垂直方向, 从上到下
  • row-reverse: 水平方向, 从右到左
  • column: 垂直方向, 从下到上
flex4.gif

2 flex-wrap

控制是否换行

当主轴空间不够时, 如何处理

  • nowrap(默认值): 不换行
  • wrap: 换行

3 主轴的分布

控制主轴上flex项目的排列方式

通过控制剩余空间

justify-content(重点)

  • flex-start(默认值): 从左到右依次排列
  • flex-end: 从右到左排列
  • center: 居中排列
  • space-between: 贴边对齐
  • space-around: 手拉手对齐
  • space-evenly: 均分对齐
img

4 交叉轴的分布

控制交叉轴上flex项目的排列方式

align-items(重点)

  • flex-start:
  • flex-end:
  • center:
  • stretch:
  • baseline:

看看后两个,其中每个 div 中的数字都包含在一个 p 标签中

align-items: stretch 时每个 div 都会充满交叉轴
align-items: baseline 时按照 p 标签的底部对齐

flex8.gif

注意:align-items: stretch 时每个 div 的 height 必须为 auto 否则 height 属性会覆盖 stretch 的效果

align-items: baseline 时如果 div 内没有 p 标签或者 div 内没有文字或者子标签内没有文字将按照每个 div 的底部对齐。如下:

flex9.png

4 主轴和交叉轴的区别

进一步理解主轴和交叉轴的区别,把 justify-content 和 align-items 合在一起,看看在 flex-direction 两种值下的效果

flex10.gif

flex-direction: row 时每个 div 按照水平主轴排列
flex-direction: column时每个 div 按照垂直主轴向下排列

四. flex项目属性

flex项目属性(定量关系)

确定每个项目的大小

flex是一个简写, 由3个属性组成

  • flex-grow: 扩张(按比例扩张)
  • flex-shrink: 收缩(按比例收缩)
  • flex-basis: 主轴初始空间

flex默认值

  • flex-grow: 0 (不扩张)
  • flex-shrink: 1(收缩)
  • flex-basis: auto(自动计算)

示例

/* 1 1 auto(开启扩张, 均分剩余空间) */
flex: 1;

五. 注意事项

1 不设置宽高

不设置高度: height默认值是auto(占满整个交叉轴)

不设置宽度: width默认值是auto(由内容撑开)

2 如何确定占据主轴空间的初始值

初始值计算优先值

  • flex-basis > width > 内容撑开

标签:Flex,主轴,容器,items,布局,flex,div,默认值,CSS
From: https://www.cnblogs.com/tangjielin/p/17528941.html

相关文章

  • Flex布局常用属性详解
    1.Flex布局与响应式布局1.1为什么需要响应式布局?在电脑PC端,使用浮动,定位同时使用像素px单位就可以完成大部分布局,而且布局完之后不会有大问题,但是到了移动端,移动设备的屏幕尺寸多种多样,从小屏幕的智能手机到大屏幕的平板电脑,甚至是可穿戴设备,简单地运用和PC端一样的方式就会出......
  • HTML5、CSS3
    ​ 1.HTML5是什么?有哪些新特性?有哪些新增标签?如何让低版本的IE支持HTML5新标签HTML5是超文本标记语言的第五次重新修订,2014年10月29日标准规范制定完成。HTML5的设计目的是为了在移动设备上支持多媒体。HTML5的新特性:用于绘画:canvas元素用于媒体回访:video和audio......
  • css文本&布局属性
    1.writing-mode(协作模式):块内容(段落)在页面的流程方式  horizontal-tb(默认):水平内容,从上到下  vertical-lr:垂直内容,从左到右  vertical-rl:垂直内容,从右到左2.direction(方向):内联内容(字符)如何在屏幕上流动  ltr(默认):从左到右  rtl:右到左3.flex(弹性盒子)-物理属......
  • 用户管理页面布局
    1.观察前端项目写一个用户管理页面,做查询系统,新增2.查询部分2.1.打开Element官网,查看相关的组件2.2.在user.vue文件中删除“用户管理”,放一个卡片样式进去2.3.两端间距,改大一些,修改section.app-main2.4.搜索栏缩短,加上搜索图标和新增图标2.5.将新增按钮放......
  • CSS文档说明
    CSS(Cascadingstylesheets)层叠样式表,用于美化HTML标签,配合js可以做出好看的效果文档链接访问CSS文档库查看全部介绍CSS的语法规则写在style标签中,style标签一般写在和head标签里面,title标签下面美化对象{ 属性名:属性值}CSS引入方式引入方式书写位置作为范......
  • 【7.0】前端基础之CSS案例
    【7.0】前端基础之CSS案例在设计页面的时候先用div划分页面,再去填充数据,再去填充样式html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>CnBlogs</title><linkrel="stylesheet"href=&quo......
  • CSS|盒子模型
    因为最近实习,学的是这种玩意,老师文档写的不错,更点基础的东西。一.盒子分类每个元素都有默认的显示方式,包括块盒:独占一行,可以设置宽高行盒:不独占一行,不能设置宽高(不生效)高度由字体大小撑开显示方式是由display属性控制的display常见的值:block:块盒inli......
  • Element-布局
     Layout布局<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><style>.el-row{margin-bottom:20px;}.el-col......
  • CSS文字超出宽度---换行总结
     <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</title>......
  • flex布局四个div盒子前三个盒子左对齐,后面的盒子右对齐
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>flex布局</title><style>*{margin:0;padding:0;}.box{ disp......