首页 > 其他分享 >CSS3伸缩盒模型之伸缩容器和伸缩项目、主轴、侧轴

CSS3伸缩盒模型之伸缩容器和伸缩项目、主轴、侧轴

时间:2024-07-08 22:30:30浏览次数:17  
标签:CSS3 flex 侧轴 主轴 容器 项目 伸缩 对齐

一、伸缩容器和伸缩项目

  伸缩容器: 设置了display: flex 的元素,就是伸缩容器。

    1.给元素设置: display:flex 或 display:inline-flex,该元素就变为了伸缩容器。

    2.display:inline-flex 很少使用,因为可以给多个伸缩容器的父容器,也设置为伸缩容器。

    3.一个元素可以同时是:伸缩容器、伸缩项目。

   伸缩项目:伸缩容器所有子元素自动成为了伸缩项目。

    1.仅伸缩容器的子元素成为了伸缩项目,孙子元素、重孙子元素等后代,不是伸缩项目。

    2.无论原来是哪种元素(块、行内块、行内),一旦成为了伸缩项目,全都会“块状化”。

二、主轴、侧轴方向

1.主轴与侧轴

    主轴: 伸缩项目沿着主轴排列,主轴默认是水平的,默认方向是:从左到右(左边是起点,右边是终点)。

    侧轴: 与主轴垂直的就是侧轴,侧轴默认是垂直的,默认方向是:从上到下(上边是起点,下边是终点)。

  2.主轴方向

    属性名:flex-direction

      常用值如下:

      (1) row :主轴方向水平从左到右--默认值

      (2) row-reverse :主轴方向水平从右到左。

      (3) column:主轴方向垂直从上到下。

      (4) column-reverse:主轴方向垂直从下到上。

      注意:改变了主轴的方向,侧轴方向也会随之改变

三、主轴对齐方式和换行方式

1.主轴对齐方式

  属性名:justify-content

  常用值如下:

    (1) lex-start:主轴起点对齐。-- 默认值

    (2) flex-end:主轴终点对齐

    (3) center:居中对齐

    (4) space-between:均匀分布,两端对齐(最常用)。

    (5) space-around:均匀分布,两端距离是中间距离的一半。

    (6) space-evenly :均匀分布,两端距离与中间距离一致。

  2.主轴换行方式

    属性名:flex-wrap

        (1) nowrap:默认值--不换行

        (2) wrap:伸缩容器不够时自动换行

        (3) wrap-reverse:反向换行

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    body {
      display: flex;
    }

    .outer {
      width: 1000px;
      height: 600px;
      background-color: gray;
      /* 开启flex布局,将该元素变为伸缩容器 */
      display: flex;

      /* 主轴方向:从左到右 */
      /* flex-direction: row; */

      /* 主轴换行方式:换行*/
      flex-wrap: wrap; 

      /* 复合属性flex-flow */
      /* flex-flow: row wrap; */

      /* 主轴对齐方式,主轴的起始位置——默认 */
      justify-content: flex-start;
      /* 主轴对齐方式,主轴的结束位置 */
      justify-content: flex-end;
      /* 主轴对齐方式,中间对齐 */
      justify-content: center;
      /* 主轴对齐方式,项目均匀的分布在一行中,项目与项目之间的距离,是项目距边缘的二倍 */
      justify-content: space-around;
      /* 主轴对齐方式,项目均匀的分布在一行中,项目与项目之间的距离相等,项目距边缘没有距离 */
      justify-content: space-between;
      /* 主轴对齐方式,项目均匀的分布在一行中 */
      justify-content: space-evenly;
    }

    .inner {
      background-color: skyblue;
      width: 200px;
      height: 200px;
      border: 1px solid black;
      box-sizing: border-box;
    }
  </style>
</head>

<body>
  <div class="outer">
    <div class="inner">1</div>
    <div class="inner">2</div>
    <div class="inner">3</div>
  </div>
</body>

</html>

四、侧轴对齐方式

 (只有一行的情况)

    所需属性:align-items

    常用值如下:

      1.f1ex-start:侧轴的起点对齐。

      2.flex-end:侧轴的终点对齐。

      3.center:侧轴的中点对齐。

      4.baseline:伸缩项目的第一行文字的基线对齐。

      5.stretch:如果伸缩项目未设置高度,将占满整个父容器的高度。--(默认值)

  ( 多行的情况)

    所需属性:align-content

    常用值如下:

      1.flex-start:与侧轴的起点对齐。

      2.flex-end:与侧轴的终点对齐。

      3.center :与侧轴的中点对齐。

      4.space-between:与侧轴两端对齐,中间平均分布。

      5.space-around:伸缩项目间的距离相等,比距边缘大一倍。

      6.space-evenly:在侧轴上完全平分。

      7.stretch:占满整个侧轴。-- 默认值

