Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
模組基礎與常用 CSS.pdf
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Joseph Chiang
June 15, 2012
640
7
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
模組基礎與常用 CSS.pdf
Joseph Chiang
June 15, 2012
More Decks by Joseph Chiang
See All by Joseph Chiang
不断归零的前端人生 - 2016 中国软件开发者大会
josephj
1
430
Let's Redux!
josephj
4
320
Automatic Functional Testing with Selenium and SauceLabs
josephj
2
320
From Hacker to Developer
josephj
1
170
tmuxinator
josephj
0
240
JavaScript Promise
josephj
0
230
Be an Internet Person
josephj
9
590
F2E Evolution
josephj
55
3.3k
F2E for Enterprise
josephj
42
5.7k
Featured
See All Featured
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
The Spectacular Lies of Maps
axbom
PRO
1
800
Mobile First: as difficult as doing things right
swwweet
225
10k
From π to Pie charts
rasagy
0
210
Designing for Timeless Needs
cassininazir
1
250
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1.1k
AI: The stuff that nobody shows you
jnunemaker
PRO
8
710
First, design no harm
axbom
PRO
2
1.2k
Color Theory Basics | Prateek | Gurzu
gurzu
0
360
Code Review Best Practice
trishagee
74
20k
Music & Morning Musume
bryan
47
7.2k
Transcript
模組基礎與常用 CSS
1. HTML 模組 在 Yahoo! 每⼀一頁都是由許多的模組所構成
None
<div id=”nav”> <div class=”hd”> <h2>標題</h2> </div> <div class=”bd”> <p>內文</p> </div>
<div class=”ft”> <a href=”...”>更多... </a> </div> </div> 模組的結構
<div id=”nav”> <div class=”hd”> <h2>標題</h2> </div> <div class=”bd”> <p>內文</p> </div>
<div class=”ft”> <a href=”...”>更多... </a> </div> </div> <div id=”nav”> <div class=”hd”> <h2>標題</h2> </div> <div class=”bd”> <p>內文</p> </div> <div class=”ft”> <a href=”...”>更多... </a> </div> </div> 模組的結構
<div id=”nav”> <div class=”hd”> <h2>標題</h2> </div> <div class=”bd”> <p>內文</p> </div>
<div class=”ft”> <a href=”...”>更多... </a> </div> </div> <div id=”nav”> <div class=”hd”> <h2>標題</h2> </div> <div class=”bd”> <p>內文</p> </div> <div class=”ft”> <a href=”...”>更多... </a> </div> </div> 模組的結構 ⼀一個 ID 代表⼀一個模組 不能重複
<div id=”nav”> <div class=”hd”> <h2>標題</h2> </div> <div class=”bd”> <p>內文</p> </div>
<div class=”ft”> <a href=”...”>更多... </a> </div> </div> <div id=”nav”> <div class=”hd”> <h2>標題</h2> </div> <div class=”bd”> <p>內文</p> </div> <div class=”ft”> <a href=”...”>更多... </a> </div> </div> 模組的結構 ⼀一個 ID 代表⼀一個模組 不能重複 .hd, .bd, .ft 分別代表模組的 header、body、footer
#yhtw_masthead #ykpmt #ykpsb #ykpimt #ykpimqa #ykpimr #ykpadv #ykpug #ykpiht #ykpiht
#ykpsb •ykp 為知識+ 的 prefix •sb 為 search box 的縮寫
•檔案:inc/search_box.php
<div id=”ykpsb”> <div class=”bd clearfix”> <form ...> ... </form> <div
class=”extra”> ... </div> </div> </div> form .extra [HTML] <style> #ykpsb { margin-bottom:10px; } #ykpsb form { float:left; } #ykpsb .extra { float:right; } </style> [CSS] 因每個模組有 id,所以 CSS 可以寫得很 namespace 好處就是很安全,不同模組不會互相干擾
練習 1:HTML 模組 (3 Mins) http://josephj.com/training/ncu/html-module.html 1. 替此文章模組取個適合的 id 2.
加上 hd, bd, ft 的 class 3. 利用前頁的方法設定 CSS color:#369; background:#ffe; font:bold 16px;
2. CSS 浮動 float 是排版的常用技巧
過去:常用 <table> 來做到下面的版型: 靠左文字 靠右文字 <table border=”1”> <tr> <td align=”left”>靠左文字</td>
<td align=”right”>靠右文字</td> </tr> </table>
現在:使用 CSS 的 float 屬性來做到 <div id=”masthead” style=”border:solid 1px #000”>
<span style=”float:left”> 靠左文字 </span> <span style=”float:right”> 靠右文字 </span> </div> 靠左文字 靠右文字
但 float 之後的區塊是不會佔空間的 實際情況會是: 靠左文字 靠右文字 border 不會被文字的高度給撐開!
對 IE 的解法: 對上⼀一層設 zoom:1 <div id=”masthead” style=”zoom:1;border:solid 1px #000”>
<span style=”float:left”> 靠左文字 </span> <span style=”float:right”> 靠右文字 </span> </div>
對其他瀏覽器的解法: <div id=”masthead” style=”zoom:1;border:solid 1px #000”> <span style=”float:left”> 靠左文字 </span>
<span style=”float:right”> 靠右文字 </span> </div> <style> /* 作用是增加了⼀一個有 clear:both 屬性的區塊 */ #masthead:after { content:’’; display:block; clear:both; } </style>
練習 2:CSS 浮動(3 Mins) http://josephj.com/training/ncu/float.html 1. 標題浮到左邊 2. YUI 圖浮到右邊
3. 替整個模組設 border 4. 用前⼀一頁的方法清除 float border:solid 5px #ccc; font:bold 197%; IE : 在父節點設定 zoom1; 父節點: 父節點:after { content:’’; display:block; clear:both; }
None
3. CSS 背景圖 適當地將 <img> 改用 CSS background 可以讓 User
讀取更順暢
在 Yahoo! 所有裝飾性的圖都是 CSS 背景圖
在 Yahoo! 所有裝飾性的圖都是 CSS 背景圖
在網路很慢時 <img> 會把畫面卡住 background-image 則無此問題
background:[背景色] [url(圖檔路徑)] [x, y 位置] [重複]; background:#369 url(ico_yui.gif) left top
repeat-x; repeat-y no-repeat 0 100% 0 -12px background-color:#369; background-image:url(ico_yui.gif); background-position:left top; background-repeat:repeat-x; 或
練習 3:CSS 背景(3 Mins) http://josephj.com/training/ncu/background.html 1. 設定背景圖為 http://josephj.com/training/ncu/bg_nav.png
4. CSS 相對與絕對位置 不管是做圓角、位置微調都會用到
None
• position
• position • position:static; 預設
• position • position:static; 預設 • position:absolute; 絕對定位
• position • position:static; 預設 • position:absolute; 絕對定位 • position:relative;
相對定位
• position • position:static; 預設 • position:absolute; 絕對定位 • position:relative;
相對定位 • position:fixed;
• position • position:static; 預設 • position:absolute; 絕對定位 • position:relative;
相對定位 • position:fixed; • top, right, bottom, left 的配合
• position • position:static; 預設 • position:absolute; 絕對定位 • position:relative;
相對定位 • position:fixed; • top, right, bottom, left 的配合 • 在目前的位置往下移 5px position:relative; top:5px;
• position • position:static; 預設 • position:absolute; 絕對定位 • position:relative;
相對定位 • position:fixed; • top, right, bottom, left 的配合 • 在目前的位置往下移 5px position:relative; top:5px; • 整份文件中的右下角: position:absolute; right:0; bottom:0;
• position • position:static; 預設 • position:absolute; 絕對定位 • position:relative;
相對定位 • position:fixed; • top, right, bottom, left 的配合 • 在目前的位置往下移 5px position:relative; top:5px; • 整份文件中的右下角: position:absolute; right:0; bottom:0; • 可視區域的最下方(IE6不支援):
<div/> <div/> <div/> <div/> 什麼都沒設時(position:static;)
<div/> <div/> <div/> <div style=”position:absolute; bottom:0;right:0;”> 當對某個區塊設了 position:absolute; 時 就脫離原有區塊的範圍、不佔空間
<div style=”position:relative;” /> <div/> <div/> <div style=”position:absolute; bottom:0;right:0;”> 對母區塊設定 position:relative;
則會限制住 position:absolute; 的子區塊
練習 4:CSS 相對與絕對位置 http://josephj.com/training/ncu/position.html 1.將 li 設定為 position:relative; 2.將 img
設定為 position:absolute; 並 利用 top, right 做微調
5. CSS Hack 基本 針對不同瀏覽器做樣式處理
解決 IE 6,7 與其他瀏覽器 在樣式上的差異 • “bakground:gray \9”; • ⼀一般瀏覽器
• background:blue; • IE 6 與 7 都會套用 * 開頭的 CSS Rule • *background:red; • IE 6 會套用 _ 開頭的 CSS Rule IE 7 則不理會 • _background:green;
IE 6, IE7, Firefox 會有不同的底色 #article .bd { background:blue; *background:green;
_background:red; } FF, IE 6, IE 7, Safari... IE 6, IE 7 IE 6
練習 5:CSS Hack 基本 http://josephj.com/training/ncu/css-hack.html 1.讓 #article .bd 在 FF
的底色為 pink, IE7 為 green, IE6 為 red
6. CSS 圓角 最不會干擾到內容的作法
CSS Sprites:將多張背景合成⼀一張 http://www.lesliesommer.com/wdw07/html/images/cr_big.gif
CSS Sprites:將多張背景合成⼀一張 http://www.lesliesommer.com/wdw07/html/images/cr_big.gif
72px 18px 18px CSS Sprites:將多張背景合成⼀一張 http://www.lesliesommer.com/wdw07/html/images/cr_big.gif
72px 18px background:100% 0; background:100% -18px; 18px background:0 -36px; background:0
-54px; CSS Sprites:將多張背景合成⼀一張 http://www.lesliesommer.com/wdw07/html/images/cr_big.gif
None
•待製品:⼀一個普通的模組 http://josephj.com/training/ncu/round-corner.html •了解原理:替四個角上背景色 http://josephj.com/training/ncu/round-corner-sample.html •融會貫通:放上圓角圖、定位 http://josephj.com/training/ncu/round-corner-sample-2.html •完成品:去除背景色 http://josephj.com/training/ncu/round-corner-sample-3.html