html中collapse代码怎么写,CSS里的visibility属性有个鲜为人知的属性值:collapse

何涵衍
2023-12-01

虽然CSS并不是一种很复杂的技术,但就算你是一个使用CSS多年的高手,仍然会有很多CSS用法/属性/属性值你从来没使用过,甚至从来没听说过。

对于CSS里的visibility属性,相信你用过不下几百次。大多时候,你会把它的值设置成visible(这是所有页面元素的缺省值),或者是hidden。后者相当于display: none,但仍然占用页面空间。

其实visibility可以有第三种值,就是collapse。当一个元素的visibility属性被设置成collapse值后,对于一般的元素,它的表现跟hidden是一样的。但例外的是,如果这个元素是table相关的元素,例如table行,table group,table列,table column group,它的表现却跟display: none一样,也就是说,它们占用的空间也会释放。

但遗憾的是,各种浏览器对collapse值的处理方式不一样。看一下下面的演示:

HTML代码

FruitsVegetablesRocks
AppleCeleryGranite
OrangeCabbageFlint

collapse行1

hide行1

重置

CSS代码

body {

text-align: center;

padding-top: 20px;

font-family: Arial, sans-serif;

}

table {

border-collapse: separate;

border-spacing: 5px;

border: solid 1px black;

width: 500px;

margin: 0 auto;

}

th, td {

text-align: center;

border: solid 1px black;

padding: 10px;

}

.vc {

visibility: collapse;

}

.vh {

visibility: hidden;

}

button {

margin-top: 5px;

}

Javascript代码

var btns = document.getElementsByTagName('button'),

rows = document.getElementsByTagName('tr');

btns[0].addEventListener('click', function () {

rows[1].className = 'vc';

}, false);

btns[1].addEventListener('click', function () {

rows[1].className = 'vh';

}, false);

btns[2].addEventListener('click', function () {

rows[1].className = '';

}, false);

演示

CSS-Tricks的Almanac建议说不要使用这个值,因为浏览器的不统一。

据我的观察:

在谷歌浏览器里,使用collapse值和使用hidden值没有什么区别。 (See this bug report and comments)

在火狐浏览器、Opera和IE11里,使用collapse值的效果就如它的字面意思:table的行会消失,它的下面一行会补充它的位置。

说实话,估计这个值很少人会使用它,但你要知道确实可以使用这样的一个值,如果以前不知道它,那么,现在,在有些罕见的地方,你也许就会变得聪明一点了。

 类似资料: