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

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>
相关推荐
前端Hardy2 小时前
HTML&CSS:比赛记分卡
前端·javascript·css·3d·html
Justinc.3 小时前
CSS3_媒体查询(十一)
css·css3·媒体
QTX187304 小时前
原生JS和CSS,HTML实现开屏弹窗
javascript·css·html
rhythmcc5 小时前
【GoogleChrome】在开发者工具中修改js、css并生效
开发语言·javascript·css
珹洺6 小时前
从 HTML 到 CSS:开启网页样式之旅(二)—— 深入探索 CSS 选择器的奥秘
前端·javascript·css·网络·html
licy__7 小时前
HTML 元素类型介绍
前端·css·html
谢尔登7 小时前
【Next】路由处理
服务器·javascript·css
爪哇学长7 小时前
打造极致网页体验:HTML与CSS高级实战秘籍
前端·css·html
blzlh8 小时前
手把手教你做网易云H5页面,进大厂后干的第一件事
前端·javascript·css
贩卖纯净水.9 小时前
网站部署及CSS剩余模块
前端·css