CSS学习笔记之高级教程(四)

19、CSS 用户界面

19.1 CSS 调整大小:resize

  • resize 属性规定元素是否应(以及如何)被用户调整大小。
  • resize: horizontal;水平方向可改变大小
  • resize: vertical;垂直方向可改变大小
  • resize: both;水平+垂直方向都可改变大小

20、CSS 变量:var()函数

  • var() 函数用于插入 CSS 变量的值。
  • var() 函数的语法如下:var(name, value),变量名称必须以两个破折号(--)开头,且区分大小写!

20.1 CSS 变量可以有全局或局部作用域。

全局变量可以在整个文档中进行访问/使用,而局部变量只能在声明它的选择器内部使用。

如需创建具有全局作用域的变量,请在 :root 选择器中声明它。 :root 选择器匹配文档的根元素。

如需创建具有局部作用域的变量,请在将要使用它的选择器中声明它。

<!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>
    :root {
      --blue: #1e90ff;
      --white: #ffffff;
    }

    .container{
      background-color: var(--blue);
    }

    h2 {
      color: var(--white);
    }
  </style>
</head>

<body>

  <div class="container">
    <h2>欢迎来到中国</h2>

  </div>

</body>

</html>

运行效果:
在这里插入图片描述

20.2 覆盖变量var()函数(仅在页面的特定部分中进行更改)

<!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>
    :root {
      --blue: #1e90ff;
      --white: #ffffff;
    }

    .container{
      background-color: var(--blue);
    }

    h2 {
      color: var(--white);
    }

    .button{
      --blue:#0000ff;
      background-color: var(--blue);
      color: white;
      padding: 10px;
      outline: none;
      border: 1px solid var(--blue);
      border-radius: 5px;
    }
  </style>
</head>

<body>

  <div class="container">
    <h2>欢迎来到中国</h2>
    <button class="button">提交</button>

  </div>

</body>

</html>

运行效果:
在这里插入图片描述

20.3 添加一个新的局部变量

<!DOCTYPE html>
<!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>
    :root {
      --blue: #1e90ff;
      --white: #ffffff;
    }

    .container{
      background-color: var(--blue);
    }

    h2 {
      color: var(--white);
    }

    .button{
      --button-blue:#5563E3;
      background-color: var(--button-blue);
      color: white;
      padding: 10px;
      outline: none;
      border: 1px solid var(--button-blue);
      border-radius: 5px;
    }
  </style>
</head>

<body>

  <div class="container">
    <h2>欢迎来到中国</h2>
    <button class="button">提交</button>

  </div>

</body>

</html>

运行效果:
在这里插入图片描述

20.4 CSS 在媒体查询中使用变量

现在,我们希望在媒体查询中修改变量值。

提示:媒体查询旨在为不同的设备(显示器、平板电脑、手机等)定义不同的样式规则。您可以在“媒体查询”一章中学习更多有关媒体查询的知识。

在这里,我们首先为 .container 类声明一个名为 --fontsize 的新局部变量。我们将其值设置为 25 像素。然后我们在 .container 类中进一步使用它。然后,我们创建一个 @media 规则,内容为“当浏览器的宽度为 800px 或更宽时,将 .container 类的 --fontsize 变量值更改为 50px。”

这是完整的实例:

<!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>
    :root {
      --blue: #1e90ff;
      --white: #ffffff;
    }

    .container {
      --fontsize: 25px;
    }

    .container {
      background-color: var(--blue);
      font-size: var(--fontsize);
    }

    h2 {
      color: var(--white);
    }

    .button {
      --button-blue: #5563E3;
      background-color: var(--button-blue);
      color: white;
      padding: 10px;
      outline: none;
      border: 1px solid var(--button-blue);
      border-radius: 5px;
    }

    @media screen and (min-width: 800px) {
      .container {
        --fontsize: 50px;
      }
    }
  </style>
</head>

<body>

  <div class="container">
    <h2>欢迎来到中国</h2>
    <button class="button">提交</button>

  </div>

</body>

</html>

是另一个例子,在其中我们还更改了 @media 规则中 --blue 变量的值:

