了解盒子模型的弹性盒子布局

CSS 盒子模型(Box Model)

所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。

CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距margin,边框border,填充padding,和实际内容(文本、或者图片、或者其它标签)。

盒子模型允许我们在其它元素和周围元素边框之间的空间放置元素。

元素的宽度和高度

重点: 当你指定一个 CSS 元素的宽度和高度属性时,你只是设置内容区域的宽度和高度。要知道,完整元素大小还包括外边距、边框、内边距。

下面的例子中的元素的总宽度为300px:

js 复制代码
<style>
   div {
        background-color: pink;
        width: 300px;
        border: 25px solid skyblue; /* 设置上右下左边框:每个占25px */
        padding: 25px; /* 设置上右下左内边距:每个占25px */
        margin: 25px; /* 设置上右下左外边距:每个占25px */
    }
</style>

我们实际定义为300px,那么此时我们再来计算一下盒子的总宽度:

300px+50px(左右间距)+50px(左右边框)+50px(左右填充) = 450px

flex(弹性盒子布局)

什么是弹性盒子?

display:flex 是一种布局方式。它既可以应用于容器中,也可以应用于行内元素。

容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。 采用Flex布局的元素,称为Flex容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,称为Flex项目(flex item)。

注:设为Flex布局以后,子元素的floatclearvertical-align属性将失效。

容器的几个属性

以下这几个属性都是用在容器上面

  • flex-direction
  • flex-wrap
  • flex-flow
  • justify-content
  • align-items
  • align-content

flex-direction(决定主轴的方向(即项目的排列方向))
他的属性值有:

  • column-reverse:主轴为垂直方向,起点在下沿。
  • column:主轴为垂直方向,起点在上沿。
  • row(默认值):主轴为水平方向,起点在左端。
  • row-reverse:主轴为水平方向,起点在右端。

justify-content(定义项目在主轴上的对齐方式)
他的属性值有:

  • flex-start(默认值):左对齐
  • flex-end:右对齐
  • center:居中
  • space-between:两端对齐,项目之间的间隔都相等。
  • space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍

align-items(定义项目在竖直方向上对齐方式)
它的属性值有:

  • flex-start:交叉轴的起点对齐。
  • flex-end:交叉轴的终点对齐。
  • center:交叉轴的中点对齐。
  • baseline: 项目的第一行文字的基线对齐。
  • stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度

align-content(定义多根轴线的对齐方式,如果项目只有一根轴线,该属性不起作用)
它的属性值有:

  • flex-start:与交叉轴的起点对齐。
  • flex-end:与交叉轴的终点对齐。
  • center:与交叉轴的中点对齐。
  • space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
  • space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
  • stretch(默认值):轴线占满整个交叉轴。
js 复制代码
<!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>
        *{
            margin: 0px;
            padding: 0px;
        }
        .u1{
            width: 200px;
            height: 200px;
            border-radius: 10px;
            background-color: black;
            display: flex;
            /* justify-content: space-between; */
            justify-content: space-between;
            /* justify-content: end; */
            /* justify-content: center; */
            flex-direction: column;
            /* align-items: center; */
            /* align-items: start; */
            /* align-items: end; */
            /* transform: skew(90deg,-90deg); */
        }
        li{
            list-style: none;
            width: 50px;
            height: 50px;
            border-radius: 50%;
            background-color: white;
        }
        .d1{
            width: 200px;
            height: 200px;
            border-radius: 10px;
            background-color: black;
            display: flex;
            /* justify-content: space-between; */
            /* justify-content: space-between; */
            /* justify-content: center; */
            /* justify-content: end; */
            /* flex-direction: column; */
            /* align-items: center; */
            /* align-items: start; */
            /* align-items: end; */
            /* transform: skew(90deg,-90deg); */
        }
        .d2{
            width: 200px;
            height: 200px;
            border-radius: 10px;
            background-color: black;
            display: flex;
            /* justify-content: space-between; */
            /* justify-content: space-between; */
            justify-content: center;
            /* justify-content: end; */
            flex-direction: column;
            align-items: center;
            /* align-items: start; */
            /* align-items: end; */
            /* transform: skew(90deg,-90deg); */
        }
        .d3{
            width: 200px;
            height: 200px;
            border-radius: 10px;
            background-color: black;
            display: flex;
            /* justify-content: space-between; */
            /* justify-content: space-between; */
            /* justify-content: center; */
            justify-content: end;
            flex-direction: column;
            /* align-items: center; */
            /* align-items: start; */
            align-items: end;
            /* transform: skew(90deg,-90deg); */ 
        }
    </style>
</head>
<body>
    <ul class="u1">
        <div class="d1">
<li></li>
        </div>
        <div class="d2">
<li></li>
        </div>
        <div class="d3">
            <li></li>
            </div>
    </ul>
</body>
</html>
相关推荐
IT、木易12 小时前
大白话css第九章主要聚焦于前沿技术整合、生态贡献与技术传承
前端·css
qianmoQ13 小时前
第七章:项目实战 - 第四节 - Tailwind CSS 移动端适配实践
前端·css
前端付杰15 小时前
Sass 模块化革命:深入解析 @use 语法,打造高效 CSS 架构
css·rust·less·sass·scss
阿金要当大魔王~~1 天前
table上下移动
javascript·css·css3
qq_456001651 天前
6、什么是重排重绘?
css·html·css3
没资格抱怨1 天前
HTML + CSS 题目
前端·css·html
@HNUSTer2 天前
基于 HTML、CSS 和 JavaScript 的五子棋游戏
前端·javascript·css·游戏·html
程序员的人生K2 天前
CSS2.1基础学习
css
星空寻流年2 天前
css学习第四章之常用属性(第一节)
css
~废弃回忆 �༄2 天前
CSS中table常用的独有属性
前端·css·html中列表常用的属性