面试官问你<img>
是什么元素时你怎么回答
写这篇文章源自我之前的一次面试,题目便是问img标签属于块级元素还是行内元素,当时想都没想就说了是行内(inline)元素,面试官追问为什么能够设置
<img />
标签的宽和高,当时脑子突然一懵,发现这是自己技术上的一个空白,所以有了这篇文章。
阅读本文您将收获
<img />
标签的基本使用- MDN关于元素的定义
- 特殊的可替换元素
<img />
标签的基本使用
浏览器支持
- 所有主流浏览器都支持
<img>
标签
标签定义及使用说明
<img>
标签定义 HTML 页面中的图像<img>
标签有两个必需的属性:src 和 alt- 强烈推荐在开发中每个图像中都使用 alt 属性。这样即使图像无法显示,用户还是可以看到关于丢失了什么东西的一些信息。而且对于残疾人来说,alt 属性通常是他们了解图像内容的唯一方式
<img />
究竟是什么元素
<img />
是行内元素还是块级元素?
<img />
标签没有独占一行,所以是行内元素,这没啥问题
既然是行内元素为什么能够设置宽高呢?
- 这个问题就要引申出下面部分了,
<img />
标签属于替换元素,具有内置的宽高属性,所以可以设置,具体解释看下面。
元素的定义
从元素本身的特点来讲,可以分为不可替换元素和替换元素
元素相关的 MDN解释
不可替换元素
(X)HTML
的大多数元素是不可替换元素,即其内容直接表现给用户端(例如浏览器)- 如:
<h1>我是标题</h1>
可替换元素
- 浏览器根据元素的标签和属性,来决定元素的具体显示内容
- 例如浏览器会根据
<img>
标签的src属性的值来读取图片信息并显示出来,而如果查看(X)HTML代码,则看不到图片的实际内容;又例如根据<input>
标签的type属性来决定是显示输入框,还是单选按钮等 - (X)HTML中的
<img>、<input>、<textarea>、<select>、<object>
都是替换元素。这些元素往往没有实际的内容,即是一个空元素 - 如:
<img src="tigger.jpg"/>
、<input type="submit" name="Submit" value="提交"/>
- 可替换元素的性质同设置了display:inline-block的元素一致
特殊的可替换元素
<img>
属于可替换元素<img>
同时具有行内元素,行内块,和块级元素的特性- 替换元素一般有内在尺寸,所以具有
width
和height
,可以设定- 例如你不指定
<img>
的width
和height
时,就按其内在尺寸显示,也就是图片被保存的时候的宽度和高度
- 例如你不指定
- 对于表单元素,浏览器也有默认的样式,包括宽度和高度
<img>、<input>
属于行内替换元素。height/width/padding/margin
均可用。效果等于块元素
写在最后
- 如果你觉得这篇文章对你有益,烦请点赞以及分享给更多需要的人!
原文链接: img标签到底是行内元素还是块级元素 - 全栈道路 - 博客园
作者: 全栈道路