元素是文档结构的基础,在 css 里面,每个元素生成了包含内容的框(box), 大家都叫“盒子”。但是不同的元素显示方式是不同的,有占据一整行的,有水平一个挨着一个的。
比如:div 与 span 的显示方式不一样,因为 div是块级元素,会占据一行,而span为行内元素,可多个span放置一行。
接下来就详细讲一下在CSS中块级元素、行内元素和行内块级元素的区别。
1. 块级元素 block
块级元素,顾名思义,该元素呈现“块”状,所以它有自己的宽度和高度,也就是可自定义 width 和 height。除此之外,块级元素比较霸道,它独自占据一行高度(float浮动除外),一般可以作为其他容器使用,可容纳块级元素和行内元素。
块级元素有以下特点:
- 每个块级元素都是独自占一行;
- 高度,行高,外边距(margin)以及内边距(padding)都可以控制;
- 元素的宽度如果不设置的话,默认为父元素的宽度(父元素宽度100%;
- 多个块状元素标签写在一起,默认排列方式为从上至下;
<address> // 定义地址 <caption> // 定义表格标题 <dd> // 定义列表中定义条目 <div> // 定义文档中的分区或节 <dl> // 定义列表 <dt> // 定义列表中的项目 <fieldset> // 定义一个框架集 <form> // 创建 HTML 表单 <h1> // 定义最大的标题 <h2> // 定义副标题 <h3> // 定义标题 <h4> // 定义标题 <h5> // 定义标题 <h6> // 定义最小的标题 <hr> // 创建一条水平线 <legend> // 元素为 fieldset 元素定义标题 <li> // 标签定义列表项目 <noframes> // 为那些不支持框架的浏览器显示文本,于 frameset 元素内部 <noscript> // 定义在脚本未被执行时的替代内容 <ol> // 定义有序列表 <ul> // 定义无序列表 <p> // 标签定义段落 <pre> // 定义预格式化的文本 <table> // 标签定义 HTML 表格 <tbody> // 标签表格主体(正文) <td> // 表格中的标准单元格 <tfoot> // 定义表格的页脚(脚注或表注) <th> // 定义表头单元格 <thead> // 标签定义表格的表头 <tr> // 定义表格中的行
2. 行内元素 inline
行内元素不可以设置宽(width)和高(height),但可以与其他行内元素位于同一行,行内元素内一般不可以包含块级元素。行内元素的高度一般由元素内部的字体大小决定,宽度由内容的长度控制。
行内元素有以下特点:
不会独占一行,相邻的行内元素会排列在同一行里,直到一行排不下才会自动换行,其宽度随元素的内容而变化;
高宽无效,对外边距(margin)和内边距(padding)仅设置左右方向有效 上下无效;
设置行高有效,等同于给父级元素设置行高;
元素的宽度就是它包含的文字或图片的宽度,不可改变;
行内元素中不能放块级元素,a 链接里面不能再放链接;
<a> // 标签可定义锚 <abbr> // 表示一个缩写形式 <acronym> // 定义只取首字母缩写 <b> // 字体加粗 <bdo> // 可覆盖默认的文本方向 <big> // 大号字体加粗 <br> // 换行 <cite> // 引用进行定义 <code> // 定义计算机代码文本 <dfn> // 定义一个定义项目 <em> // 定义为强调的内容 <i> // 斜体文本效果 <kbd> // 定义键盘文本 <label> // 标签为 input 元素定义标注(标记) <q> // 定义短的引用 <samp> // 定义样本文本 <select> // 创建单选或多选菜单 <small> // 呈现小号字体效果 <span> // 组合文档中的行内元素 <strong> // 加粗 <sub> // 定义下标文本 <sup> // 定义上标文本 <textarea> // 多行的文本输入控件 <tt> // 打字机或者等宽的文本效果 <var> // 定义变量
3. 行内块级元素 inline-block
行内块级元素,它既具有块级元素的特点,也有行内元素的特点,它可以自由设置元素宽度和高度,也可以在一行中放置多个行内块级元素。比如:input、img就是行内块级元素,它可设置高宽以及一行多个。
具体特点如下:
- 高度、行高、外边距以及内边距都可以控制;
- 默认宽度就是它本身内容的宽度,不独占一行,但是之间会有空白缝隙,设置它上一级的 font-size 为 0,才会消除间隙;
<button> <input> <textarea> <select> <img>
4. 元素类型转换 display
display:block ,定义元素为块级元素
display : inline ,定义元素为行内元素
display:inline-block,定义元素为行内块级元素
5. 总结
不管块级元素还是行内元素,区别:一是排列方式,二是宽高边距设置,三是默认宽度。
- 块级元素会独占一行,而内联元素和内联块元素则会在一行内显示;
- 块级元素和内联块元素可设置 width、height 属性,而内联元素设置无效;
- 块级元素的 width 默认为 100%,而内联元素则是根据其自身的
内容或子元素来决定其宽度;而行内块级元素又同时拥有块级元素和行内元素的特点。