问题解答
严格来说:display不是canvas元素特有的属性,而是所有HTML元素都有的CSS属性。
详细讲解
1. display是CSS属性,不是canvas独有
<div style="display: none">隐藏的div</div> <p style="display: block">显示的段落</p> <img style="display: inline-block">图片 <canvas style="display: block">画布</canvas>
所有HTML元素(div、p、span、img、canvas等)都有display属性,它是CSS规范的一部分,不是canvas特有的。
2. ctx.style.display的访问路径
ctx.style.display = "none";
这条代码的访问路径:
| 层级 | 代码 | 含义 |
|---|---|---|
| ① | ctx | DOM元素(这里是canvas) |
| ② | .style | 该元素的内联样式对象 |
| ③ | .display | 内联样式中的display属性 |
3. 代码的本质
这行代码实际上是在设置内联样式:
// 这句JS代码
ctx.style.display = "none";
// 相当于在HTML中添加了:
<canvas id="cav" style="display: none"></canvas>
// 也相当于在CSS中添加:
#cav {
display: none;
}4. display的常见取值
| 取值 | 效果 |
|---|---|
none | 隐藏元素,不占页面空间 |
block | 显示为块级元素(独占一行) |
inline | 显示为内联元素 |
inline-block | 内联块元素 |
flex | 弹性盒子 |
grid | 网格布局 |
5. canvas元素的默认display值
console.log(ctx.style.display); // 可能输出空字符串(未设置内联样式) // 但浏览器默认样式通常是:display: inline-block
总结
display是CSS属性,属于所有HTML元素ctx.style.display访问的是canvas元素的内联样式中的display属性设置它为
"none"就是通过JS修改CSS,让canvas隐藏