w3schools:
The display property specifies if/how an element is displayed.
Every HTML element has a default display value depending on what type of element it is.
The default display value for most elements is block or inline.
Display 是一種 CSS 屬性,指定「 是否 / 如何 」顯示元素,每一個 HTML element 都有預設的 display value,而它的「value」是什麼,則取決於它是什麼類型的 HTML element。
所以!瞭解各個 HTML element 的預設屬性很重要!很重要!很重要!
🚩 瞭解 HTML element 預設屬性
🙋🏻♀️ CSS Syntax 複習
w3schools:
A CSS rule consists of a selector and a declaration block.
Display 是一種 CSS 屬性,大多數的元素其默認的 display value 是「block」或「inline」,常見的 value 值有以下這些:
display: block;
display: inline;
display: none;
display: inline-block;
接下來要各別介紹「block」、「inline」、「inline-block」之間的不同特性!
(一) Block-level Elements
w3schools:
A block-level element always starts on a new line and takes up the full width available (stretches out to the left and right as far as it can).
Block-level Elements 總是從一個新行開始,並佔據可用的整個寬度(盡可能向左和向右延伸),如下圖呈現:
擁有預設 block 值的 HTML Element
Examples of block-level elements:
div、h1 ~ h6、p、form、header、footer、section。
(二) Inline Elements
w3schools:
An inline element does not start on a new line and only takes up as much width as necessary.
Inline Elements 不會從新行開始,只會佔據必要的寬度。 特別注意的是,具有 inline 屬性的元素,並不能為它添加 width 或 height。
Examples of inline elements:span、a、img。
另外我們也可以注意到 img 元素 和 span、a 元素沒有對齊。
(三) Inline-block
w3schools:
Compared to display: inline, the major difference is that display: inline-block allows to set a width and height on the element.
Also, with display: inline-block, the top and bottom margins/paddings are respected, but with display: inline they are not.
Compared to display: block, the major difference is that display: inline-block does not add a line-break after the element, so the element can sit next to other elements.
在 Box Model 的概念下,要計算元素的完整大小,必須計入 padding、 borders、margins 等。而 Box Model 是隨著元素的累加而不斷堆疊,最父層的 box 會受內部的 box 內容推擠。 而 inline element 則有不同的情境,當他被加入 padding-top、padding-bottom 時,他父層(或外層)的元素不會被推擠,反而會蓋住周圍的元素。
🧙🏻♀️ 實驗:使用 a inline element,宣吿不同 display: value
在以下的範例中,我對 a 宣告不同的 display: value 來設計按鈕,一起來觀察不同的 value 對 a 以及周遭元素造成什麼效果及變化。
➊使用a 標籤,預設inline 在具有 inline 屬性的 a 標籤中,無法放置 block element,但是放置在 a 裡的 div,其 div 裡面內含的文字卻受到 a:hover 的影響,在滑鼠 hover 時變色了。
➋ 將 a 標籤宣告為 display: block;
將帶有 inline 屬性的 a 標籤,將其顯示方式改變為 display: block,讓 a 標籤以 block 做呈現,這也使 a 標籤能夠添加 width 和 height 的值,在畫面上也另起一列,並且盡可能向左右延伸。
➌ 將 a 標籤宣告 display: inline-block;
被設置成 inline-block 的 a 標籤,無法放置 block element,且放置在 a 裡的 div 文字,也沒有讀取 text-decoration: none;
(五) 覆蓋默認顯示值 Override The Default Display Value
w3schools:
As mentioned, every element has a default display value. However, you can override this.
Changing an inline element to a block element, or vice versa, can be useful for making the page look a specific way, and still follow the web standards.
如前所述,每個元素都有一個默認顯示值。 但是,我們可以覆蓋它,將內聯元素更改為塊元素,反之亦然,對於使頁面看起來具有特定方式並且仍然遵循 Web 標準很有用。
注意,顯示屬性的規則與條件:
w3schools:
Note:Setting the display property of an element only changes how the element is displayed, NOT what kind of element it is. So, an inline element with display: block; is not allowed to have other block elements inside it.
透過本次習作,能夠瞭解 HTML element 基礎概念,並且在規劃 HTML、CSS 時理解以前看不到的盲點,希望這篇筆記也對初學 CSS Dispaly 的你有所幫助。
如果你喜歡本篇筆記,歡迎一起練習 本篇習作題目:運用 CSS Display 屬性,設計一個具有 LOGO 、按鈕的選單。
Practice make perfect, 我是正在自我習作中的 Draw,我們下篇見 🙇🏻