CSS盒子模型

盒子

  • margin 外边距
    横向相加,纵向重叠
    父子盒子合并(用 overflow:hidden 解决)
  • border 边框
none /*无边框*/
dotted /*点线框*/
dashed /*虚线框*/
solid /*实线框*/
double /*两个边界*/
groove /*定义3D沟槽边界*/
ridge /*定义3D脊边界*/
inset /*定义3D嵌入边框*/
outset /*定义3D突出边框*/
  • padding 内边框
  • content 内容区
  • widthheight 设定的部分

参数个数:
1 上右下左
2 上下 左右
3 上 左右 下
4 上 右 下 左

overflow 内容超出范围时

visible 可见
auto 自动显示滚动条
scroll 总是显示滚动条
hidden 隐藏

边框效果

border-radius 圆角边框
参数个数:
1 四角
2 左上&右下 左下&右上
3 左上 右上&左下 右下
4 左上 右上 右下 左下

box-shadow 阴影
水平偏移 垂直偏移 模糊距离 阴影尺寸 颜色 inset(内阴影)

outline 轮廓线 不占用空间 在border外
宽度 样式 颜色

盒子摆放模式

标准流模式

块级盒子

div从上自下排列,宽度自动伸展占据整个浏览器,自动换行

行级盒子

span从上自下排列,从左到右,空间是内容所占据的空间,自动换行

非标准流模式

浮动与定位

浮动

使元素脱离常规文档流而表现为向右或向左浮动
float: /*right left none*/;

  • 浮动盒子宽度不会自动伸展,宽度以内容为准
  • 标准流中其他盒子将视浮动盒子不存在而占据浮动盒子的位置,但内容会受浮动盒子宽度的影响
  • 可以设置clear属性使标准流中其他盒子不受之前盒子的浮动影响
  • 父级盒子中的所有盒子都采用浮动形式,若父级盒子未指定高度则父级盒子的高度为0

在浮动元素后添加 clear: both; 元素清除浮动的影响

使用after伪类清除浮动

div:after{
  content:'';
  display:block;
  clear:both;
}

怪异盒子模型

box-sizing: /*
content-box 标准盒子模型(width=content)
border-box 怪异盒子模型(width=content+padding+border)
*/

定位

position: /*
static 默认
absolute 绝对定位
relative 相对定位
fixed 相对视图定位
 */

/* 偏移方向: 偏移距离 */
top: 10px;
left: 10%;
right
bottom

/*Z轴高度 数值大的元素放在上层 默认0*/
z-index

相对定位

div{
  position: relative;
}
  • 相对于原始位置移动位置
  • 依然占据原来的空间

绝对定位

div{
  position: absolute;
}
  • 相对最近的已定位祖先元素,若没有则为body
  • 不再占据原本空间

用绝对定位和负边距实现完全居中

无需考虑父容器大小

<style media="screen">
  #d1{
    width: 250px;
    height: 250px;
    background-color: red;
    position: relative;
  }
  #d2{
    width: 100px;
    height: 100px;
    position: absolute;
    top: 50%;
    left: 50%;
    margin: -50px;
    background-color: yellow;
  }
</style>
<div id="d1">
  <divid="d2"></div>
</div>

固定定位

div{
  position: fixed;
  right: 10px;
  bottom: 10px;
}
  • 相对窗口原点偏移定位
  • 不占据空间
  • 不随滚动条滚动改变位置
### 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盒子模型的一些基本介绍及常见应用场景下的实现方法论探讨。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值