HTML 块级元素、行内元素、行内块元素详解

发布时间 2023-12-11 09:17:18作者: べ微熏の斜陽べ

块级元素 行内元素

1、 基本概念

在HTML5之前,HTML元素被分为两类:块级元素(block-level elements)和行内元素(inline-level elements),或称为内联元素

不过,因为这是一种表现特征,在HTML5时,在标准流中通过CSS属性display指定。(注释:表现特征,例如文字颜色,背景色等等和HTML的内容、JS的行为形成对比。以前,也许通过元素的类别决定元素的这种表现特征,不过现在可以通过CSS display属性进行控制。)

1、行内元素是那些只占用定义元素的标签所限定的空间的元素,而不是打破内容流。
2、块级元素占用其父元素(容器)的整个水平空间,以及与其内容高度相等的垂直空间,因此创建了一个“块”。

区别一:行内元素不从新行开始,只占用必要宽度;块级元素总是从新行开始,并占用其父元素的可用的全部宽度。

区别二: 块级元素可能包含行内元素,有时也包含其他块级元素,行内元素只能包含数据和其他行内元素。a元素例外,它可以包含块级元素,例如div。

2、行内元素和块级元素案例演示

行内元素

<div>
  The following span is an <span class="highlight">inline element</span>; its
  background has been colored to display both the beginning and end of the
  inline element's influence.
</div>
.highlight {
  background-color: #ee3;
}

在这个案例中,<div>块级元素包含一些文本。在那段文本中包含了一个<span>元素,它是行内元素。因为<span>是行内元素,所以段落正确渲染为单一的,未被打破的一段文本流。

在这里插入图片描述

块级元素

<span>元素修改为块级元素,例如段落元素<p>,代码如下所示

<div>
  The following paragraph is a
  <p class="highlight">block-level element;</p>
  its background has been colored to display both the beginning and end of the
  block-level element's influence.
</div>
.highlight {
  background-color: #ee3;
}

可以看到差异,<p>元素完全地改变了文本的布局,将其分割为三部分:<p>元素前的文本,<p>元素本身包含的文本,<p>元素后的文本。

在这里插入图片描述

3、改变元素的等级

你可以通过CSS display属性改变一个元素的视觉表现,例如,通过把display的值从”inline“修改为”block", 你可以指示浏览器以为块盒(block box)而不是行内盒(inline box)的方式渲染元素,反之亦然。然而,修改元素的display属性,例如把display属性值从“inline”修改为“block”或者从“block”修改为“inline",并不会改变元素的类别和内容模型。例如,即使把span元素的display属性修改为”block“,它仍然属于行内元素并且不能内嵌div元素。内容模型概念接下来会介绍。

块级元素、行内元素、行内块元素的特点

1、块级元素(block)

块级元素,顾名思义,该元素呈现“块”状,所谓块状就是元素显示为矩形区域,主要用于网页布局和网页结构的搭建。它有自己的宽度和高度,也就是可自定义 width 和 height。除此之外,块级元素比较霸道,它独自占据一行高度(float浮动除外),一般可以作为其他容器使用,可容纳块级元素和行内元素。以下元素均为块级元素:

<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>     	// 定义表格中的行

块级元素代表性的就是 div,其他入p、nav、header、footer 等等都可以用 div 来实现,不过为了方便解读代码,一般会使用特定的语义化标签,使代码可读性强

块级元素具有以下特点

  • 每个块级元素都是独自占一行;
  • 高度,宽度,行高,外边距(margin)以及内边距(padding)都可以控制;
  • 元素的宽度如果不设置的话,默认为父元素的宽度(父元素宽度100%);
  • 多个块状元素标签写在一起,默认排列方式为从上至下;

2、行内元素(inline)

行内元素不可以设置宽(width)和高(height),但可以与其他行内元素位于同一行,行内元素内一般不可以包含块级元素。行内元素的高度一般由元素内部的字体大小决定,宽度由内容的长度控制。行内元素常用于控制页面中文本的样式。以下元素均为行内元素:

<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>    	// 定义变量

行内元素具有以下特点

  • 不会独占一行,相邻的行内元素会排列在同一行里,直到一行排不下才会自动换行,其宽度随元素的内容而变化;
  • 高宽、行高无效,对外边距(margin)和内边距(padding)仅设置左右方向有效,上下无效;
  • 设置行高有效,等同于给父级元素设置行高;
  • 元素的宽度就是它包含的文字或图片的宽度,不可改变;
  • 行内元素中不能放块级元素,a 链接里面不能再放链接;

行内元素最常使用的就是 span,其他的只在特定功能下使用。之间只能包含文本和各种文本的修饰标签,如加粗标签、倾斜标签等,中还可以嵌套多层

3、行内块元素(inline-block)

行内块级元素,它既具有块级元素的特点,也有行内元素的特点,它可以自由设置元素宽度和高度,也可以在一行中放置多个行内块级元素。比如:input、img就是行内块级元素,它可设置高宽以及一行多个。以下元素为行内块元素:

<button>  	// 普通按钮
<input>   	// 创建表单元素
<textarea>  // 创建表单文本域
<img>		// 插入图片

行内块元素的特点

  • 高度、行高、外边距以及内边距都可以控制;
  • 默认宽度就是它本身内容的宽度,不独占一行,但是之间会有空白缝隙,设置它上一级的 font-size 为 0,才会消除间隙;

元素显示模式转换

1、转换为块级元素

a {
	display: block;
  }

2、转换为行内元素:

div {
		display: inline;
    }

3、转换为行内块元素:

span {
		display: inline-block;
     }

总结

不管块级元素还是行内元素,区别:一是排列方式,二是宽高边距设置,三是默认宽度。

  1. 块级元素会独占一行,而行内元素和行内块元素则会在一行内显示;
  2. 块级元素和行内块元素可设置 width、height 属性,而行内元素设置无效;
  3. 块级元素的 width 默认为 100%,而行内元素则是根据其自身的内容或子元素来决定其宽度;

而行内块级元素又同时拥有块级元素和行内元素的特点。