倘若不斷向深處扎根,就能茁壯成長 - RM
在 CSS 中,有幾種方式可以影響元素的顯示,其中我們可以透過 visibility
這個屬性去設定元素的顯示與否,且基本上不會影響元素在 document 中的佈局,就像是透過設置 visibility: hidden
時元素不顯示仍然會在佈局中,但是要注意的是在屬性值為 visibility: collapse
的情況下設置會影響 <table>
的行列佈局狀態、flex item (flex item 部分仍為 WD 階段)在 flex 中的佈局狀態,那我們開始吧~。
visibility
設置不會讓元素在 document tree 中消失,若是要讓元素自 document tree 刪除可以使用 display: none
。規範直通車:
Visual effects
規範定義:
The ‘visibility’ property specifies whether the boxes generated by an element are rendered. Invisible boxes still affect layout (set the ‘display’ property to ‘none’ to suppress box generation altogether).
預設值:visible
繼承:會
visibility: visible
讓後代元素顯示在佈局中。下列的情況中 <input>
是可見的,父元素 <div>
是不可見的。子元素可見
<div>
<input type="text">
</div>
div{
background-color: pink;
visibility: hidden;
outline: 1px dotted #4e4e4e;
}
input{
visibility: visible;
}
collapse 有以下的特殊情況:
Specifying
visibility:collapse
on a flex item causes it to become a collapsed flex item, producing an effect similar tovisibility:collapse
on a table-row or table-column: the collapsed flex item is removed from rendering entirely, but leaves behind a “strut” that keeps the flex line’s cross-size stable.
對於 <table>
中的行、列使用,將會將其隱藏,除此之外會移除它所佔有的佈局空間。
<table>
中的 column、row ( rows, row groups, columns, or column groups)使用才會有將整行、列佈局空間移除的效果,對於其他 <table>
內項目使用的話只會隱藏相當於 visibility: hidden
,空間仍然存在。對於其他元素使用相當於 visibility: hidden
效果
<table>
<tr>
<td>1.1</td>
<td class="collapse">1.2</td>
<td>1.3</td>
</tr>
<tr class="collapse">
<td>2.1</td>
<td>2.2</td>
<td>2.3</td>
</tr>
<tr>
<td>3.1</td>
<td>3.2</td>
<td>3.3</td>
</tr>
</table>
.collapse{
visibility: collapse;
}
table{
outline: 1px solid red;
padding: 10px;
font-size: 24px;
font-weight: 900;
}
td{
outline: 1px solid;
}
在這裡我們設置一個三列的表格,並且對其 <tr>
、<td>
設置 visibility: collapse
,由於 collapse
對於表格行列的效果,我們可以預期列將不可見,並不在佈局中佔空間。
table 行列
如下可以看到整列被刪除,且空間也被移除了,但是非行列表格單元的空間仍然存在,沒有被移除。
上述我們聊到了有關 visibility
的使用方式,在某些情況下使用 visibility: collapse
會使得元素的佈局受到影響,我們明天見~
Visual effects
CSS Flexible Box Layout Module Level 1
以上的部分有任何錯誤的地方,歡迎指正呦~非常感謝~~XD