<!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>
    :root {
      --blue: #1e90ff;
      --white: #ffffff;
    }

    .container {
      --fontsize: 25px;
    }

    .container {
      background-color: var(--blue);
      font-size: var(--fontsize);
    }

    h2 {
      color: var(--white);
    }

    .button {
      --button-blue: #5563E3;
      background-color: var(--button-blue);
      color: white;
      padding: 10px;
      outline: none;
      border: 1px solid var(--button-blue);
      border-radius: 5px;
    }

    @media screen and (min-width: 800px) {
      .container {
        --fontsize: 50px;
      }
      :root{
        --blue:lightblue;
      }
    }
  </style>
</head>

<body>

  <div class="container">
    <h2>欢迎来到中国</h2>
    <button class="button">提交</button>

  </div>

</body>

</html>

21 、CSS Box Sizing

  • CSS box-sizing 属性允许我们在元素的总宽度和高度中包括内边距(填充)和边框。
    假如不指定 CSS box-sizing 属性
    默认情况下,元素的宽度和高度是这样计算的:

width + padding + border = 元素的实际宽度
height + padding + border = 元素的实际高度
这意味着:当您设置元素的宽度/高度时,该元素通常看起来比您设置的更大(因为元素的边框和内边距已被添加到元素的指定宽度/高度中)。

box-sizing 属性解决了这个问题。如果在元素上设置了 box-sizing: border-box;,则宽度和高度会包括内边距和边框

22、CSS Flexbox

CSS Flexbox 布局模块
Flexbox 布局模块(问世)之前,可用的布局模式有以下四种:

  • 块(Block),用于网页中的部分(节)
  • 行内(Inline),用于文本
  • 表,用于二维表数据
  • 定位,用于元素的明确位置

弹性框布局模块,可以更轻松地设计灵活的响应式布局结构,而无需使用浮动或定位。

22.1 Flexbox 元素

如需开始使用 Flexbox 模型,您需要首先定义 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>
    .container{
      display: flex;
      background-color: DodgerBlue;
    }
    .container > div{
      background-color: #f1f1f1;
      font-size: 20px;
      padding: 20px;
      margin: 10px;
    }

  </style>
</head>
<body>
  <div class="container">
    <div>1</div>
    <div>1</div>
    <div>1</div>

  </div>
  
</body>
</html>

上面的元素表示一个带有三个 flex 项目的 flex 容器(蓝色区域)。
通过将 display 属性设置为 flexflex 容器将可伸缩。
弹性容器的所有直接子元素会(自动)成为弹性项目。

22.2 flex 容器属性

22.2.1 flex-direction 属性:定义容器要在哪个方向上堆叠 flex 项目

在这里插入图片描述

