canvas到底是块级元素还是内联元素?

  • 前言
  • canvas 是块级元素?
  • canvas 是内联元素?
  • 问题
  • 总结
  • 参考

前言

canvas 元素有默认的宽高,到底是块级元素还是内联元素,一直都很疑惑?下面就让我们来验证

canvas 是块级元素?

MDN 中可以看到 块级元素列表,其中就包含 canvas 元素,所以 canvas 是块级元素。

canvas 是内联元素?

下面的代码让 canvas 充满整个视窗。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>* {margin:0;padding: 0;user-select: none;}canvas{background-color: #0b2c26;}</style>
</head>
<body><canvas id="canvas"></canvas><script>const canvasEl = document.querySelector('#canvas')const ctx = canvasEl.getContext('2d')// 画板全屏const pageWidth = document.documentElement.clientWidth;const pageHeight = document.documentElement.clientHeight;canvasEl.width = pageWidth;canvasEl.height = pageHeight;</script>
</body>
</html>


由上图可知,设备视窗宽高为 320 * 568,而 body 元素的宽高为 320 * 573canvas 元素的宽高未 320 * 568,由于 body 元素比设备高,故出现了滚动条。此时,有如下疑惑:

  • body 元素为什么比视窗高了 5px

    下图可知,canvas 元素在浏览器中默认是内联元素。

    当为 canvas 元素添加 display: block; 属性时,body 元素的高度变成了设备高度。

设置属性后 canvas 此时是块状元素,其父元素 body 的宽高就是 canvas 元素的宽高,canvas 原本就是内联元素

问题

  • canvas 撑满视窗后,body 元素为什么比视窗高了 5px

总结

  • canvas 元素在浏览器中变现为内联元素,故就是内联元素。
  • canvas 需要撑满视窗时,设置属性为 display: block; 且设置宽高未视窗宽高即可。

参考

  • https://segmentfault.com/q/1010000007186319

canvas到底是块级元素还是内联元素?相关推荐

  1. 块级元素与行级元素(内联元素)

    内联元素(inline element)一般都是基于语义级(semantic)的基本元素.内联元素只能容纳文本或者其他内联元素,常见内联元素"a".块元素(block elemen ...

  2. 浅谈块级元素和内联元素的嵌套规则

    1. 替换和不可替换元素 从元素本身的特点来讲,可以分为替换和不可替换元素. a) 替换元素 替换元素就是浏览器根据元素的标签和属性,来决定元素的具体显示内容. 例如浏览器会根据<img> ...

  3. CSS块级元素、内联元素概念

    CSS文档流与块级元素(block).内联元素(inline),之前翻阅不少书籍,看过不少文章, 看到所多的是零碎的CSS布局基本知识,比较表面.看过O'Reilly的<CSS权威指南>, ...

  4. html能插入背景的行级元素,Html元素类型:块级元素、行内元素(内联元素)和行内块级元素...

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? html中的标签元素大体被分为三种不同的类型:块级元素.内联元素(又叫行内元素)和内联块级元素.事实上,我以前用的时候只 ...

  5. CSS的块级元素和内联元素,以及float

    说明:之前有一点搞错了,就是float其实是浮动起来,其它元素会位于它的底层. 最近在系统地学习HTML5,感觉补上了好多缺失的知识. 例如: 锚点定位其实可以通过 id 来实现: CSS 使用 !i ...

  6. 行内元素(内联元素)与块级元素

    在标准文档流里面,块级元素具有以下特点: 块级元素写完后会自动换行,有宽高可以修改. ①总是在新行上开始,占据一整行:②高度,行高以及外边距和内边距都可控制:③宽带始终是与浏览器宽度一样,与内容无关: ...

  7. CSS之排列系列--块级元素、内联元素、内联块元素--区别/详解

    原文网址:CSS之排列系列--块级元素.内联元素.内联块元素--区别/详解_IT利刃出鞘的博客-CSDN博客 简介 本文介绍CSS的块级元素(block).内联元素(inline)和内联块元素(inl ...

  8. html中块级元素并列,HTML的块级元素和内联元素

    一.任何不是块级元素的可见元素都是内联元素## 块元素(block element) * address - 地址 * blockquote - 块引用 * center - 举中对齐块 * dir ...

  9. HTML中的块级元素和内联元素

    1.特性 块级元素(block level element)总是独占一行,表现为另起一行开始,而且其后的元素也必须另起一行显示 宽度(width).高度(height).内边距(padding)和外边 ...

最新文章

  1. 我删了这些训练数据…模型反而表现更好了!?
  2. Zookeeper的多节点集群详细启动步骤(3或5节点)
  3. SAP CRM Fiori note header
  4. pb90代码如何连接sql2008r2_如何使用 HTTP Headers 来保护你的 Web 应用
  5. 阿里摩酷实验室计算机视觉团队校园招聘
  6. JS判断图片是否加载完毕
  7. 移动APP开发工作笔记001---Hbuilder连接苹果手机
  8. 严阵以待的意思是什么,怎么用严阵以待造句?
  9. python在同一行输入n个数转义符_python:转义符\
  10. mysql的索引(一)
  11. 基于自抗扰控制adrc的高速列车运行控制算法研究
  12. 【Linux】linux清除ip地址命令
  13. 在桌面顶端使用终端(iTerm2—macOS上的Guake替代)
  14. 【推荐】中国计算机学会推荐国际学术会议和期刊目录——CCF的会议与期刊分级
  15. 截止失真放大电路_每周经典电路分析:一个经典实际运放的内部电路分析(1)
  16. 取消wps右键菜单_如何给你的WPS去广告!
  17. Python学习之文件13
  18. # TIG监控体系搭建
  19. 一些看完让你受益匪浅的英语学习文章和常识(推荐看一下)
  20. 基于django的轻量级CMS Mezzanine搭建笔记

热门文章

  1. model.predict_classes(test) 和model.predict(test) 区别
  2. C++ Boost库:简介和第一个示例程序
  3. Java 使用Reactive Redis
  4. soot 简介 | 安装运行
  5. 关于find命令-perm 的用法
  6. Python paramiko 模块详解与SSH主要功能模拟
  7. spark技术学习与思考(sparkcoresparksql)
  8. 人工智能技术--四要素分析
  9. android字体带下划线
  10. 后缀是lnk是什么文件_lnk是什么格式_lnk后缀是什么格式