Page 206 - css揭秘
P. 206

37 精确控制表格列宽





                    难题

                        尽管多年以前我们就不再使用表格来完成页面布局了,但表格在现代网
                    站中仍然有其不可替代的位置,我们需要用它来实现统计数据、电子邮件、
                    拥有大量元数据的列表等表格型数据。对其他元素的 display 属性使用表格
                    相关的关键字,也可以让它们具备表格类元素的行为。尽管有时候它们看起
                    来很方便,但对于不固定的内容来说,它们的布局其实是很难预测的。这是
                    因为列宽根据其内容进行调整,即使我们显式地指定了 width,也只能起到
                    类似提示的作用,如图 7-5 所示。
                        鉴于这个原因,我们往往不得不使用其他元素来呈现表格型数据,或者
                    干脆接受布局效果的不可预测性。有没有什么办法可以让表格的行为更加可
                    控呢?

                    解决方案


                        解决方案来自于 CSS 2.1 中一个鲜为人知的属性,叫作 table-layout。
                    它的默认值是 auto,其行为模式被称作自动表格布局算法,也就是我们最
                    为熟悉的表格布局行为(就像图 7-5 那样)。不过,它还接受另外一个值
                    fixed,这个值的行为要明显可控一些。它把更多的控制权交给了网页开
                    发者(没错,就是你),只把较少的控制权留给渲染引擎。我们设置的(宽
                    度)样式会直接起作用,而不仅仅被视为一种提示;同时,溢出行为(包括
                    text-overflow)与其他元素行为也是一样的,因此表格的内容将只能影响
                    表格行的高度了。

                        这种固定表格布局算法不仅更容易预测、便于使用,同时也明显更快。
                    因为表格的内容并不会影响单元格的宽度,所以在页面的下载过程中,表格
                    不需要频繁重绘。相信我们都对页面加载过程中表格不断重新调整列宽的恐
                    怖情景记忆犹新。对于固定表格布局来说,这种情况再也不会发生了。
                        在使用时,我们只需要对 <table> 元素或其他具有 display:  table 样
                    式的元素应用这个属性即可。请注意,为了确保这个技巧奏效,需要为这
                    些表格元素指定一个宽度(哪怕是 100%)。同样,为了让 text-overflow:
                    ellipsis 发挥作用,我们还需要为那一列指定宽度。这就行了!你可以在
                    图 7-6 中看到效果:





                                                                                       37 精确控制表格列宽            175







          ඀ࠡ  JOEC
   201   202   203   204   205   206   207   208   209   210   211