close

網頁程式設計 學習紀錄(八) CSS基本語法與常用屬性

包含以下六個部分:

  1. CSS的演進
  2. CSS樣式規則與選擇器
  3. 連結 HTML 與 CSS 樣式表
  4. 選擇器的類型
  5. 樣式表的串接順序
  6. 常用的CSS屬性

1.CSS的演進

CSS(Cascading Style Sheets,串接樣式表、階層樣式表)由W3C提出

W3C鼓勵網頁設計人員使用HTML定義網頁內容、CSS定義網頁外觀

CSS1約有50個推薦屬性,包含文字、 字型、色彩、背景等等

CSS2約120個屬性,加入相對定位、絕對定位、媒體類型等等

CSS2.1修正CSS2的錯誤、加入一些新的屬性

CSS3根據屬性分類區分成不同模組來進行規格化

2.CSS樣式規則與選擇器

CSS樣式表是由一條條的樣式規則組成其中包含兩個部分:選擇器(selector)、宣告(declaration)

 

選擇器   {宣告   ;宣告   }
HTML元素 {屬性:值;屬性:值}
body {color:white;background:red}

(1)選擇器

用來指定樣式規則所要套用的對象,也就是HTML元素

(2)宣告

用來HTML元素的樣式,以大括號括起來,裡面包含:屬性:值

若不只一個宣告,則使用;(分號)連結 

 

以下為範例程式碼:

<!DOCTYPE html>
<html>
<head>
    <title>CSS樣式</title>
    <style type="text/css">
        h1 {color: red; font-family:標楷體}
    </style>
</head>
<body>
    <h1>CSS樣式</h1>
</body>
</html>

16.JPG

(3)CSS注意事項

若屬性的值包含數字(0-9)、小數點(.)、減號(-)以外的字元,例如(空白、換行),那麼屬性的值前後必須加上雙引號或單引號

CSS會區分英文字母大小寫,建議為值醫治的命名原則,一般是採用字中大寫,例如、myName

CSS的註解符號為 /* */ 

 

 

3.連結 HTML 與 CSS 樣式表

連結HTML與CSS樣式表有以下四種方法:

  1. 在HTML的<head>元素裡面嵌入樣式表
  2. 使用HTML的style屬性指定樣式表
  3. 將樣式表放在外部檔案,然後使用 @import 指令匯入 HTML文件
  4. 將樣式表放在外部檔案,然後使用<link>元素連結至 HTML文件 

 

(1)在HTML的<head>元素裡面嵌入樣式表

可以在 HTML 文件的 <head>元素中使用<style>元素嵌入樣式表

這邊將HTML文件的文字色彩指定為白色,背景色彩指定為藍色

以下為範例程式碼:

<!DOCTYPE html>
<html>
<head>
    <title>head元素裡面嵌入樣式表</title>
        <style type="text/css">
            body {color: white; background: blue}
        </style>
</head>
<body>
    <h1>head元素裡面嵌入樣式表</h1>
</body>
</html>

(2)使用HTML的style屬性指定樣式表

也可以使用HTML元素的style屬性指定樣式表

以下為範例程式碼:

<!DOCTYPE html>
<html>
<head>
    <title>使用HTML的style屬性指定樣式表</title>
</head>
<body style="color: white; background: blue">
    <h1>使用HTML的style屬性指定樣式表</h1>
</body>
</html>

(3)將樣式表放在外部檔案,然後使用 @import 指令匯入 HTML文件

將樣式表放在外部檔案

這邊將以下程式碼另外存在一個名為body.css的檔案中:

body
{
    color: white;
    background: blue
}

這邊將在HTML文件<head>元素中使用<style>元素和@import url("檔名.css")ㄤ;指令匯入CSS樣式表:

<!DOCTYPE html>
<html>
<head>
    <title>將樣式表放在外部檔案,然後使用 @import 指令匯入 HTML文件</title>
    <style>
        @import url("body.css");
    </style>
</head>
<body>
    <h1>將樣式表放在外部檔案,然後使用 @import 指令匯入 HTML文件</h1>
</body>
</html>

(4)將樣式表放在外部檔案,然後使用<link>元素連結至 HTML文件

除了用匯入的方式,也可以將樣式表連結至HTML文件

這邊使用<link>元素,若要連結多個樣式表檔案只要多寫幾個<link>即可

以下為範例程式碼: 

<!DOCTYPE html>
<html>
<head>
    <title>將樣式表放在外部檔案,然後使用<link>元素連結至 HTML文件</title>
    <link rel="stylesheet" type="text/css" href="body.css">
</head>
<body>
    <h1>將樣式表放在外部檔案,然後使用<link>元素連結至 HTML文件</h1>

</body>
</html>

4.選擇器的類型

選擇器用來指定樣式表所要套用的對象,根據不同對象又有不同的類型

 

(1)類型選擇器

類型選擇器(type selector)是以某個HTML元素作為套用對象

名稱必須與某個HTML元素符合

範例如下: 

h1 {color:blue; font-family:"標楷體"}

(2)後裔選擇器

後裔選擇器(descendant selector)是以某個HTML元素的子元素作為套用對象

