【前端】CSS(3) —— CSS的盒模型与弹性布局

发布于:2022-10-31 ⋅ 阅读:(425) ⋅ 点赞:(0)
JavaEE传送门

JavaEE

【前端】CSS(1) —— CSS的基本语法和一些简单的选择器

【前端】CSS(2) —— CSS的基本属性



元素的显示模式

  • 独占一行的: 块级元素 (div, h1-h6, 怕, table, tr …)
  • 不独占一行的: 行内元素 (span, a, u, b, stong …)

可以使用 display 属性针对行内/ 块级元素相互转换

(绝大多数都是把行内元素转换为块级元素, 几乎不会把块级元素转成行内元素)

display: inline;
display: block;

display 还有个用途, 让元素隐藏

display: none;


CSS 中的盒模型

页面上的 html 元素都是一个一个的矩形, 每个矩形就可以视为是一个 "盒子"吗盒子里面就可以装东西 (文字, 链接, 图片, 表格…其他任意元素)

每个盒子, 除了内容之外, 还有一些其他的部分.

  • 内容: content (最中间的)
  • 内边距: padding
  • 边框: border
  • 外边框: margin

# 注意 # html 中的每个元素都是按照上述这样的规则来进行展开的.


在 CSS 中就可以通过一些属性来设置这里和盒子模型相关的

border

通过 border 给元素设置边框

border: 边框宽度 边框颜色 线条样式;

我们需要加上一个特殊的属性. 设置的这个属性会保证尺寸不变, 如果再有边框就不会把整个占地面积给撑大.

box-sizing: border-box;

# 注意事项 #

  • 支持简写, 没有顺序要求

  • 可以改四个方向的任意边框.

    border-top/bottom/left/right:
    

padding

padding 设置内边距, 边框和内容之间的距离.

padding: 20px;

# 当我们直接写 padding 的时候, 默认四个方向都有, 是复合写法.

# 可以给四个方向都加上边距

  • padding-top 上方
  • padding-bottom 下方
  • padding-left 左侧
  • padding-right 右侧

# 其他写法

padding: 5px 10px; 表示上下内边距 5px, 左右内边距为 10px
padding: 5px 10px 20px; 表示上边距 5px, 左右内边距为 10px, 下内边距为 20px
padding: 5px 10px 20px 30px; 表示 上5px, 右10px, 下20px, 左30px (顺时针)

margin

控制的是元素之间的距离, 使用方法和 padding 非常相似.

margin:
margin-top:
margin-bottom:
margin-left:
margin-right:

CSS 的弹性布局

前面介绍的 CSS 属性, 都是针对元素自己的. 弹性布局, 则是用来描述元素之间的关系的(相对位置关系)

<body>
    <style>
        div {
            width: 100%;
            height: 100px;
            background-color: aquamarine;
        }

        span {
            width: 150px;
            font-size: 50px;
            background-color:rgb(92, 73, 233);
        }
    </style>
    <div>
        <span>hello</span>
        <span>hello</span>
        <span>hello</span>
    </div>
</body>

此时我们发现 “width: 150px” 未生效. 对于行内元素, 宽度/ 高度以及外边距, 都是不生效的.

要想生效, 需要转成块级元素.

span {
    width: 150px;
    font-size: 50px;
    background-color:rgb(92, 73, 233);
    display: block;
}

当把 span 设成块级元素之后, 虽然宽度生效了, 但是这三个元素就独占一行了.

如果我们想让这几个元素能够水平方向排列开 (不独占一行), 这就是弹性布局要解决的问题.

display: flex;

把当前元素, 设置成 “弹性布局” 的容器. 里面的子元素就会按照弹性布局的规则来排列了.(只是针对子元素生效, 不影响孙子元素)

div {
    width: 100%;
    height: 100px;
    background-color: aquamarine;
    display: flex;
}

此时, div 就是弹性布局的容器, 里面的子元素 (三个 span) 就按照弹性布局的规则来进行排列了, 这几个元素是水平方向排列开了, 高度也和父元素一样高了(也可以手动的指定高度), 水平方向默认是靠左对齐.

由于块级元素, 本身就是垂直方向排列的

实际进行网页布局的时候, 就是一行一行的往下布局, 每一行里, 如果有多个元素并列, 使用弹性布局进行处理.

在弹性布局的父容器这里, 可以使用 justify-content 属性来设置水平方向的排列方式

justify-content: center | flex-end | flex-start | space-around | space-between;

垂直方向, 使用 align-items 进行排列

align-items: flex-start| flex-end| center;

align-items 只能针对单行元素来实现. 如果有多行元素, 就需要使用 item-contents


🌷(( ◞•̀д•́)◞⚔◟(•̀д•́◟ ))🌷
以上就是今天要讲的内容了,希望对大家有所帮助,如果有问题欢迎评论指出,会积极改正!!

在这里插入图片描述
加粗样式

这里是Gujiu吖!!感谢你看到这里🌬
祝今天的你也
开心满怀,笑容常在。

网站公告

今日签到

点亮在社区的每一天
去签到