五、伸缩盒模型——伸

  flex-grow 定义伸缩项目的放大比例,默认为0,即:纵使主轴存在剩余空间,也不拉伸(放大)。

  规则:

    1、若所有伸缩项目的 flex-grow 值都为1,则:它们将等分剩余空间(如果有空间的话)。

    2、若三个伸缩项目的 flex-grow值分别为:1、2、3,则:分别瓜分到:1/6、2/6、3/6 的空间。

六、伸缩盒模型——缩

 flex-shrink 定义了项目的压缩比例,默认为1,即:如果空间不足,该项目将会缩小。

 收缩项目的计算,略微复杂一点,拿一个场景举例:

  例如:

    三个收缩项目,宽度分别为:200px、300px、200px,它们的f1ex-shrink值分别为:1、2、3

    若想刚好容纳下三个项目,需要总宽度为700px,但目前容器只有400px,还差300px

    所以每个人都要收缩一下才可以放下,具体收缩的值,这样计算:

      1.计算分母:(200*1)+(300*2)+(200*3)=1400

      2.计算比例:

        项目一:(200x1)/1400=比例值1

        项日二:(300x2)/1400=比例值2

        项日三:(200x3)/1400=比例值3

      3.计算最终收缩大小:

        项目一需要收缩:比例值1x300

        项目二需要收缩:比例值2x300

        项目三需要收缩:比例值3x300

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    body {
      display: flex;
    }

    .outer {
      width: 1000px;
      height: 600px;
      background-color: gray;
      /* 开启flex布局,将该元素变为伸缩容器 */
      display: flex;
      justify-content: flex-start;
    }

    .inner {
      background-color: skyblue;
      width: 200px;
      height: 200px;
      border: 1px solid black;
      box-sizing: border-box;
      /* 伸 */
      flex-grow: 1;
      /* 缩 */
      flex-shrink: 1;
    }

    .inner2 {
      width: 300px;
    }
  </style>
</head>

<body>
  <div class="outer">
    <div class="inner">1</div>
    <div class="inner inner2">2</div>
    <div class="inner">3</div>
  </div>
</body>

</html>

标签:CSS3,flex,侧轴,主轴,容器,项目,伸缩,对齐
From: https://blog.csdn.net/qq_64536562/article/details/140280066

相关文章

  • css3 列表按先后顺序移动过来显示
    要实现列表按先后顺序平移过来,可以使用CSS动画结合:nth-child()选择器。以下是一个简单的示例:HTML:<ulclass="list"><li>Item1</li><li>Item2</li><li>Item3</li><li>Item4</li></ul>CSS:.listli{opacity:......
  • html+css3实现超级充电动画
    图例  源码在图片后面,有HTML和CSS个部分 源代码HTML<!doctypehtml><html><head><metacharset="utf-8"><title>PureCSS超级充电器</title><linktype="text/css"href="css/style.css"rel="stylesheet&quo......
  • 【前端CSS3】一篇搞懂各类常用选择器(黑马程序员)
    文章目录一、前言......
  • HTML5+CSS3集训(16)
    图片布局案例实践 <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>p155</title></head><body><ul><li><imgsrc="巧克力.jpg......
  • HTML5+CSS3集训(15)
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title></title><style>*{margin:0;padding:0;}.q1{border:1pxsolidblack;bac......
  • HTML5+CSS3集训(14)
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>p180</title></head><body><divclass="container"><divclass="top"......
  • css3动画实现数字动态增加
    要实现数字的动态增加效果,可以使用CSS3的@keyframes规则来创建动画,并使用JavaScript来更新数字。以下是一个简单的实现示例:HTML:<divid="counter"class="counter">0</div>CSS:.counter{/*初始样式*/}@keyframesincreaseNumber{from{opacity:0;transfo......
  • HTML5+CSS3+JS小实例:图片九宫格
    实例:图片九宫格技术栈:HTML+CSS+JS效果:源码:【HTML】<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0">......
  • css3溢出隐藏的方法
    CSS3提供了几种方法来处理元素内容的溢出问题,以下是一些常见的方法:1.**使用`overflow`属性**:  -`overflow:hidden;`:隐藏溢出的内容。  -`overflow:scroll;`:如果内容溢出,将显示滚动条。  -`overflow:auto;`:如果内容溢出,将显示滚动条,但滚动条只在需要时显示。2.......
  • ​b站视频演示效果:【web前端特效源码】使用HTML5+CSS3+JavaScript十分钟快速制作一个
    b站视频演示效果:【网页设计期末大作业源代码】使用HTML5+CSS3+JavaScript十分钟快速制作一个简约大气卡通动漫静态网站|自制超简单的卡通类网页,响应式自适应新手友效果图:完整代码:<!DOCTYPEhtml><html><head><title>Home</title><metaname="viewpor......