行内元素与块状元素

面试经常考到这个东西, 比较基础的内容.

概念

块级元素会独占一行,默认情况下,其宽度自动填满其父元素宽度. 对应 display: block;

行内元素不会独占一行,相邻的行内元素会排列在同一行里,直到一行排不下,才会换行,其宽度随元素的内容而变化. display: inline;

示例

块级元素

address - 地址
blockquote - 块引用
center - 举中对齐块
dir - 目录列表
div - 常用块级容易,也是CSS layout的主要标签
dl - 定义列表
fieldset - form控制组
form - 交互表单
h1 - 大标题
h2 - 副标题
h3 - 3级标题
h4 - 4级标题
h5 - 5级标题
h6 - 6级标题
hr - 水平分隔线
isindex - input prompt
menu - 菜单列表
noframes - frames可选内容,(对于不支持frame的浏览器显示此区块内容
noscript - 可选脚本内容(对于不支持script的浏览器显示此内容)
ol - 有序表单
p - 段落
pre - 格式化文本
table - 表格
ul - 无序列表

行内元素

a - 锚点
abbr - 缩写
acronym - 首字
b - 粗体(不推荐)
bdo - bidi override
big - 大字体
br - 换行
cite - 引用
code - 计算机代码(在引用源码的时候需要)
dfn - 定义字段
em - 强调
font - 字体设定(不推荐)
i - 斜体
img - 图片
input - 输入框
kbd - 定义键盘文本
label - 表格标签
q - 短引用
s - 中划线(不推荐)
samp - 定义范例计算机代码
select - 项目选择
small - 小字体文本
span - 常用内联容器,定义文本内区块
strike - 中划线
strong - 粗体强调
sub - 下标
sup - 上标
textarea - 多行文本输入框
tt - 电传文本
u - 下划线
var - 定义变量

区别

  • 块级元素独占一行,在默认情况下,宽度自动填满父元素宽度.
  • 行内元素不会独占一行,宽度随着元素的内容而变化.
  • 行内元素的widthheight的设置无效.
  • 行内元素的marginpadding垂直 方向上不产生边距效果
  • 可以使用display:block;display:inline;实现块级元素和行内元素的相互转换

其他

  • 给行内元素设置垂直方向上的padding的时候, 并不是完全无效. 而是基于自身内容向上或者下扩展. 但是不占据高度,却能遮盖下方元素
  • 设置display:inline-block;后, 除了不独占一行, 不充满父元素宽度, 其他特性与块状元素一致