css盒子模型

一、盒模型简介

1.我们看到的网页其实是布局大大小小的盒子组合而来
2.盒子由以下几部分组成:
(1)内容区(content)
(2)内边距(padding)
(3)边框(border)
(4)外边距(margin)
在这里插入图片描述

二、内容区(content)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    .box{
      width: 200px;//此处设置的宽度仅为content区的宽度为200px,高度同理
      height: 200px;
    }

  </style>
</head>
<body>
<div class="box">盒子模型</div>

</body>
</html>

三、边框(border)

1.边框会撑开盒子,影响盒子大小

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    .box{//此时盒子的大小为240px*240px
      width: 200px;
      height: 200px;
      border-width: 20px;
      border-color: red;
      border-style: solid;
      

    }

  </style>
</head>
<body>
<div class="box">盒子模型</div>

</body>
</html>

2.边框属性(不同的浏览器会有不同的默认的boder-width,boder-height)
在这里插入图片描述

在这里插入图片描述
3.表格的细线边框
在这里插入图片描述

四、内边距(padding)

1.盒子的内边距会撑开盒子,影响盒子大小

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    .box{
      width: 200px;
      height: 200px;
      border: 10px red solid;
      padding: 20px;
      background-color: #00a4ff;
    }
    .inner{
      width: 100%;
      height: 100%;
      background-color: #00b38a;
    }

  </style>
</head>
<body>
<div class="box">//此时盒子大小为260px*260px
  <div class="inner">内容区</div>
</div>

</body>
</html>

在这里插入图片描述

五、外边距

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    .box{
      width: 200px;
      height: 200px;
      border: 10px red solid;
      background-color: #00a4ff;
    }
    .inner{
      width: 100%;
      height: 100%;
      background-color: #00b38a;
      margin-top: 20px;

    }

  </style>
</head>
<body>
<div class="box">
  <div class="inner">内容区</div>
</div>

</body>
</html>

在这里插入图片描述

1.外边距不会影响盒子可见框的大小,但会影响盒子实际占有空间的大小
2.注意:元素在页面中是按照自左向右的顺序排列的,所以默认情况下,我们设置左和上外边距会移动元素自身,而设置右和下外边距则会移动其他元素
3.外边距可以使块级元素居中但必须满足以下两个条件:
 (1)盒子的宽度确定
 (2)盒子的左右外边距设为:auto
4.外边距的折叠问题:条件:垂直方向且相邻的盒子
 (1)兄弟元素折叠问题

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    .box{
      width: 200px;
      height: 200px;
      border: 10px red solid;
      background-color: #00a4ff;
    }
    .first{
      width: 50px;
      height: 50px;
      background-color: #00b38a;
      margin-bottom: 40px;//两元素外边距不叠加,取二者较大值

    }
    .second {
      width: 50px;
      height: 50px;
      background-color: #1c036c;
      margin-top: 40px;
    }

  </style>
</head>
<body>
<div class="box">
  <div class="first">盒子一</div>
  <div class="second">盒子二</div>
</div>

</body>
</html>

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

(2)父子元素:父子元素间相邻外边距,子元素的上外边距会传递给父元素
解决折叠问题前:
在这里插入图片描述

解决折叠问题后:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    .box{
      width: 200px;
      height: 200px;
      border: 10px red solid;//解决折叠问题方案一:给父元素加边框
      background-color: #00a4ff;
    }
    .son{
      width: 50px;
      height: 50px;
      background-color: #00b38a;
      margin-top: 40px;

    }

  </style>
</head>
<body>
<div class="box">
  <div class="son">盒子</div>
</div>

</body>
</html>

在这里插入图片描述
解决问题方案:
 (1)给子元素添加margin-top
 (2)给父元素加边框(这两种方法的本质都是把父元素和子元素隔开,但需修改父元素盒子大小)

六、行内元素的盒模型

1.行内元素不支持设置高度和宽度
2.可为行内元素设置padding、margin、border,但这些样式只会在水平方向影响水平方向的盒子,不会影响垂直方向盒子的布局

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    span{
      width: 200px;
      height: 200px;
      border: 10px red solid;
      background-color: #00a4ff;
      /*display: inline-block;*/
    }
    div{
      width: 50px;
      height: 50px;
      background-color: #00b38a;

    }

  </style>
</head>
<body>
<span>行内元素</span>
<div>块级元素</div>

</body>
</html>

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