這裡 <h1>有個子元素 <i>,後裔選擇器則表示要套用樣式規則的對象是<h1>的子元素<i>

範例如下: 

h1 i {color:blue}

(3)萬用選擇器

萬用選擇器(universal selector)是以 HTML文件中所有元素做為要套用的對象

其命名格式為(*)星號,通常用來為所有的元素加上樣式

下面這個萬用選擇器,為所有元素去除瀏覽器預設的留白與邊界: 

* {padding:0; margin:0}

(4)類別選擇器

類別選擇器(class selector)是以指定類別的HTML元素作為套用對象

其命名格是為「*(星號).(小數點)類別名稱」或是「.(小數點)類別名稱」

下面這個範例有兩個類別選擇器

第一個類別選擇器 "heading",就是class屬性為heading的HTML元素為套用對象

第二個類別選擇器 "comtent",就是class屬性為content的HTML元素為套用對象

程式碼如下:

<!DOCTYPE html>
<html>
<head>
    <title>類別選擇器</title>
    <style>
        .heading {font-size: 30px;color: maroon}
        .content {font-size: 35px;color: blue}
    </style>
</head>
<body>
    <p class="heading">這是heading類別</p>
    <P class="content">這是content類別</p>

</body>
</html>

18.JPG

(5)ID選擇器

ID選擇器(ID selector)以指定ID(識別字)的HTML元素作為套用對象

其命名格是為「*(星號)#(井字號)ID名稱」或是「#(井字號)ID名稱」

下面這個範例有兩個ID選擇器

第一個 ID選擇器 "button1",就是id屬性為button1的HTML元素為套用對象

第二個 ID選擇器 "button2",就是id屬性為button2的HTML元素為套用對象

程式碼如下:

<!DOCTYPE html>
<html>
<head>
    <title>ID選擇器</title>
    <style>
        #button1 {font-size: 30px;color: blue}
        #button2 {font-size: 20px;color: red}
    </style>
</head>
<body>
    <h1>ID選擇器測試</h1>
    <form>
        <input type="submit" id="button1" value="提交">
        <input type="reset" id="button2" value="重設">
    </form>

</body>
</html>

19.JPG

(6)屬性選擇器

屬性選擇器(attributes selector)指的是將樣式套用規則套用在有指定某個屬性的元素

例如下方範例程式碼,是將樣式規則套用在所有class屬性上:

<!DOCTYPE html>
<html>
<head>
    <title>屬性選擇器</title>
    <style>
        [class] { font-size: 30px;color:red}
    </style>
</head>
<body>
    <li class="one">一</li>
    <li class="one-two">一二</li>
    <li class="two one three">二一三</li>
    <li class="four one">四一</li>
</body>
</html>

 

20.JPG

對於屬性中的值套用樣式表有多種方法(後面括號則對應上方程式碼套用到的對象)

在CSS2.1定義了四種屬性選擇器:

[att]:所有att屬性的值都套用樣式規則(一、二、三、四)

[att=val]:只有att屬性中的val值套用套用樣式規則(一)

[att~=val]:只有att屬性中的val值,或以空白隔開並包含val值的元素套用樣式規則(一、三、四)

[att|=val]:只有att屬性中的val值,或以-字元連接並包含val值的元素套用樣式規則(一、二)

在CSS3又定義了三種屬性選擇器:

[att^=val]:將規則樣式套用在att屬性以val開頭的元素(一、二)

[att$=val]:將規則樣式套用在att屬性以val結尾的元素(一、四)

[att*=val]:將規則樣式套用在att屬性包含val的元素(一、二、三、四)

 

(7)虛擬類別選擇器

虛擬類別選擇器(pseudo-class selector)可以用來選擇不位於樹狀結構中的資訊,或其他簡單的選擇器無法表達的資訊

CSS提供了數個虛擬類別選擇器,通常以 : (冒號)開頭,後面跟著虛擬類別的名稱:

連結虛擬類別:包括 :link、:visited

使用者動作虛擬類別:包括 :hover、:focus、:active

目標虛擬類別:包括 :target

UI元素狀態虛擬類別:包括 :enabled、:disabled、:checked、:indeterminate

結構化虛擬類別:包括 :root、:nth-child()、:nth-last-child()、:nth-of-type()、:nth-last-of-type()、:first-child、

                                     :last-child、:first-of-type、:last-of-type、:only-child、:only-of-type、:empty

否定虛擬類別:包括 :not()

下面為一範例,其中先說明幾個要點

  • :link(尚未瀏覽的超連連結)
  • :visited(已經瀏覽的超連結) 
  • :hover(指標所指到的超連結)
  • :focus(取得焦點的超連結)
  • :active(被點選的超連結)  

:link 和 :visited 屬於連結虛擬類別,只能套用到<a>元素

:hover、:focus、:active屬於使用者動作虛擬元素,能夠套用到<a>與其他元素

越晚定義的樣式表,串接順序就越高:

  • :hover必須放在 :link 和 :visited 後面否則會被覆蓋
  • :active必須放在:focus後面否則也會被覆蓋

程式碼如下:

<!DOCTYPE html>
<html>
<head>
    <title>虛擬類別選擇器</title>
    <style>
        a {font-size: 30px}
        a:link {color: black}
        a:visited {color: green}
        a:hover {color: blue}
        a:focus {color: red}
        a:active {color: yellow}
    </style>
</head>
<body>
    <ul>
        <li><a href="1.html">link</a></li>
        <li><a href="csspseudo-class.html">visited</a></li>
        <li><a href="3.html">hover</a></li>
        <li><a href="4.html">active</a></li>
    </ul>
</body>
</html>

21.JPG

 

5.樣式表的串接順序

樣式表的來源有三種:

  • 作者:HTML文件的作者可以將樣式表嵌入HTML文件,也可以匯入或連結外部檔案
  • 使用者:使用者可以自訂樣式表,讓瀏覽器顯示此HTML文件
  • 使用者代理程式:諸如瀏覽器等使用者代理程式也會有預設的樣式表

不同來源的樣式表會串接在一起,但也可能會發生衝突

HTML文件的作者或使用者可以透過關鍵字「!important」提高樣式表的串接順序

以下是樣式表的串接順序:

  1. 使用者自訂且加上「!important」關鍵字的樣式表
  2.  作者指定且加上「!important」關鍵字的樣式表
  3. 作者指定的樣式表
  4. 使用者自訂的樣式表
  5. 瀏覽器預設的樣式表 

 

 

6.常用的CSS屬性

有字型屬性、文字屬性、清單屬性、色彩屬性、背景屬性、漸層屬性

(1)字型屬性

屬性 說明
font-family 指定HTML的文字字型
font-size 指定HTML的文字大小
font-style 指定HTML文字為 normal(正常)、oblique(粗體)、italic(斜體)
font-variant 指定HTML文字為 normal(正常)、small-caps(小型大寫字)
font-weight 指定HTML文字粗細
line-height 指定HTML元素的行高

 

(2)文字屬性

屬性 說明
text-indent 指定HTML元素的首行縮排
text-decoration 指定HTML元素的裝飾效果:none(無)、underline(底線)、overline(頂線)、line-through(刪除線)、blink(閃爍)
letter-spacing 指定HTML元素的字母間距
word-spacing 指定HTML元素的文字間距(單字與單字之間)
text-aling 指定HTML元素的文字對齊方式:left(靠左)、right(靠右)、center(置中)、justify(左右對齊)
text-transform 轉換HTML元素的英文字母大小寫:none(不做轉換)、capitalize(單字的第一個字母大寫)、uppercase(全部大寫)、lowercase(全部小寫)
text-shadow 指定HTML元素的文字陰影

 

(3)清單屬性

屬性 說明

 

list-style-type                             

指定清單的項目符號或編號類型:

disc(實心圓點)、circle(空心圓點)、square(實心方塊)、none(不顯示項目符號)、

decimal(從1開始的數字)、decimal-leading-zero(從0開始的數字)、

lower-roman(小寫羅馬字母)、upper-roman(大寫羅馬字母)、lower-alpha & lower-latin(小寫英文字母)、upper-alpha & upper-latin(大寫英文字母)、lower-green(小寫希臘字母)

list-style-image 指定圖片項目的圖檔名稱
list-style-position 指定項目符號與編號的位置:outside(文字區塊外部)、inside(文字區塊內部)
list-style 前述清單屬性的簡便表示法。Ex:ul {list-style:square outside}

 

(4)色彩屬性

CSS提供color屬性來指定顏色,語法如下:

color:色彩名稱 | rgb(rr, gg, bb) | #rrggbb | rgba(rr ,gg ,bb, alpha)
屬性 說明
rgb(rr,gg,bb) 以紅、綠、藍混和比例指定色彩
#rrggbb 指定方式的十六進位制表示法,以#符號開頭
rgb(rr,gg,bb,alpha) 這是CSS3的新指定方式,參數alpha用來表示透明度
opacity 指定HTML元素的透明度

 

(5)背景屬性

屬性 說明
background-color 指定HTML元素的背景色彩
background-repeat 指定HTML的元素背景圖片是否重複排列:repeat(水平及垂直)、repeat-x(水平重複)、repeat-y(垂直重複)、no-repeat(取消重複,顯示原圖大小)、space(水平及垂直,自動調整間距)、round(水平及垂直、自動調整圖片大小)
background-attachment 指定HTML元素的背景圖片是否隨網頁內容捲動:scroll(捲動)、fixed(固定)
background-position 指定HTML元素的背景圖片要從哪個位置開始顯示
background 簡便表示法

 

(6)漸層屬性

CSS3新增漸層表示法,語法如下:

linear-gradient():指定線性漸層:

linear-gradient(角度|方向, 色彩停止點1, 色彩停止點2,....)

radial-gradient():指定放射狀漸層:

radial-gradient(形狀 大小 位置, 色彩停止點1, 色彩停止點2,....)

repeating-linear-gradient():指定重複線性漸層

repeating-radial-gradient():指定重複放射狀漸層

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 ivankao 的頭像
    ivankao

    IvanKao的部落格

    ivankao 發表在 痞客邦 留言(0) 人氣()