22.2.1.1 flex-direction: column; (定义 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>
    .container{
      background-color: DodgerBlue;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      /* 定义 flex 项目堆叠方向-垂直反向 */
      flex-direction: column;
 
    }
    .container > div{
      background-color: #f1f1f1;
      font-size: 20px;
      padding: 20px;
      margin: 10px;
      width: 50px;
      text-align: center;
    }

  </style>
</head>
<body>
  <div class="container">
    <div>1</div>
    <div>2</div>
    <div>3</div>

  </div>
  
</body>
</html>

运行效果:

在这里插入图片描述

22.2.1.2 flex-direction: column-reverse; (定义 flex 项目堆叠方向-垂直反向(从下到上))
 .container{
      background-color: DodgerBlue;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      /* 定义 flex 项目堆叠方向-垂直反向 */
      flex-direction: column-reverse;
    }

运行效果:
在这里插入图片描述

22.2.1.3 flex-direction: row ; (从左到右)
  .container{
      background-color: DodgerBlue;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      /* 定义 flex 项目堆叠方向-从左到右 */
      flex-direction: row;
    }

运行效果:
在这里插入图片描述

22.2.1.4 flex-direction: row-reverse; (从右到左)
  .container{
      background-color: DodgerBlue;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      /* 定义 flex 项目堆叠方向-从右到左 */
      flex-direction: row-reverse;
    }

运行效果:
在这里插入图片描述

22.2.2 flex-wrap 属性:规定是否应该对 flex 项目换行

在这里插入图片描述

22.2.2.2 flex-wrap: wrap;(在必要时进行换行)
<!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>
    .container{
      background-color: DodgerBlue;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      /* 定义 flex 项目堆叠方向-从左到右 */
      flex-direction: row;
      /* 定义换行-在需要时候自动换行 */
      flex-wrap: wrap;
    }
    .container > div{
      background-color: #f1f1f1;
      font-size: 20px;
      padding: 20px;
      margin: 10px;
      width: 50px;
      text-align: center;
    }

  </style>
</head>
<body>
  <div class="container">
    <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>
  
</body>
</html>

运行效果:
在这里插入图片描述

22.2.2.1 flex-wrap: wrap;(在必要时进行换行(反方向))
 .container{
      background-color: DodgerBlue;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      /* 定义 flex 项目堆叠方向-从左到右 */
      flex-direction: row;
      /* 定义换行-在需要时候自动换行,且反方向 */
      flex-wrap: wrap-reverse ;
    }

运行效果:
在这里插入图片描述

22.2.2.3 flex-flow 属性:同时设置 flex-directionflex-wrap 属性的简写属性
 .container{
      background-color: DodgerBlue;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      /* 定义 flex 项目堆叠方向-从左到右 */
      /* flex-direction: row; */
      /* 定义换行-在需要时候自动换行*/
      /* flex-wrap: wrap; */
      /* 性质简写 */
      flex-flow: row wrap;
    }

22.2.3 justify-content 属性:用于对齐 flex 项目

在这里插入图片描述

22.2.3.1 justify-content: center;(将 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>
    .container{
      background-color: DodgerBlue;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      /* 定义 flex 项目堆叠方向-从左到右 */
      /* flex-direction: row; */
      /* 定义换行-在需要时候自动换行*/
      /* flex-wrap: wrap; */
      /* 性质简写 */
      flex-flow: row wrap;
      /* 对齐方式 */
      justify-content: center;
    }
    .container > div{
      background-color: #f1f1f1;
      font-size: 20px;
      padding: 20px;
      margin: 10px;
      width: 50px;
      text-align: center;
    }

  </style>
</head>
<body>
  <div class="container">
    <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>
  
</body>
</html>

运行效果:
在这里插入图片描述

22.2.3.2 justify-content: flex-start;(将 flex 项目在在容器的开头对齐(默认))
 .container{
      background-color: DodgerBlue;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      /* 定义 flex 项目堆叠方向-从左到右 */
      /* flex-direction: row; */
      /* 定义换行-在需要时候自动换行*/
      /* flex-wrap: wrap; */
      /* 性质简写 */
      flex-flow: row wrap;
      /* 对齐方式 */
      justify-content: flex-start;
    }

在这里插入图片描述

22.2.3.3 justify-content: flex-end;(将 flex 项目在在容器的末端对齐)
  .container{
      background-color: DodgerBlue;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      /* 定义 flex 项目堆叠方向-从左到右 */
      /* flex-direction: row; */
      /* 定义换行-在需要时候自动换行*/
      /* flex-wrap: wrap; */
      /* 性质简写 */
      flex-flow: row wrap;
      /* 对齐方式 */
      justify-content:  flex-end;
    }

在这里插入图片描述

22.2.3.4 justify-content:space-around;(显示行之前、之间和之后带有空格的 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>
    .container{
      background-color: DodgerBlue;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      /* 定义 flex 项目堆叠方向-从左到右 */
      /* flex-direction: row; */
      /* 定义换行-在需要时候自动换行*/
      /* flex-wrap: wrap; */
      /* 性质简写 */
      flex-flow: row wrap;
      /* 对齐方式 */
      justify-content:space-around;
    }
    .container > div{
      background-color: #f1f1f1;
      font-size: 20px;
      padding: 20px;
      margin: 10px;
      width: 50px;
      text-align: center;
    }

  </style>
</head>
<body>
  <div class="container">
    <div>1</div>
    <div>2</div>
    <div>3</div>
   

  </div>
  
</body>
</html>

在这里插入图片描述

22.2.3.5 justify-content:space-between;(显示行之间有空格的 flex 项目)
  .container{
      background-color: DodgerBlue;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      /* 定义 flex 项目堆叠方向-从左到右 */
      /* flex-direction: row; */
      /* 定义换行-在需要时候自动换行*/
      /* flex-wrap: wrap; */
      /* 性质简写 */
      flex-flow: row wrap;
      /* 对齐方式 */
      justify-content:space-between;
    }

在这里插入图片描述

22.2.4 align-items 属性:用于垂直对齐 flex 项目(垂直方向)

在这里插入图片描述

22.2.4.1 align-items: center;(垂直居中)
<!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>
    .container{
      background-color: DodgerBlue;
      height: 200px;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      /* 定义 flex 项目堆叠方向-从左到右 */
      /* flex-direction: row; */
      /* 定义换行-在需要时候自动换行*/
      /* flex-wrap: wrap; */
      /* 性质简写 */
      flex-flow: row wrap;
      /* 垂直方向对齐方式 */
      align-items: center;
    }
    .container > div{
      background-color: #f1f1f1;
      font-size: 20px;
      padding: 20px;
      margin: 10px;
      width: 50px;
      text-align: center;
    }

  </style>
</head>
<body>
  <div class="container">
    <div>1</div>
    <div>2</div>
    <div>3</div>
   

  </div>
  
</body>
</html>

在这里插入图片描述

22.2.4.2 align-items: flex-start;(在容器顶部对齐)
  .container{
      background-color: DodgerBlue;
      height: 200px;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      /* 性质简写 */
      flex-flow: row wrap;
      /* 垂直方向对齐方式 */
      align-items: flex-start;
    }

在这里插入图片描述

22.2.4.3 align-items:flex-end;(在容器底部对齐)
  .container{
      background-color: DodgerBlue;
      height: 200px;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      /* 性质简写 */
      flex-flow: row wrap;
      /* 垂直方向对齐方式 */
      align-items: flex-end;
    }

在这里插入图片描述

22.2.4.4 align-items:stretch;(拉伸 flex 项目以填充容器(默认))
   .container{
      background-color: DodgerBlue;
      height: 200px;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      /* 性质简写 */
      flex-flow: row wrap;
      /* 垂直方向对齐方式 */
      align-items: stretch ;
    }

在这里插入图片描述

22.2.4.5 align-items:baseline;(使 flex 项目基线对齐)
.flex-container {
  display: flex;
  height: 200px;
  align-items: baseline;
}

在这里插入图片描述

22.2.5 align-content 属性:用于对齐弹性线

在这里插入图片描述

22.2.5.1 align-content:center;
<!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>
    .container{
      background-color: DodgerBlue;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      /* 性质简写 */
      flex-flow: row wrap;
      height: 600px;
      /* 对齐弹性线方式 */
      align-content:center;
    }
    .container > div{
      background-color: #f1f1f1;
      font-size: 20px;
      padding: 20px;
      margin: 10px;
      width: 50px;
      text-align: center;
    }

  </style>
</head>
<body>
  <div class="container">
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
    <div>5</div>
    <div>6</div>
  

   

  </div>
  
</body>
</html>

在这里插入图片描述

22.2.5.2 align-content:space-between;(显示的弹性线之间有相等的间距)
   .container{
      background-color: DodgerBlue;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      /* 性质简写 */
      flex-flow: row wrap;
      height: 600px;
      /* 对齐弹性线方式 */
      align-content:space-between;
    }

在这里插入图片描述

22.2.5.3 align-content:space-around;(显示弹性线在其之前、之间和之后带有空格)
.container{
      background-color: DodgerBlue;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      /* 性质简写 */
      flex-flow: row wrap;
      height: 600px;
      /* 对齐弹性线方式 */
      align-content:space-around;
    }

在这里插入图片描述

22.2.5.4 align-content:stretch ;(拉伸弹性线以占据剩余空间(默认))
 .container{
      background-color: DodgerBlue;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      /* 性质简写 */
      flex-flow: row wrap;
      height: 600px;
      /* 对齐弹性线方式 */
      align-content:stretch ;
    }

在这里插入图片描述

22.2.5.5 align-content:flex-start;(在容器开头显示弹性线)
   .container{
      background-color: DodgerBlue;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      /* 性质简写 */
      flex-flow: row wrap;
      height: 600px;
      /* 对齐弹性线方式 */
      align-content:flex-start ;
    }

在这里插入图片描述

22.2.5.6 align-content:flex-end;(在容器末尾显示弹性线)
 .container{
      background-color: DodgerBlue;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      /* 性质简写 */
      flex-flow: row wrap;
      height: 600px;
      /* 对齐弹性线方式 */
      align-content:flex-end ;
    }

在这里插入图片描述

22.2.6 完美居中

  align-content:center;
      justify-content: center;

在这里插入图片描述

22.3 子元素(项目)

  • flex 容器的直接子元素会自动成为弹性(flex)项目。

用于弹性项目的属性有:

  • order(规定弹性项目相对于同一容器内其余弹性项目的顺序。)
  • flex-grow
  • flex-shrink
  • flex-basis
  • flex
  • align-self

22.3.1 order 属性:规定 flex 项目的顺序

  • 代码中的首个 flex 项目不必在布局中显示为第一项。

  • order 值必须是数字,默认值是 0

<!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>
    .container{
      background-color: DodgerBlue;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      /* 性质简写 */
      flex-flow: row wrap;
      height: 600px;
      /* 对齐弹性线方式 */
      align-content:center;
      justify-content: center;
    }
    .container > div{
      background-color: #f1f1f1;
      font-size: 20px;
      padding: 20px;
      margin: 10px;
      width: 50px;
      text-align: center;
    }

  </style>
</head>
<body>
  <div class="container">
    <div style="order: 3;">1</div>
    <div style="order: 2;">2</div>
    <div style="order: 4;">3</div>
    <div style="order: 1;">4</div>
  </div>
  
</body>
</html>

在这里插入图片描述

22.3.2 flex-grow 属性:规定某个 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>
    .container{
      background-color: DodgerBlue;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      /* 性质简写 */
      flex-flow: row wrap;
      height: 600px;
      /* 对齐弹性线方式 */
      align-content:center;
      justify-content: center;
    }
    .container > div{
      background-color: #f1f1f1;
      font-size: 20px;
      padding: 20px;
      margin: 10px;
      width: 50px;
      text-align: center;
    }

  </style>
</head>
<body>
  <div class="container">
    <div style="flex-grow: 1;">1</div>
    <div style="flex-grow: 1;">2</div>
    <div style="flex-grow: 8;">3</div>
  </div>
  
</body>
</html>

在这里插入图片描述

22.3.3 flex-shrink 属性:规定某个 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>
    .container{
      background-color: DodgerBlue;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      height: 600px;
      /* 对齐弹性线方式 */
      align-content:center;
      justify-content: center;
    }
    .container > div{
      background-color: #f1f1f1;
      font-size: 20px;
      padding: 20px;
      margin: 10px;
      width: 50px;
      text-align: center;
    }

  </style>
</head>
<body>
  <div class="container">
    <div >1</div>
    <div >2</div>
    <div style="flex-shrink: 0;">3</div>
    <div >4</div>
    <div >5</div>
    <div >6</div>
    <div >7</div>
    <div >8</div>
    <div >9</div>
  </div>
  
</body>
</html>

在这里插入图片描述

22.3.4 flex-basis 属性:规定 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>
    .container{
      background-color: DodgerBlue;
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      height: 600px;
      /* 对齐弹性线方式 */
      align-content:center;
      justify-content: center;
    }
    .container > div{
      background-color: #f1f1f1;
      font-size: 20px;
      padding: 20px;
      margin: 10px;
      width: 50px;
      text-align: center;
    }

  </style>
</head>
<body>
  <div class="container">
    <div >1</div>
    <div >2</div>
    <div style="flex-basis: 200px;">3</div>
    <div >4</div>
    <div >5</div>
  
  </div>
  
</body>
</html>

在这里插入图片描述
属性

22.3.5 flex 属性:flex-grow、flex-shrink 和 flex-basis 属性的简写属性

<div class="flex-container">
  <div>1</div>
  <div>2</div>
  <div style="flex: 0 0 200px">3</div>
  <div>4</div>
</div>

22.3.6 align-self 属性:规定弹性容器内所选项目的对齐方式。

<!DOCTYPE html>
<html>
<head>
<style>
.flex-container {
  display: flex;
  height: 200px;
  background-color: #f1f1f1;
}

.flex-container > div {
  background-color: DodgerBlue;
  color: white;
  width: 100px;
  margin: 10px;
  text-align: center;
  line-height: 75px;
  font-size: 30px;
}
</style>
</head>
<body>
<h1>align-self 属性</h1>

<p>"align-self: flex-start;" 在容器顶部对齐所选的弹性项目。</p>
<p>"align-self: flex-end;" 在容器底部对齐所选的弹性项目。</p>

<div class="flex-container">
  <div>1</div>
  <div style="align-self: flex-start">2</div>
  <div style="align-self: flex-end">3</div>
  <div>4</div>
</div>

<p>align-self 会覆盖容器的 align-items 属性。</p>

</body>
</html>

在这里插入图片描述

22.4 示例一:响应式图片网格

请调整浏览器窗口,来查看响应效果。

<!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>
    * {
      box-sizing: border-box;
    }

    .container {
      /* 定义父元素为容器将可伸缩 */
      display: flex;
      height: 600px;
      /* 对齐弹性线方式 */
      align-content: center;
      justify-content: center;
    }

    img {
      width: 100%;
    }

    .row {
      display: flex;
      flex-wrap: wrap;
    }

    .column {
      flex: 25%;
      max-width: 25%;
      padding: 0 5px;
    }

    /* 响应式布局 - 创建两列而不是四列布局 */
    @media (max-width: 800px) {
      .column {
        flex: 50%;
        max-width: 50%;
      }
    }

    /* 响应式布局 - 创建上下堆叠而不是并排的两列布局 */
    @media (max-width: 600px) {
      .column {
        flex: 100%;
        max-width: 100%;
      }
    }
  </style>
</head>

<body>
  <div class="row">
    <div class="column">
      <img src="imgs/flower.png" alt="flower">
      <img src="imgs/flower02.png" alt="flower">
      <img src="imgs/flower03.png" alt="flower">
      <img src="imgs/flower04.png" alt="flower">
      <img src="imgs/flower.png" alt="flower">
      <img src="imgs/flower02.png" alt="flower">
      <img src="imgs/flower03.png" alt="flower">
      <img src="imgs/flower04.png" alt="flower">
    </div>

    <div class="column">
      <img src="imgs/flower04.png" alt="flower">
      <img src="imgs/flower03.png" alt="flower">
      <img src="imgs/flower02.png" alt="flower">
      <img src="imgs/flower.png" alt="flower">
      <img src="imgs/flower04.png" alt="flower">
      <img src="imgs/flower03.png" alt="flower">
      <img src="imgs/flower02.png" alt="flower">
      <img src="imgs/flower.png" alt="flower">
    </div>

    <div class="column">
      <img src="imgs/flower.png" alt="flower">
      <img src="imgs/flower02.png" alt="flower">
      <img src="imgs/flower03.png" alt="flower">
      <img src="imgs/flower04.png" alt="flower">
      <img src="imgs/flower.png" alt="flower">
      <img src="imgs/flower02.png" alt="flower">
      <img src="imgs/flower03.png" alt="flower">
      <img src="imgs/flower04.png" alt="flower">
    </div>

    <div class="column">
      <img src="imgs/flower04.png" alt="flower">
      <img src="imgs/flower03.png" alt="flower">
      <img src="imgs/flower02.png" alt="flower">
      <img src="imgs/flower.png" alt="flower">
      <img src="imgs/flower04.png" alt="flower">
      <img src="imgs/flower03.png" alt="flower">
      <img src="imgs/flower02.png" alt="flower">
      <img src="imgs/flower.png" alt="flower">
    </div>
  </div>

</body>

</html>

运行效果:
在这里插入图片描述

22.5 示例二:使用 Flexbox 的响应式网站

<!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>
    :root {
      --fontsize-25px: 25px;
      --fonsize-20px: 20px;
    }

    * {
      margin: 0;
      padding: 0;
      font-family: Arial;
      box-sizing: border-box;
    }


    .intro {
      background-color: yellow;
      padding: 20px;
      text-align: center;
    }

    .header {
      background-color: #1abc9c;
      padding: 50px;
      color: white;
      text-align: center;
    }

    .nav {
      display: flex;
      background-color: #333;
    }

    .nav a {
      text-decoration: none;
      color: white;
      padding: 15px;
      font-size: 20px;
    }

    .row {
      display: flex;
      flex-wrap: wrap;
    }

    .aboutus {
      flex: 30%;
      background-color: #f1f1f1;
      padding: 20px;
    }

    .list {
      flex: 70%;
      background-color: white;
      padding: 20px;
    }

    .footer{
      width: 100%;
      padding: 20px;
      background-color: #ededed;
      text-align: center;
      margin-top: 10px;
    }

    /* 响应式布局 - 当屏幕小于 700 像素宽时,让两列堆叠而不是并排 */
    @media screen and (max-width: 700px) {

      .row,
      .nav {
        flex-direction: column;
      }
    }
  </style>
</head>

<body>


  <!-- 注释 -->
  <div class="intro">
    <h4>请调整浏览器窗口来查看响应效果</h4>
  </div>

  <!-- header -->
  <div class="header">
    <h1>我的网站</h1>
    <br>
    <p>拥有 <b>弹性</b> 布局</p>
  </div>

  <!-- 导航栏 -->
  <div class="nav">
    <a href="#">Link</a>
    <a href="#">Link</a>
    <a href="#">Link</a>
    <a href="#">Link</a>
  </div>

  <!-- 弹性内容 -->
  <div class="row">
    <div class="aboutus">
      <!-- 关于我 -->
      <h1 style="font-size: var(--fontsize-25px);">关于我</h1>
      <p style="font-size: var(--fonsize-20px); margin-top: 10px;">我的照片</p>
      <div style="background-color: #aaa; padding: 10px; margin-top: 10px; height: 200px;">
        图像
      </div>
      <p style="margin-top:10px;">Some text about me in culpa qui officia deserunt mollit anim..</p>
      <h1 style="font-size: var(--fontsize-25px); margin-top: 10px;">More Text</h1>
      <p style="margin-top: 10px;">Lorem ipsum dolor sit ame.</p>
      <div style="background-color: #aaa; padding: 10px; margin-top: 10px; height: 50px;">
        图像
      </div>
      <div style="background-color: #aaa; padding: 10px; margin-top: 10px; height: 50px;">
        图像
      </div>
      <div style="background-color: #aaa; padding: 10px; margin-top: 10px; height: 50px;">
        图像
      </div>
    </div>
    <!-- 右侧列表 -->
    <div class="list">

      <div class="item">
        <h1>标题</h1>
        <p>标题描述,2021 年 1 月 1 日</p>
        <div style="background-color: #aaa; padding: 10px; margin-top: 10px; height: 200px;">
          图像
        </div>
        <p style="margin-top: 10px;">一些文本..</p>
        <p style="margin-top: 10px;">Sunt in culpa qui officia deserunt mollit anim id est laborum consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco.</p>
      </div>
      <br>

      <div class="item">
        <h1>标题</h1>
        <p>标题描述,2021 年 1 月 1 日</p>
        <div style="background-color: #aaa; padding: 10px; margin-top: 10px; height: 200px;">
          图像
        </div>
        <p style="margin-top: 10px;">一些文本..</p>
        <p style="margin-top: 10px;">Sunt in culpa qui officia deserunt mollit anim id est laborum consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco.</p>
      </div>


    </div>
  </div>
  <div class="footer">Footer</div>
</body>

</html>

运行效果:
在这里插入图片描述

在这里插入图片描述

  • 25
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值