img标签究竟是行内元素仍是块级元素

面试官问你<img>是什么元素时你怎么回答

写这篇文章源自我以前的一次面试,题目即是问img标签属于块级元素仍是行内元素,当时想都没想就说了是行内(inline)元素,面试官追问为何可以设置 <img /> 标签的宽和高,当时脑子忽然一懵,发现这是本身技术上的一个空白,因此有了这篇文章。html

阅读本文您将收获

  • <img />标签的基本使用
  • MDN关于元素的定义
  • 特殊的可替换元素

<img /> 标签的基本使用

浏览器支持

  • 全部主流浏览器都支持 <img> 标签

标签订义及使用说明

  • <img> 标签订义 HTML 页面中的图像
  • <img> 标签有两个必需的属性:src 和 alt
  • 强烈推荐在开发中每一个图像中都使用 alt 属性。这样即便图像没法显示,用户仍是能够看到关于丢失了什么东西的一些信息。并且对于残疾人来讲,alt 属性一般是他们了解图像内容的惟一方式

<img />到底是什么元素

<img /> 是行内元素仍是块级元素?

  • <img /> 标签没有独占一行,因此是行内元素,这没啥问题

既然是行内元素为何可以设置宽高呢?

  • 这个问题就要引伸出下面部分了,<img /> 标签属于替换元素,具备内置的宽高属性,因此能够设置,具体解释看下面。

元素的定义

从元素自己的特色来说,能够分为不可替换元素和替换元素前端

元素相关的MDN解释git

不可替换元素

  • (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>同时具备行内元素,行内块,和块级元素的特性
  • 替换元素通常有内在尺寸,因此具备 widthheight,能够设定
    • 例如你不指定 <img>widthheight 时,就按其内在尺寸显示,也就是图片被保存的时候的宽度和高度
  • 对于表单元素,浏览器也有默认的样式,包括宽度和高度
  • <img>、<input>属于行内替换元素。height/width/padding/margin都可用。效果等于块元素

写在最后

  • 若是你以为这篇文章对你有益,烦请点赞以及分享给更多须要的人!github

  • 欢迎关注微信公众号【全栈道路】,获取更多科技相关知识及免费书籍。
    面试

更多好文

Vue3.0 响应式数据原理:ES6 Proxy浏览器

几行代码教你解决微信生成海报及二维码缓存

冷门的HTML - tabindex 的做用性能优化

[万字长文]百度和好将来面试经含答案微信

[前端面试]前端缓存问题看这篇,让面试官爱上你网络

记一次惨痛的Vue-cli + VueX + SSR经历

[三分钟小文]前端性能优化-HTML、CSS、JS部分

[三分钟小文]前端性能优化-页面加载速度优化

[三分钟小文]前端性能优化-网络传输层优化

相关文章
相关标签/搜索