CSS盒子模型

   盒子模型是CSS 控制页面元素的一个重要概念。在盒子模型中,所有页面中的元素都被看作一个个盒子,他们占据一定的页面空间,在其中放着特定内容。可通过调整盒子的边距和间距等参数来调节盒子的位置及大小。

1.盒子模型的组成
盒子模型由content、border、padding、margin共四个部分组成。
CSS盒子模型
宽=margin-left+margin-right+border-left+border-right+padding-left+padding-right+content width=margin+border+padding+width
高=margin-top+margin-bottom+border-top+border-bottom+padding-top+padding-bottom+content width=margin+border+padding+height

需要注意的是,并不是用div定义的网页元素才是盒子,所有网页元素都可以看作盒子。网页上的表格、图片、文字等,从盒子模型的角度就是大大小小的盒子排列或嵌套在一起的。

1.2盒子border属性
(1)border-color:边框的颜色。
(2)border-width:边框的粗细程度。
(3)border-style:边框的类型,可设置为:none、hidden、dotted、dashed、solid、double等值。

1.3盒子padding属性
盒子padding是盒子的内边距,它一边是盒子的内容一边是盒子的边界,即边框和内容之间的区域就是padding。padding的用法参考上篇文章《html基础》。

1.4盒子margin属性
margin是盒子的外边距,他碰不到盒子的边界,指的是页面上元素和元素之间的距离。margin的用法参考上篇文章《html基础》。

2.盒子的浮动与定位
实际网页上分部着大量的盒子,他们之间有着父子的相互关系。CSS首先确定了一种标准的排版方式,可以保证设置的简单化,各种网页元素都按照这种标准方式进行布局,这就是“标准流”方式。但仅有此方法还不够灵活,所以CSS规范还给出了其他布局方式,如“浮动”属性和“定位”属性等。

2.1标准流
指在不使用其他与排列和定位相关的特殊CSS规则时各种页面元素默认的排列规则。
页面元素可以分为以下两类:
(1)块级元素(block level):总是以一个块的形式表现出来,并和同级的兄弟依次垂直排列,左右撑满。例:div/p/ul/li/ol/dl/dd/dt;
(2)行内元素相邻元素之间横向排列,到最右端自动折行。例:span/strong/en/i/b/a。

2.2盒子的浮动float
如果将float属性设置为left或者right,那么元素就会向其父级元素的左侧或右侧靠紧。当该属性不等于none引起对象浮动时,对象将被视作块对象(block-level),即display属性等于block。
(1)none:对象不浮动;
(2)left:对象浮在父级元素的左边;
(3)right:对象浮在父级元素的右边。

2.3盒子的定位原则
(1)行内元素之间的水平定位:两个行内元素之间的水平间距由左边元素的右外边距加右边元素的左外边距共同决定。
(2)块级元素之间的垂直定位:两个块级元素之间的距离就不是第一个元素的margin-bottom加上第二个元素的margin-top了,而是两者之中较大的。这个现象称为margin的“塌陷”现象,即较小的margin塌陷到较大的margin中。

2.4盒子的定位
position属性定位方式如下:
(1)static:静态定位;
(2)relative:相对定位,使用相对定位的盒子的位置常以标准流的排版方式为基础,然后使盒子相对与它在原本的标准位置偏移指定的距离,这种定位方式导致元素发生相对位移,需要指定一定的偏移量,水平方向通过left或right属性指定,垂直方向通过top和bottom属性指定,;
(3)absolute:绝对定位,盒子的位置以包含框为基准进行偏移;
(4)fixed:固定位置,即当拖动浏览器窗口的滚动条时,依然保持对象位置不变,当指定其偏移量时,水平和垂直方向的偏移与相对定位相同。

### 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、付费专栏及课程。

余额充值