CSSTDG读书笔记十三
border-spacing,相当于原来的html属性cellspacing, 应用于table或table-inline,可取一个或两个值,取两个值时第一个是水平方向第二个是垂直方向。IE不支持。
在separated border模式下,row,rowgroup,col,colgroup的border将被忽略。IE不能应用border于这些元素之上。
关于空单元格empty cell,有empty-cell属性(应用于table-cell),可取值hide,show,inherit。IE始终hide。
collapse border模式下,相邻border的优先权决定:
1。hidden最大
2。none最小。
3。然后优先权先按照宽度定,宽者胜,之后按border style定,优先权按以下顺序递减:double, solid, dashed, dotted, ridge, outset, groove, inset.
4。如果除了颜色其他都一样,那么优先权按以下顺序递减:cell, row, row group, column, column group, table。如果这是还是是两个同级别的元素,那么由浏览器定。
table-layout为fixed width模式时要比aotumatic width模式快
fixed width模式下,每个column的宽度由第一行决定,后面行如果某个单元格再次定义宽度则会被忽略。
automatice width模式要复杂的多:
1。对于一个col中的每个cell,首先要计算最小宽度和最大宽度。
a。关于最小宽度:首先cell内容可以允许的最小宽度是内容最小宽度,文字可以换行,但是不可超出。如果这个cell的宽度小于最小内容宽度,那么cell的最小宽度就是内容宽度,如果大于,就是这个指定的width。
b。关于最大宽度:内部内容不自动换行时需要的宽度。
2。对于一个col,也要计算最小宽度和最大宽度。
a。col的最小宽度由最大的cell最小宽度指定,如果col本身设置了width且大于所有的cell最小宽度,那么这个width就是这个col的最小宽度。
b。col的最大宽度由最大的cell最大宽度指定,如果col本身设置了width且大于所有的cell最大宽度,那么这个width就是这个col的最大宽度。
3。如果一个cell跨越了多余一个col,那么这些col的最小宽度之和应该等于这个cell的最小宽度,同样这些col的最大宽度之和也应该等于这个cell的最大宽度。所有的宽度改变都应该平分到这个cell所跨度的所有col上。
这些都确定之后,开始下面的步骤:
1。如果计算出的table width不是auto,那么这个值将和所有column的width+border+cell spacing之和比较,两者取较大的作为table的最后宽度。
2。如果计算出的table width时auto,那么最后的table width就是所有column的width+border+cell spacing之和。
总之automatic width是相当滴复杂,大概了解一下即可,fixed width模式倒是蛮有用,不会被内容撑大。


