表格宽度调整小记

由于之前做了许多调整表格宽度的工作,但是一直会有小问题出现,并一度没有做出很好的解释,现在将问题还原,并给出解释。

  • 问题一:对table设置了总宽度,每一列也设置了具体的宽度,那如果每一列设置的总宽度之和和table的宽度不一样,会怎么样呢?
    为了避免这个计算问题,之前我会空出一列不设置宽度,把这个问题留给浏览器去计算。但是,不管如何去避免问题发生,但问题确实还是发生了。

  • 问题二:从表意的角度来看,就宽度而言,分别给th和td设置不同的宽度,最后宽度由谁来定呢?

  • 终极问题:表格的宽度到底咋定的?


还原问题的场景,我的业务很简单,给我一组数据(tr),设置每一列的宽度,保证数据不出现换行。


现在做出解答:

  • 一:
    1.1如果宽度不一样,这分很多种情况,但总体思路是,浏览器会尽量按程序员设置的宽度去渲染,发现宽度不够用了(问题来了),就会去看其他列有没有空余的宽度可以用,如果有,不好意思我要借一点,那到底借多少呢?。
    1.2到底借多少?这个问题得交给开发浏览器得程序员去考虑。但是一个可能的解释是,如何td太大了,超过了table,那么我只能按比例进行分配了。
  • 二:假设表格的宽度是动态确定的,那么就是由最后一行的宽度来确定,从我的经验来看,假设成立。
  • 三:到底咋分配,要考虑的情况比较多,上面两个问题只是一些业务上的例子。比如:没有设置默认宽度,宽度是由表格的内容来定吗?部分设置了宽度,部分没有设置宽度,我们会认为会优先考虑的设置宽度的列,那没有设置宽度的列宽度如何定?
    3.1用数学的角度去理解table渲染。
    这个数学问题是这样,已知table的宽度w,列数l,列数宽度数组col[],其中col[i]取值范围为实数R,或未知。求实际col[]。
    那么作为一个渲染器工程师,如何去处理这个问题呢?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值