3.针对行内元素上述的特征,我们可以使用display将行内元素转换为块级元素,进行样式的设置

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    span{
      width: 200px;
      height: 200px;
      border: 10px red solid;
      background-color: #00a4ff;
      display: inline-block;//display:inline(转换为行内元素)/block(转换为块级元素)/inline-block(行内块元素)
    }
    div{
      width: 50px;
      height: 50px;
      background-color: #00b38a;

    }

  </style>
</head>
<body>
<span>行内元素</span>
<div>块级元素</div>

</body>
</html>

运行结果:
在这里插入图片描述
4.行内块元素:行内块元素具有块级元素的所有特性,同时行内块元素并不独占一行
5.补充:display还可设置元素的隐藏效果

display
table
nonedisplay属性值设为none时,隐藏元素且不占有位置

6.补充visibility属性

visibility
visible元素正常显示在页面
hidden隐藏元素,且占据位置

七、盒子大小

1.box_sizing属性

属性值
content-box设置height、width属性来设置盒子的内容区大小
border-box设置height、width属性来设置盒子的可见框大小

八、轮廓、阴影和圆角

1.outline(轮廓):用法与border一只,与border不同,设置元素的轮廓不会影响其他盒子的布局
2.box-shadow(阴影):

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>

    div{
      width: 100px;
      height: 100px;
      background-color: #00b38a;
      box-shadow: 10px 10px rgba(255,145,223,.3);//水平偏移 数值大小 阴影颜色及透明度
    }

  </style>
</head>
<body>
<div>块级元素</div>

</body>
</html>

运行结果:
在这里插入图片描述
3.border-radius(圆角)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>

    div{
      width: 100px;
      height: 100px;
      background-color: #00b38a;
      border-radius: 10px;//设置半径大小
    }

  </style>
</head>
<body>
<div>块级元素</div>

</body>
</html>

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

### CSS 盒子模型详解 CSS盒子模型是网页设计和布局中的核心概念之一。它描述了HTML文档结构化的方式以及如何通过样式控制这些元素的空间分配。 #### 1. 盒子模型的组成部分 每个HTML元素都可以看作是一个矩形盒子,该盒子由以下几个部分组成[^1]: - **内容 (Content)**: 这是盒子的主要区域,用于放置文本或其他媒体内容。 - **内边距 (Padding)**: 它位于内容边缘与边框之间的空白区域,用来增加内容周围的可读空间。 - **边框 (Border)**: 边框围绕着内边距和内容,可以设置不同的宽度、颜色和风格来定义边界线。 - **外边距 (Margin)**: 外边距是在边框之外的一片透明区域,用于分隔相邻的盒子并防止它们相互接触。 #### 2. 盒子模型属性 以下是几个重要的盒子模型相关属性及其功能说明: ##### 2.1 `width` 和 `height` 属性 这两个属性分别设定盒子的内容区宽度和高度。需要注意的是,默认情况下,指定的尺寸仅适用于内容区域而不包括 padding, border 或 margin 的值[^2]。 ##### 2.2 `border` 边框属性 可以通过此属性自定义边界的外观,比如粗细、线条样式(实线、虚线等)以及颜色[^3]。 ##### 2.3 `padding` 内边距 用于调整内部填充量,即内容与其周围边框间的距离。它可以单独应用于上、右、下、左各个方向或者统一应用到所有侧面[^1]。 ##### 2.4 `margin` 外边距 负责管理与其他元素之间外部间距的部分。同样支持多向配置,并且当两个垂直 margins 邻近时会发生折叠现象——取两者较大者作为最终间隔[^2]。 ##### 2.5 盒子模型占位计算 总的实际占用面积等于 content area 加上其四周的所有附加层厚度之和。例如给定一个具有固定 width/height 值为100px 的 div 元素加上额外参数如下所示,则实际渲染出来的大小将是 `(100 + 5 + 5 + 20 + 20)` px × `(100 + 5 + 5 + 20 + 20)` px: ```css div { width: 100px; height: 100px; border: 5px solid black; /* 上下左右均为5像素 */ padding: 20px; /* 各侧均设为20像素 */ } ``` #### 3. box-sizing 属性 为了简化复杂布局的设计过程,引入了一个名为 `box-sizing` 的新特性。默认行为遵循传统标准模式 (`content-box`) ,其中声明的 dimensions 不含 paddings/borders;而另一种选项叫做 alternate model(`border-box`) 可让开发者更直观地操作整体尺寸因为此时所指代的就是整个可视范围内的确切数值. ```css /* 使用 border-box 来改变盒模型的行为方式*/ * { box-sizing: border-box; } ``` 以上便是关于CSS盒子模型的一些基本介绍及常见应用场景下的实现方法论探讨。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值