蚂蚁动态卡片中的盒模型基于 CSS 盒模型,将所有元素表示为一个个矩形的盒子(box),其他样式决定这些盒子的大小、位置以及属性(例如颜色、背景、边框……)。
盒模型描述了一个元素所占的控件,每个盒子有四个边界:外边距边界(margin edge)、边框边界(border edge)、内边距边界(padding edge)、内容边界(content edge)。
外边距
外边距指元素和元素之间的空白距离,由 margin 属性控制,简写与非简写方式都支持。
属性 | 描述 | 值类型 | 默认值 | 可选值 | 写法 | 备注 |
margin | 外边框距离 | 长度单位 | 0 | auto; 单值长度单位或百分比 | margin: 10px 10px 10px 10px; | 四个属性值依次对应上、右、下、左边框的距离 |
margin: 10px 10px 10px; | 三个属性值依次对应上、左右、下边框的距离 | |||||
margin: 10px 10px; | 依次对应上下、左右边框的距离 | |||||
margin: 10px; | 四边外边框距离相同 | |||||
margin-left | 长度单位 | 0 | auto; 单值长度单位或百分比 | margin-left: 10px; | - | |
margin-right | 长度单位 | 0 | auto; 单值长度单位或百分比 | margin-right: 10px; | - | |
margin-top | 长度单位 | 0 | auto; 单值长度单位或百分比 | margin-top: 10px; | - | |
margin-bottom | 长度单位 | 0 | auto; 单值长度单位或百分比 | margin-bottom: 10px; | - |
内边距
内边距指内容和边框的距离,由 padding 属性控制,简写与非简写方式都支持。
属性 | 描述 | 值类型 | 默认值 | 可选值 | 写法 | 备注 |
padding | 内边距 | 长度单位 | 0 | auto; 单值长度单位或百分比 | padding: 10px 10px 10px 10px; | 四个属性值依次对应上、右、下、左边的内边距 |
padding: 10px 10px 10px; | 三个属性值依次对应上、左右、下边的内边距 | |||||
padding: 10px 10px; | 两个属性值依次对应上下、左右的内边距 | |||||
padding: 10px; | 四边的内边距相同 | |||||
padding-left | 长度单位 | 0 | auto; 单值长度单位或百分比 | padding-left: 10px; | - | |
padding-right | 长度单位 | 0 | auto; 单值长度单位或百分比 | padding-right: 10px; | - | |
padding-top | 长度单位 | 0 | auto; 单值长度单位或百分比 | padding-top: 10px; | - | |
padding-bottom | 长度单位 | 0 | auto; 单值长度单位或百分比 | padding-bottom: 10px; | - |
内容边距
内容边距指宽或高减去边框边界和内边距后的距离,即:内容边距=宽/高-边框边界-内边距。
宽高
卡片的 box-sizing 属性仅支持 border-box,意味着宽高设定的是边框区域的宽和高。
属性 | 描述 | 值类型 | 默认值 | 可选值 | 写法 |
width | 元素宽度 | 长度单位 | 0 | auto; 单值长度单位或百分比 | width: 100px; |
min-width | 最小宽度限定 | 长度单位 | - | - | min-width: 50px; |
max-width | 最大宽度限定 | 长度单位 | - | - | max-width: 200px; |
height | 元素高度 | 长度单位 | 0 | auto; 单值长度单位或百分比 | height: 100px; |
min-height | 最小高度限定 | 长度单位 | - | - | min-height: 50px; |
max-height | 最大高度限定 | 长度单位 | - | - | max-height: 200px; |
边框
指定边框的样式,包括宽度、颜色、样式、圆角。支持 border、border-left、border-top、border-bottom、border-right 的简写方式,也支持 border-style、border-width、border-color、border-radius 的简写方式。
属性 | 描述 | 值类型 | 默认值 | 可选值 | 写法 | 备注 |
border | 边框 | string | none | - | border: 1px solid #f32600; | 宽度、线样式、颜色,三个元素位置不限 |
border-left | 左边框 | string | none | - | border-left: 1px solid #f32600; | |
border-right | 右边框 | string | none | - | border-right: 1px solid #f32600; | |
border-top | 上边框 | string | none | - | border-top: 1px solid #f32600; | |
border-bottom | 下边框 | string | none | - | border-bottom: 1px solid #f32600; | |
border-style | 边框样式 | string | none | dotted solid dashed none | border-style: solid dotted dashed solid | 四个属性值依次对应上、右、下、左边框的样式 |
border-style: solid dotted solid | 三个属性值依次对应上、左右、下边框的样式 | |||||
border-style: solid dashed | 两个属性值依次对应上下、左右边框的样式 | |||||
border-style: solid | 四边边框样式相同 | |||||
border-left-style | string | none | border-left-style: solid | - | ||
border-top-style | string | none | border-top-style: solid | - | ||
border-right-style | string | none | border-right-style: solid | - | ||
border-bottom-style | string | none | border-bottom-style: solid | - | ||
border-width | 边框宽度 | 长度单位 | 3px | - | border-width: 1px 1px 1px 1px | 依次对应上、右、下、左边框的宽度 |
border-width: 1px 1px 1px | 依次对应上、左右、下边框的宽度 | |||||
border-width: 1px 1px | 依次对应上下、左右边框的宽度 | |||||
border-width: 1px | 四边的边框宽度 | |||||
border-left-width | 长度单位 | 3px | - | border-left-width: 1px | - | |
border-right-width | 长度单位 | 3px | - | border-right-width: 1px | - | |
border-top-width | 长度单位 | 3px | - | border-top-width: 1px | - | |
border-bottom-width | 长度单位 | 3px | - | border-bottom-width: 1px | - | |
border-color | 边框颜色 | 色彩单位 | 0x000000 | - | border-color: red #333 rgb(255, 255, 0) green | 依次对应上、右、下、左边框的颜色 |
border-color: red #333 rgb(255, 255, 0) | 依次对应上、左右、下边框的颜色 | |||||
border-color: red #333 | 依次对应上下、左右边框的颜色 | |||||
border-color: red | 四个边框的颜色 | |||||
border-left-color | 色彩单位 | 0x000000 | - | border-left-color: red; | - | |
border-right-color | 色彩单位 | 0x000000 | - | border-right-color: red; | - | |
border-top-color | 色彩单位 | 0x000000 | - | border-top-color: red; | - | |
border-bottom-color | 色彩单位 | 0x000000 | - | border-bottom-color: red; | - | |
border-radius | 边框圆角半径 | 长度单位 | 0 | - | border-radius: 10px 10px 10px 10px; | 详见表格下方的 border-radius 取值说明。 |
border-radius: 10px 10px 10px; | ||||||
border-radius: 10px 10px; | ||||||
border-radius: 10px; | ||||||
border-top-left-radius | 长度单位 | 0 | - | border-top-left-radius: 10px; | - | |
border-top-right-radius | 长度单位 | 0 | - | border-top-right-radius: 10px; | - | |
border-bottom-left-radius | 长度单位 | 0 | - | border-bottom-left-radius: 10px; | - | |
border-bottom-right-radius | 长度单位 | 0 | - | border-bottom-right-radius: 10px; | - |
border-radius 的取值说明如下:
单值:表示边框四角的圆角半径。
双值:表示边框两个角的圆角半径。第 1 个值表示 topLeft/bottomRight;第 2 个值表示 topRight/bottomLeft。
三值:表示边框三个角的圆角半径。第 1 个值表示 topLeft;第 2 个值表示 topRight/bottomLeft;第 3 个值表示 bottomRight。
四值:表示边框四个角的圆角半径。第 1 个值表示 topLeft;第 2 个值表示 topRight;第 3 个值表示 bottomRight;第 4 个值表示 bottomLeft。
边框的基本用法
下面是边框的使用示例。
div {
border-style:solid;
border-color:#ff0000;
border-width:10px;
border-radius:5px;
}
当使用属性的简写方式时,简写中没写的样式,将按照默认值处理,例如
border: 5px red;
无效果,因为border-style 默认为 none,而border: 5px solid;
会显示 5px 的黑色实线边框,因为 border-color 默认黑色。当属性的简写与非简写同时存在,遵循后者覆盖前者的原则,示例如下:
// 显示 5px 黑色实线边框 (black 覆盖 red)
border:5px red solid;
border-color:black;
// 显示无边框(none 覆盖 dotted)
border-style:dotted;
border:5px red
盒模型的基本用法
下面是盒模型的一个使用示例。
div {
background-color: lightgrey;
width: 300px;
border: 25px solid green;
padding: 25px;
margin: 25px;
}
示例代码
单击此处 detailBoxModel.zip 获取完整示例代码。