CSS 習作|The display Property:辨識 block、inline、inline-block 三胞胎

更新於 發佈於 閱讀時間約 14 分鐘

Intro:The display Property

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.

CSS 語法說明

  • CSS Syntax 由一個選擇器 ( Selector ) 和一個聲明塊 ( declaration block ) 組成。
  • Selector 選擇器指向要設置樣式的 HTML 元素。
  • Declaration block 聲明塊包含一個或多個以分號分隔的聲明。
  • 每個 declaration block 都包含一個 CSS 屬性名稱和一個值,以冒號分隔。
  • 多個 CSS 聲明用分號分隔,聲明塊用花括號括起來。

Display value

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 總是從一個新行開始,並佔據可用的整個寬度(盡可能向左和向右延伸),如下圖呈現:
<div> element 具有 block 屬性
且 block 可以被設置 width、height,下圖的演示為寬高設置 100px,使內容看起來是黃色正方形。
block 可以設置 width、height
擁有預設 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.

差異:inline-block 與 block、inline 之間的比較

  • 與 inline 相比,inline-block 允許在元素上設置寬度和高度。
  • 此外,對於 display: inline-block,頂部和底部邊距/填充會受到尊重,但對於 display: inline 它們則不然。
  • 與 block 相比,主要區別在於 inline-block 不在元素後添加換行符,因此該元素可以緊挨著其他元素。

💡 Inline 觀念釐清:

可以在 inline 行內元素的頂部和底部添加 padding,但是 padding 不會影響周圍其他行內元素的間距,所以 padding 會和其他行內元素重疊,如下圖:
inline element 加上 padding: 後,padding 不會推擠周圍的 inline elements,反而會覆蓋其他的 inline 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.
設置元素的顯示屬性只會改變元素的顯示方式,而不是元素的類型。
因此,一個帶有 display: block 的內聯元素; 不允許在其中包含其他塊元素。

問題紀錄

  • 在「Override The Default Display Value」的觀念下,一個帶有 display: block 的 inline element,會允許在其中包含其他 block elements 嗎?
  • 設計具有超連結屬性的按鈕時,應該如何架構 HTML element 和 CSS Property 呢?
  • inline-block 與 block、inline,它們分別使用的時機與合適的組合是什麼呢?

💆🏻⏳ 習作時間

習作題目:運用 CSS Display 屬性,設計一個具有 LOGO 、按鈕的選單。
( 此習作練習不具有 RWD )
習作時間:運用 CSS Display 設計一個選單

習作演練心得:

撰寫 HTML 與 CSS 時,需注意使用的 HTML element 本身具有何種 (或預設) display 屬性,例如 <a>、<img> 是具有 inline 屬性的 element,而 <ul>、<li> 則是具有 block 特性的 element。
並且,瀏覽器預設樣式 會使相同的 HTML element 在不同的瀏覽器有不同的呈現,因此,需要 CSS Reset 來覆蓋瀏覽器內建的 HTML element 樣式,這邊也參考 六角學院的 CSS Reset - 清空瀏覽器預設樣式
在習作中,使用 <ul>、<li> 來包住 <a> 設計選單,理由是:
  • 區塊元素可以包含行内元素或者某些區塊元素行。
  • 内元素只能包含行內元素,不能包含區塊元素。
以 <a> 標籤設計按鈕時,宣告 <a> display: block,並針對 <a> 設置 padding,這邊不對 <li> 設定寬高,反而是 透過在 <a> 上添加 padding 屬性,目的是使 <a> 擁有內距,增加連結點擊範圍。
將 <img> 宣告 display: block,並設置 img { width: 100%; } ,這使 <img> 可以隨著父層內距及外距的增加或內縮,來自適應寬高。
這邊我用 . test_box 做了演示,試著將 img 的 width: 100% 拿掉,會發現父層的 .test_img 盒子被蒲公英圖片撐開了。
另外,在練習 display 的過程中,運用了一些本篇筆記沒有紀錄的內容,關於排版的練習與使用,這邊是參考 justify-content - 決定主軸對齊方式
  • display: flex;
  • flex-direction: eow;
  • justify-content: space-between;
  • align-items: center;

總結

透過本次習作,能夠瞭解 HTML element 基礎概念,並且在規劃 HTML、CSS 時理解以前看不到的盲點,希望這篇筆記也對初學 CSS Dispaly 的你有所幫助。
如果你喜歡本篇筆記,歡迎一起練習 本篇習作題目:運用 CSS Display 屬性,設計一個具有 LOGO 、按鈕的選單。
Practice make perfect, 我是正在自我習作中的 Draw,我們下篇見 🙇🏻

延伸學習資源及參考

即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
avatar-img
5會員
10內容數
從零開始,記錄網頁設計的學習過程。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
在本章中,我們探討了CSS Grid佈局的基本概念和應用。CSS Grid提供了一個強大而靈活的二維佈局系統,使得處理複雜的網頁佈局變得更加簡單和直觀。我們學習了如何設置Grid容器和Grid項目,以及如何使用各種Grid屬性來定義和管理佈局。
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
在學習 CSS 的過程中,Padding 與 Margin 是兩個經常出現的名詞,但對於初學者來說,可能會有些難以理解。因此,本篇文章將解釋這兩個非常重要的 CSS 屬性。當你掌握後,便能設計出更具層次或易讀的網頁。
CSS Box Model 是在 CSS 裡面,html 的每個元素都可被視作為一個盒子,然後可以針對這個盒子去做調整,看以下圖片: 簡單來說margin就是一個是外邊距,與外層元素的間距 Margin 用於控制元素與其周邊元素的間隔,可以設定為正數(增加與其他元素的距離)、負數(減少與其他
前言 今天課程要來學習,在 .css 設計樣式後,怎麼透過選擇器,讓 .html 可以有所配對,經過這一步後,便可以開始學習,如何正式設計 .css 了。 選擇器 介紹 還記得上次課程,我們在 .css 檔案中,撰寫的程式碼嗎?讓我們來複習看看: .highlight { co
Thumbnail
在 CSS 的開發過程中,重複使用如顏色、字體大小等值是常見的需求。為了提高程式碼維護性和靈活性,就需要用到 CSS 變量了,CSS 變量可以讓你在樣式表中儲存可重用的值。本文將介紹 CSS 變量的概念、使用方法,以及它對撰寫 CSS 的影響。
Thumbnail
您對前端有興趣,對CSS不陌生。CSS新特性前應瞭解基本內容。CSS屬性制定經歷過程,瀏覽器私有前綴及處理,開發者對新特性漸進增強,優雅降級處理,Web標準定義、作用等。
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
在本章中,我們探討了CSS Grid佈局的基本概念和應用。CSS Grid提供了一個強大而靈活的二維佈局系統,使得處理複雜的網頁佈局變得更加簡單和直觀。我們學習了如何設置Grid容器和Grid項目,以及如何使用各種Grid屬性來定義和管理佈局。
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
在學習 CSS 的過程中,Padding 與 Margin 是兩個經常出現的名詞,但對於初學者來說,可能會有些難以理解。因此,本篇文章將解釋這兩個非常重要的 CSS 屬性。當你掌握後,便能設計出更具層次或易讀的網頁。
CSS Box Model 是在 CSS 裡面,html 的每個元素都可被視作為一個盒子,然後可以針對這個盒子去做調整,看以下圖片: 簡單來說margin就是一個是外邊距,與外層元素的間距 Margin 用於控制元素與其周邊元素的間隔,可以設定為正數(增加與其他元素的距離)、負數(減少與其他
前言 今天課程要來學習,在 .css 設計樣式後,怎麼透過選擇器,讓 .html 可以有所配對,經過這一步後,便可以開始學習,如何正式設計 .css 了。 選擇器 介紹 還記得上次課程,我們在 .css 檔案中,撰寫的程式碼嗎?讓我們來複習看看: .highlight { co
Thumbnail
在 CSS 的開發過程中,重複使用如顏色、字體大小等值是常見的需求。為了提高程式碼維護性和靈活性,就需要用到 CSS 變量了,CSS 變量可以讓你在樣式表中儲存可重用的值。本文將介紹 CSS 變量的概念、使用方法,以及它對撰寫 CSS 的影響。
Thumbnail
您對前端有興趣,對CSS不陌生。CSS新特性前應瞭解基本內容。CSS屬性制定經歷過程,瀏覽器私有前綴及處理,開發者對新特性漸進增強,優雅降級處理,Web標準定義、作用等。