3个问题
开篇,先提出3个问题
<table>是块级元素block element吗?<table>的宽度默认是100%吗?- 块级元素block element的默认宽度是
100%吗?
百度回答
看看百度对此上述三个问题的回复,



实际问题
但实际,我发现,百度答案可能都不对,或者说这是大家认知上的,是错的
我写了一个简单的demo,结构很简单,由 <table> 和 <span> 组成
html
<table>
<thead>
<tr>
<th>标题1</th>
<th>标题2</th>
<th>标题3</th>
</tr>
</thead>
<tbody>
<tr>
<td>内容1</td>
<td>内容2</td>
<td>内容3</td>
</tr>
<tr>
<td>内容1</td>
<td>内容2</td>
<td>内容3</td>
</tr>
</tbody>
</table>
<span>span内联元素</span>
<table>是块级元素block element吗?
<span> 元素没有紧跟在 <table> 后面,<table> 符合block element独占一行的特征
但是,<table> 的宽度是 100% 吗?好像并不是
<table> 的宽度是自身宽度,等同于 width: auto 并不是 width: 100%
而百度/大众对块级元素的认知,块级元素宽度就是100%的

这是不是和实际并不相符合?
实际上 <table> 确实是独占了一行,具备了块级元素的特征,但是宽度并不是 100% 而是 auto
留下两个疑问:
- 会不会
<table>根本就不是块级元素呢? - 会不会块级元素的宽度并全部是
100%,还有auto?
进一步查看 <table> 的默认属性,

显示 <table> 为 display: table 并不是 display: block
总结
我认为
<table>并不是真正意义的块级元素(display: block),而是具备了块级元素特征的 table 元素(display: table)- 它独占一行,但宽度为
width: auto - 以内部宽度为准,并不会自动拉伸适配父级宽度
举个例子,<table> 自身内容宽度只有300px,那即使剩余700px宽度可用,也不会主动撑满,而是以300px为准,在区域(父级)宽度小于300px时,会压缩自身宽度适配区域(父级)宽度,总体而言,相等于原生就自带了 width: auto、max-width: 100% 两条css属性
这也是 width: 100% 和 width: auto 的区别吧
这点在适配大屏幕上,可能会遗漏掉
了解的意义
我们在做项目的时候,总是使用类似 el-table 之类的组件封装,但却很少去了解基础元素本身,也可能不知道,为什么 element-ui 的组件示例代码中,为什么要加 style="width: 100%"
可能觉得删掉也是一样的呈现
PS:我复制组件代码的时候,经常删掉了这行样式,现在看来是有用意在的
el-table 是自动获取宽度并设置表格 style width 样式,并通过 <colgroup> 设置每一列的宽度,并监听了屏幕 resize 事件,时刻保持适配,所以设置 style="width: 100%" 也是为了兼容/确保获取到的当前组件的宽度是自适应的宽度吧
所以在这种情况下,让我们可以不用去管自适应的问题,可能也正是因为组件太好用了,以至于我们忘记了HTML元素本身
写在最后的毛遂自荐,大专,base广州,7年前端,目前外包,想进好公司,求捞,谢谢