Day01 - CSS入門看這篇


前言

下面的三張圖片,各自代表不同的網頁視覺風格。但是,您知道嗎?它們是出自同一個網頁HTML檔案,只是搭配不同的CSS就能做出如此不同風格的網頁。




CSS到底是什麼呢?用居住的房屋來比喻,HTML就是梁柱、牆壁、門窗等結構,但是它只是個毛坯屋而已,並不適合居住。人們在要搬進去住之前,需要花一點時間為牆壁上色粉刷、進行隔間、燈光配置..等,讓屋子更舒適點。 這些改變顏色、形狀、視覺、修飾的功能就是提昇要提昇房子的美感和可住性。相同道理,在網頁的世界裡,CSS就是網站美感的裝潢,提昇網頁的可看性!

W3C組織於1996年制定了CSS的標準,為CSS1;後來於1998年公佈CSS2標準。到了2011年公佈CSS3標準,大幅支援動畫及立體效果,過去依靠圖片或Flash物件來呈現 動態按鈕文字..等,現在只要透過CSS3的功能就辦得到。

CSS的優點

1.讓網頁的內容與格式脫鉤

早期的網頁設計常採用一些特殊技巧來呈現外觀,雖然表顯很亮眼,但因為內容與格式的依賴性太高,導致一旦要更新文字或圖片內容,格式也必須隨之修改,其結果需耗費大量的時間和人力去維護網頁。

近年來的作法是撰寫HTML檔時,只使用與內容結構相關的HTML標籤。例如<p>、<h1>、<span>,與格式相關的標籤盡量不要用,如<font>、<small>、<big>等標籤。凡是涉及變更格式的工作,一律改由CSS來做。

網頁的內容與格式脫鉤,當我們要改變網站所有按鈕的大小和特效,或是更改主要文字內容的顏色,只要在CSS進行相關屬性的修改,就會所有的網頁全部一起改,方便有效率的管理及維護。

2.避免重複撰寫程式碼

如果不用CSS,而是個別在HTML標籤上設定屬性,如<h2 color=blue>,如果<h2>出現100次,那麼color=blue也會一併出現100次。如此寫出來的程式碼會變得肥腫,無形中增加網頁運作的時間。

若使用CSS來做,只需要在CSS檔案定義一次,之後的<h2>標籤就會自動呈現CSS設定的屬性。如此,既可減少設計師重複編碼,程式碼更精簡,網頁開啟的速度會更快。

CSS的語法

CSS的使用方法由選擇器(Selector)和宣告(Declaration)兩個部份所組成,而宣告又分為屬性(Property)和值(Value),如下圖所示:

選擇器種類

選擇器是用來選擇這條規則要套用的對象,因對象不同,選擇器常被分為三類:


  1. 標籤選擇器(Tag Selector):HTML的元素作為選擇對象,所以他的名稱必定是某一個HTML的元素名稱。如:<p><div><span>等等,不可以使用自訂的名稱。
  2. 類別選擇器(Class Selector):此種選擇器的格式為.xxx,而xxx為自訂的名稱。比如:.navbar、.col-md-6、.my-5等。使用類別選擇器,代表以xxx類別為套用對象。例如:<p class="my-5">內容文字</p>,這樣寫法,則文字區塊的上面會空出2rem的邊界(margin),同樣文字區塊的下方也會空出2rem的邊界。
  3. 識別碼選擇器(ID Selector):這種選擇器的格式為#xxx,其中xxx為自訂的名稱。如:#type1、#gifstyle等。使用id選擇器,代表以id=xxx的元素為套用的對象。也就是,對於名稱為xxx的元素,套用此規則。

宣告

宣告(Declaration)是用來指定某個屬性(Property)的設定值(Value),屬性和設定值之間使用冒號:,跟HTML使用等號是不同的。

規則合併

  • 具有相同宣告的規則可以合併
    h2{color:blue;}
    h3{color:blue;}
    h4{color:blue;}
    
    由於h2、h3、h4都有相同的宣告,所以我們可以把它們合併為ㄧ
    h1,h2,h3{color:blue;}
    
  • 相同選擇器的規則可以合併
    body{color:brown;}
    body{text-align:center;}
    body{padding:2rem;}
    
    選擇器都是body,所以我們可以把不同的宣告合併為一
    body{color:brown;
    text-align:center;
    padding:2 rem;
    }
    

使用CSS的注意事項

  1. 所有的宣告都必須包含再大括弧{ }之中。
  2. 每一種宣告最後都必須用分號;結束,包含最後一個宣告也是。
  3. 若要加上註解,必須用/* 和 */圍住註解的文字。
  4. 若屬性值包含空格,必須用英文雙引號("")或英文('')單引號包圍起來。
    例如
    body{color:brown;    /*褐色字體*/
    text-align:center;   /*字體居中*/
    padding:2 rem;   /*邊界2rem*/
    }
    

如何開始使用CSS?

編輯HTML文件,開始納入CSS樣式

當我們認識了CSS並且了解它的功能之後,我們該如何使用CSS來美化我們正在編寫的網頁呢?以下有四種方式:


  1. 使用<style>標籤定義樣式
  2. 在標籤中使用style的屬性
  3. 將樣式表定義在CSS檔案,並以<link>標籤連結該檔案
  4. 將樣式表定義在CSS檔案,並以@import指令匯入該檔案
    接下來分別說明這四種方式

1.使用<style>標籤定義樣式(內部樣式)

第一種方式是比較入門簡易的方法,或是只針對特殊頁面進行單獨的樣式設定。如果網頁頁數很多,可能用其他方式會比較適合。用法為在<head></heaad>的段落之中,使用<style>標籤來定義樣式表,在style之後要加上type=text/css, 意思就是告知瀏覽器,從這一行開始是定義CSS的樣式,直到</style>出現為止。

<!DOCTYPE html>
<html lang="en">
<head>
 <style type=text/css>
  h1 {
    color: #fc5203;
    font-size: 30px;
    font-family: 標楷體;
  }
  body {
    color: darkcyan;
    font-size: 20px;
    font-family: 微軟正黑體;
  }
 </style>
</head>
<body>
<h1>如果有來生 ◎三毛</h1>
如果有來生,要做一棵樹,<br>
站成永恆。沒有悲歡的姿勢,<br>
一半在塵土裡安詳,<br>
一半在風裡飛揚;<br>
一半灑落蔭涼,<br>
一半沐浴陽光。<br>
非常沉默,非常驕傲。<br>
從不依靠,從不尋找。<br>
<p></p>
如果有來生,要化成一陣風,<br>
一瞬間也能成為永恆。<br>
沒有善感的情懷,沒有多情的眼睛。<br>
一半在雨裡灑脫,<br>
一半在春光裡旅行;<br>
寂寞了,孤自去遠行,<br>
把淡淡的思念統帶走,<br>
從不思念,從不愛戀;<br>
..................
</body>
</html>

上面的原始碼在瀏覽器會輸出成如下所示:

2.在HTML標籤中使用style屬性(行內樣式)

第一種定義樣式的方法,影響的範圍是整個網頁。如果我們想要各別標籤進行CSS的調整,該如何做呢?這時,就可以直接在HTML標籤內使用style來定義樣式。

<p style="color:red;fontsize:20px;">文字內容在這裡</p>

這種方式的效力只有到</p>為止,下一個標籤則需另外再定義,容易看來雜亂,當宣告數量多時,避免使用這方法。

3.用link標籤連結到css檔(外部樣式)

我們進一步把CSS定義另外存成一個檔案,然後再以<link>標籤來讀取css檔案的內容。
css檔案寫法如下

h2{color:red;
   font-size:20px;
   font-family:微軟正黑;
   text-align:center;
}

網頁的部份,則在head段落中,以<link>標籤呼叫css檔案,語法如下

<head>
<link rel="stylesheet" type="text/css" href="css檔案的URL">
</head>

4.用@import指令匯入css檔(外部樣式)

網頁中的@import必須在head段落的<style></style>之間,語法如下

<head>
     <style>
     @import url(css檔的URL);
     </style>

小結

透過CSS能夠完全改變使用者代理呈現元素的方式,這能夠透過display屬性在基本層級執行,也可以藉由連結鍵的方式來達成。使用者不需要到知道是透過外部樣式、內部樣式、或行內樣式。外部樣式真正的重要性在於提供作者集中放置網站呈現資訊的方式,讓所有的文件都指向相同的地方,不只讓網站更新與維護更加簡單,也能節省頻寬!

設計師要善用CSS的能力,需完全了解CSS的各項功能以及如何妥善使用,才能做出視覺美觀的網頁和作品!

#css #Web #html #code #design







你可能感興趣的文章

Integration Test on DB-Related Code with Docker Compose

Integration Test on DB-Related Code with Docker Compose

Laravel Homestead 設定

Laravel Homestead 設定

講 Webpack 之前,先講 module 概念

講 Webpack 之前,先講 module 概念






留言討論