41
CSS 基基基基基基基 ( ) 2011.5.24 鄒鄒鄒 Hsinyu Chou [email protected]

CSS 分享 (2) CSS 基本概念與語法

  • Upload
    -

  • View
    3.989

  • Download
    3

Embed Size (px)

Citation preview

Page 1: CSS 分享 (2) CSS 基本概念與語法

CSS 基本概念與語法 ( 一 )

2011.5.24鄒心瑜 Hsinyu [email protected]

Page 2: CSS 分享 (2) CSS 基本概念與語法

CSS (Cascading Style Sheet) 的作用• HTML 是網頁的骨幹, CSS 控制外觀• 把內容和樣式分開

HTML + CSS = 網頁

Page 3: CSS 分享 (2) CSS 基本概念與語法

為什麼要用 CSS

同時維護很多網頁時,易於修改讓 HTML 更合語意,因為網頁是同時要給人和機器讀的。便於配合 javascript 套件 ( 如 jQuery) ,發展成動態網站介面

http://jqueryui.com/themeroller/簡潔的原始碼節省頻寬和硬碟空間有助於提升網站排名

為什麼不用 table 排版• 避免網頁內容在奇怪的地方被切開 ( 不合語意 )• 無法發展成動態介面 ( 你能任意搬動 <td> 顯示的位置和順序嗎? )• 大量重複的原始碼,浪費頻寬、不利網站排名

Page 4: CSS 分享 (2) CSS 基本概念與語法

• Table 排版的原始碼

• CSS 排版的原始碼CSSHTML

Page 5: CSS 分享 (2) CSS 基本概念與語法

Table 並不是完全無用,你可以– 用 table 來排版 e-dm 、電子

報、邀請函,任何需要透過e-mail 寄出的網頁

– 非版面佈局,符合 table 含意的內容 ( 例:日程表、價目表 )

Page 6: CSS 分享 (2) CSS 基本概念與語法

良好的習慣與步驟

分析內容

( 佈局 )

處理 HTML

( 骨幹 )

處理 CSS

( 外觀 )

介面特效

( 互動 )

先處理 HTML ,再處理 CSS 。

Page 7: CSS 分享 (2) CSS 基本概念與語法

良好的習慣與步驟

先分析,再動手。分析網頁內容結構

撰寫 HTML

#wrap

#header

#footer

h2Image

Image

h2h3paragraph

h2

#navigation

paragraph

paragraphimage

Page 8: CSS 分享 (2) CSS 基本概念與語法

良好的習慣與步驟

建立網站檔案架構

css style.css

images header.jpg

footer.jpg

sidebar.jpg

js global.js

webroot

Index.html

about.html

…….

…….

…….

…….

Page 9: CSS 分享 (2) CSS 基本概念與語法

必備工具

Firefox 瀏覽器 http://moztw.org/

Firebug: 透視 CSS 運作情形,網站設計師必備https://addons.mozilla.org/zh-tw/firefox/addon/firebug/ (Google Chrome 和 IE 也有各自的工具,但 Firebug 功能最強 )

文字編輯器 (Dreamweaver, Aptana…)

切圖軟體 (Photoshop, Fireworks…)

( 練習 ) http://dl.dropbox.com/u/8057029/CSS-ex1/CSS-ex1.zip

Page 10: CSS 分享 (2) CSS 基本概念與語法

結合 CSS 與網頁

記得先 Reset CSS ,讓瀏覽器從原點開始Eric Meyer Reset, YUI Reset(Yahoo!)

Page 11: CSS 分享 (2) CSS 基本概念與語法

結合 CSS 與網頁

三種方法– Inline( 行內 CSS)<div style=“font-size:12px;color:#ff6600”>I am orange</div>

– Embed(html 內 CSS)<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Welcome to Viva!</title><style type="text/css">

.style1 {color: #ff6600}

.footer{height:150px}</style></head>

– Link( 外連 CSS)<link rel=“stylesheet” href=“style.css”; type=“text/css”; />

Page 12: CSS 分享 (2) CSS 基本概念與語法

結合 CSS 與網頁

誰最優先?如果前述三個地方,對同一元件的設定有衝突,結果會如何?

“ 層疊 (Cascading)”= 不同的屬性,加在一起

“覆寫 (Overwrite)”= 相同的屬性,採用離自己比較近的

Inline( 行內 CSS) > Embed(html 內 CSS) > Link( 外連 CSS)

Page 13: CSS 分享 (2) CSS 基本概念與語法

HTML 網頁中的元件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title> 文件標題 </title></head>

<body>

</body></html>

?

• 一份 html 文件中會有什麼?

Page 14: CSS 分享 (2) CSS 基本概念與語法

#wrap

#header

#footer

h2Image

Image

h2h3paragraph

h2

#navigation

paragraph

paragraphimage

Page 15: CSS 分享 (2) CSS 基本概念與語法

HTML 網頁中的元件

常用內建元件 (html tag)– <h1>~<h6>: 標題– <p>: 文章段落– <ul>< li>: 條列式內容,常用來做選單– <a> 連結– <img> 圖片– <span> 區段– Form 元件 (<input>,<select>,<textarea> 等 )– table 元件

Page 16: CSS 分享 (2) CSS 基本概念與語法

HTML 網頁中的元件

客製元件的主角 : <div>– 要幫 div 取名字,外部 CSS 才能選到它、控制它

<div id=“header” >welcome to Viva!</div><div class=“article” >I am orange</div>

Page 17: CSS 分享 (2) CSS 基本概念與語法

<h1>

<img>

<h2>

<div class=“feature”>

<p>

<h2>

<p>

<div class=“section”> <p>

<a>

<div id=“footer”>

<h2>

Page 18: CSS 分享 (2) CSS 基本概念與語法

CSS 選擇符 (Selector) : 選到對的東西

注意:• 整份 html 不能有兩個相同的 id, 但可以有很多相同的 class• id 或 class 的名稱不能以數字開頭,大小寫有區分• id 或 class 的名稱最好具有語意

• 所有網頁幾乎都會有的元素#header #footer#content#nav

.red { color: #ff0000 ;}

.detail { color:#ff0000;}X

Page 19: CSS 分享 (2) CSS 基本概念與語法

語法– 內建 HTML tag

– Class(.)

– Id(#)CSS 選擇符 (Selector) : 選到對的東西

h1 { font-size: 19px ;}選擇符 屬性 值 分號

.article { color: #666666 ; }選擇符 屬性 值 分號

#header { height: 100px ; }選擇符 屬性 值 分號

Page 20: CSS 分享 (2) CSS 基本概念與語法

CSS 選擇符 (Selector) : 選到對的東西

h1{font-size:19px;}

.article {color:#666666;}

CSS HTML

<div class=“article” >This year we maintain…

</div><div class=“feature” >

This spring…</div>

<h1> welcome to Viva! </h1><p>Welcome to Viva! This...</p>

#header {height:100px} <div id=“header” >Welcome to Viva!

</div><div class=“header” >

This year we maintain…</div>

Page 21: CSS 分享 (2) CSS 基本概念與語法

CSS 選擇符 (Selector) : 選到對的東西

CSS HTML

p.section {margin:10px} <p class=“section” >Welcome to Viva! This...

</p><span class=“section” >

Welcome to Viva! This...</span>

.section {margin:10px} <p class=“section” >Welcome to Viva! This...

</p><span class=“section” >

Welcome to Viva! This...</span>

Page 22: CSS 分享 (2) CSS 基本概念與語法

CSS 選擇符 (Selector) : 選到對的東西

CSS HTML

.section p{margin:10px} <div class=“section” > <p>Welcome to Viva! This... </p></div>

#comment.section {margin:10px} <div id=“comment” class=“section”>Hi David,…

</div>

Page 23: CSS 分享 (2) CSS 基本概念與語法

• 更多選法– 群組:多個元件,一起設定,用逗號分開

h1, h2, p{color:#666666}

– 萬用選擇符:*{color:#666666}#footer *{font-size:13px}

CSS 選擇符 (Selector) : 選到對的東西

Page 24: CSS 分享 (2) CSS 基本概念與語法

• 更多選法– 子嗣選擇符:一層包一層

– 相鄰子嗣選擇符 (IE7 以上 ) :

CSS 選擇符 (Selector) : 選到對的東西

CSS HTML.section p{margin:10px} <div class=“section”>

<p>Welcome to Viva! This is..</p> <a href=“about.html”>more..</a> <p>Our customers…</p></div>

CSS HTML.section > p{margin:10px} <div class=“section”>

<p>Welcome to Viva! This is..</p> <a href=“about.html”>more..</a> <p>Our customers…</p></div>

Page 25: CSS 分享 (2) CSS 基本概念與語法

• 更多選法– 相鄰選擇符 (IE7 以上 ) :

CSS 選擇符 (Selector) : 選到對的東西

CSS HTML.h1+p{margin:10px} <p>Our customers…</p>

<h1>Welcome to Viva! This is..</h1><p>Our customers…</p>

Page 26: CSS 分享 (2) CSS 基本概念與語法

• 更多選法– 屬性選擇符 (IE7 以上 ) :

CSS 選擇符 (Selector) : 選到對的東西

CSS HTMLinput[type=“text”]{border:1px solid

#000}<input type=“text” /><input type=“radio” />

<input type=“text” />

<input type=“radio” />

Page 27: CSS 分享 (2) CSS 基本概念與語法

• Pseudo-class– 與連結 <a> 相關

a:link 有連結a:visited 已造訪a:hover 滑鼠滑過去a:active 按下去時

請按照順序

CSS 選擇符 (Selector) : 選到對的東西

Page 28: CSS 分享 (2) CSS 基本概念與語法

• 誰最優先?– 寫在最後的優先– 選擇範圍越小的優先– 針對 id 的設定比 class 優先

– Inline( 行內 CSS) > Embed(html 內 CSS) > Link( 外連 CSS)

CSS 選擇符 (Selector) : 選到對的東西

div p{color:#666666;}

div.feature p{color:#777777}div#content p{color:#888888}

div#content.feature p{color:#999999}

<div id=“content” class=“feature”> <p>Welcome to Viva! This is..</p> <p>Our customers…</p></div>

Page 29: CSS 分享 (2) CSS 基本概念與語法

• 誰最優先?“CSS Selector Specificity”

CSS 選擇符 (Selector) : 選到對的東西

Page 30: CSS 分享 (2) CSS 基本概念與語法

• 繼承– 子孫元件會繼承外層父輩元件的屬性設定,除非用更小範

圍的選擇器來覆蓋 (overwrite)– 並不是所有屬性都會被繼承,如背景

CSS 選擇符 (Selector) : 選到對的東西

http://www.slideshare.net/randyconnolly/web-i-06-css

Page 31: CSS 分享 (2) CSS 基本概念與語法

• 繼承

CSS 選擇符 (Selector) : 選到對的東西

<body>... <p> Welcome to Viva! This is..

<a href=“…”>read more…</a> </p> <p> Our customers…</p>

...</body>

body{ font-size:13px; color:gray;}

Page 32: CSS 分享 (2) CSS 基本概念與語法

CSS 屬性:哪些東西可被控制?

種類控制區塊

控制文字屬性

#header { height: 100px; }選擇符 屬性 值

顯示與定位

http://www.w3schools.com/css/css_reference.asp

Page 33: CSS 分享 (2) CSS 基本概念與語法

width height

CSS 屬性:哪些東西可被控制?• Box Model

Page 34: CSS 分享 (2) CSS 基本概念與語法

CSS 屬性:哪些東西可被控制?• Box Model

margin

paddingLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum

– 區塊屬性.section{

width: 400px;height: 300px;margin: 15px;padding: 10px;background: url(bg.jpg) no-repeat 0 0;border: 2px solid #000;

}width

height

Page 35: CSS 分享 (2) CSS 基本概念與語法

CSS 屬性:哪些東西可被控制?• 簡寫 (short hand)

– 顏色碼的簡寫

margin: 15px 10px 5px 20px;

margin: 15px 10px 5px;

margin: 15px 10px;

上 右 下 左 ( 順時針 )

上 左右 下

上下 左右

padding 亦同

border: 2px solid #0AD;

粗細 款式 顏色(= #00AADD)

#00AADD = #0AD

Page 36: CSS 分享 (2) CSS 基本概念與語法

CSS 屬性:哪些東西可被控制?• Box Model

– 注意 : IE6 預設的 Box Model 與其他瀏覽器不同,寬度的數值包含內間距 (padding)

width

paddingLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum

height

Page 37: CSS 分享 (2) CSS 基本概念與語法

CSS 屬性:哪些東西可被控制?• 注意 : display:block 與 display:inline

– display 為 block 的元件才能設寬與高,寬度未設定時自動佔滿整行

– 預設為 block 的 html 元件 :<div>,<h1>~<h6>,<p>,<ul>

– display 為 inline 的元件無法設寬與高,它的寬度跟著框內文字的長度變長,而高則是被 line-height影響,會與其他元素並排

– 預設為 inline 的 html 元件 :<span>,<a>

h1

p

ul

span a span text text

Page 38: CSS 分享 (2) CSS 基本概念與語法

CSS 屬性:哪些東西可被控制?• 文字

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum

– 文字屬性.section{

color: #554400;font-size: 13px;font-family: Arial;font-style: italic;font-weight: blod;line-height: 120%;text-align: left;text-indent:0;verticle-align: baseline;

}

Page 39: CSS 分享 (2) CSS 基本概念與語法

不會寫,去哪裡查?

W3school (w3school→Learn CSS →CSS Reference)http://www.w3schools.com/css/css_reference.asp中文版 –http://www.w3school.com.cn/css/css_reference.asp

CSS Property Indexhttp://www.blooberry.com/indexdot/css/propindex/all.htm

Page 40: CSS 分享 (2) CSS 基本概念與語法

CSS 練習<h1>

<img>

<h2>

<div class=“feature”>

<p>

<h2>

<p>

<div class=“section”>

<p>

<a>

<div id=“footer”>

<h2>

http://dl.dropbox.com/u/8057029/CSS-ex1/CSS-ex1.zip

Page 41: CSS 分享 (2) CSS 基本概念與語法

下回預告

更多屬性、值、單位Postion 定位 (static, relative, absolute)浮動區塊 (float/clear)排版實作