亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > HTML > 正文

標記語言――網頁應用CSS樣式

2024-08-26 00:10:17
字體:
來源:轉載
供稿:網友
點擊這里返回武林網 HTML教程 欄目.想瀏覽CSS教程請點這里。
上文:標記語言——精簡標簽。Chapter 10 應用CSS
在第一部分主要的焦點放在標記語法的例子上,也探討了如何在標簽上應用CSS進行設計,指定樣式細節.在第二章,我們將討論幾種把CSS應用到一份文檔,網站,甚至是單一標簽上的做法.除此之外也會討論怎么對早先版本瀏覽器隱藏CSS內容,讓我們能在使用進階技巧時不會影響到能讓所有瀏覽器,設備讀取的標記結構.
在章節最后的"技巧延伸"單元,會介紹不必編寫script就能切換字體,色彩,做出多種主題的做法 -- 替換樣式表.如何將CSS應用到文件上?
現在要來探討四種把CSS應用到文檔上的不同做法,每個方法都有自己的優缺點,根據情況而定,四種方法都有可能是最佳選擇.這邊示范的每個方法都是用了合法的XHTML 1.0 Transitional 語法結構,<html>標簽以及<head>配置.
讓我們從方法A開始吧.方法A:<style>標簽

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Applying CSS</title>
<style type="text/css">
<![CDATA[
...CSS聲明放在這邊 ...
]]>
</style>
</head>

這個做法也成為內嵌樣式表,讓你能將所有CSS聲明直接寫在(X)HTML文件內,<style>標簽位于頁面<head>之內,可以放進任何你需要的樣式.
為type屬性指定的 text/css 能確保瀏覽器理解我們使用的樣式語言,是不能省略的,我們也使用W3C建議的CDATA注解語法,對無法處理樣式規則的瀏覽器隱藏這些內容(http://www.w3.org/TR/xhtml1/#h-4.8).
部分理解
使用方法A的重大缺點之一是:有些老舊瀏覽器(特別是Internet Expleror 4.X 和 Netscape 4.X)會盡全力顯示<style>標簽內指定的CSS效果,如果你用了任何只有最新瀏覽器支持的進階CSS布局,定位規則,那么就可能造成問題.如果把復雜的CSS規則放在<style>標簽中,就可能讓舊瀏覽器的使用者得到一片混亂,難以閱讀的排版結果.無法緩存
另一個內嵌樣式表的缺點是:放在頁面內,就必須在每次讀取頁面時一并下載,相對之下,稍后提供的其他方法能夠讓樣式表只需下載一次,往后直接使用瀏覽器的緩存.修改多次
由于內嵌式樣式表存儲在XHTML頁面內,如果在網站的許多頁面使用相同的樣式,就代表這些樣式會有許多相同的復本,如果需要變更這些樣式的話,就必須修改所有使用了相同樣式的頁面,記住!一次修改許多文檔會是件苦差事.方便開發
提到好處,我發現最初開始編寫,測試CSS時,以方法A把所有規則寫在我測試用的頁面里十分方便,這讓我能把標記,樣式放在同一個文檔里,方便經常修改,在測試完成后,我會以不同的方法將CSS應用到公開版本上,讓我們再來看看幾種方法.方法B:外部樣式表

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Applying CSS</title>
<link rel="stylesheet" type="text/css" href="styles.css" _fcksavedurl=""styles.css"" />
</head>

方法B示范了連接外部樣式表的做法:把所有CSS聲明內容放在單獨文檔中,接著在(X)HTML的<head>內使用<link>標簽引用它的內容.
我們以href屬性指定文檔的位置,這個屬性可以是相對路徑(像是上面的例子),或者是絕對路徑(填入樣式表完整的"http://"位置).同時留意<link>是單一標簽,或是空標簽,必須在最后以 / 自我閉合.分離文檔 = 方便維護
把所有的CSS規則放在與標記內容不同的文檔中有個明顯的優點:也就是任何對整個網站進行的樣式變動都能夠修改這個檔案完成,而不必像使用方法A的時候,為每個網頁重復修改CSS聲明.
當然,這對大規模網站來說是十分關鍵的,上百份,甚至上千份頁面都能共享單一文檔內的相同樣式.下載一次
鏈接外部樣式表的額外優點之一是:這個文檔通常只會被下載一次,之后瀏覽器就會使用緩存,能在重復瀏覽相同頁面或是其他引用了相同樣式表的頁面時,節省需要的下載時間.仍然無法完全隱藏
與方法A一樣,方法B仍然可有可能被老舊,只支持部分CSS功能的瀏覽器解讀,任何為最新瀏覽器設計的樣式都有可能在不支持的瀏覽器中造成大混亂.
嗯...這是我第二次提到這個問題了,下一個方法必須解決它,對吧?方法C:@import

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Applying CSS</title>
<style type="text/css">
<![CDATA[
@import "styles.css";
]]>
</style>
</head>

與方法B類似,使用@import能以相對路徑(像是上面的例子)或絕對路徑從外部文件導入CSS定義.
方法C與使用<link>標簽有著相同優點,由于樣式表放在外部文檔中,修改并更新單一文檔就能改變整個網站,而且能簡單快速地完成.外部樣式表會被瀏覽器緩存下來,為導入相同樣式表的所有頁面節省下載時間.捉迷藏
使用方法C的重大好處是:Netscape 4.X以下版本并不支持@import語法,因此會使被引用的CSS內容"藏起來",這肯定是個好用的技巧,因為我們能以此編寫進階CSS語法處理布局之類的設計細節,讓能夠處理的最新瀏覽器顯示它們,同時也能讓老舊瀏覽器忽視這些語法.
Netscape 4.x的問題在于:它認為它的CSS支持能力與真正支持的瀏覽器一樣好.因此,除了Netscape 4.x之外,我們都能讓瀏覽器自己決定是否顯示正確的效果.
這是以標準設計網站時的重點,盡量把結構化標記代碼與顯示方式分開,并且為支持的瀏覽器提供布局細節,其他樣式.老舊的瀏覽器則去他們能輕易讀取,顯示的結構內容,但不會處理為他們隱藏起來的進階CSS規則.打開樣式,關閉樣式
看看圖10-1和10-2,并且比較一下,這是我的個人網站使用完整CSS,接著關掉CSS的顯示效果(應該十分接近老舊瀏覽器的顯示效果),不使用CSS時的結構仍然十分明顯,所有人仍然容易閱讀,使用.如果我們沒有把顯示布局需要的CSS隱藏起來,那么舊版本瀏覽器的使用者或許就會拿到一團難以閱讀的內容.

圖10-1 我的個人網站,使用CSS

圖10-2 同一個頁面,拿掉CSS,古舊瀏覽器可能把它顯示成這樣結合方法B和方法C應用多重樣式表
有些時候,在一份文檔中引入許多分樣式表可能很有用,舉例來說,可以將所有布局規則放到一個文檔中,并且將字體設定放到另一個文檔中,對龐大,復雜的設計來說,這能使維護大量規則的工作變得更簡單.變色龍效果
在制作Fast Company雜志的網站時,我希望每個月更改網站的配色,以便配合當期雜志的封面圖片,為了簡化定期修改工作,因此我把所有與顏色相關的CSS規則集中到一個文檔里,并且把不會每個月修改的其他規則放進另一個文檔中.
每個月就能更簡單,快速的蓋好所有顏色,不必在構成設計的其他幾百條規則里慢慢找需要改動的內容.只要改好這個文檔,整個網站的色彩就會立刻改變.如何辦到
要結合方法B與方法C引入多重樣式表,做法是在頁面的<head>里使用<link>標簽引用CSS主體文檔,與方法B示范相同,鏈接到styles.css.
而styles.css的內容只簡單包含了幾條@import規則,引入所需要的其他CSS文件.
舉例來說,如果想引入三份樣式表,一份處理布局,一份定義字體,一份定義色彩,那么styles.css的內容則可能如下所示:

/*老舊的瀏覽器不會解讀這些導入規則 */
@import url("layout.css");
@import url("fonts.css");
@import url("colors.css");

如此一來,就能在整個網站使用相同的<link>標簽,只引用styles.css文件,這個文檔能以@import規則繼續導入其他樣式表,新樣式表只要加到這個文檔里,就能對整個網站發揮作用.
這讓更新,替換CSS變得非常簡單,舉例來說,如果在路上你突然想把CSS切成4個文件,你只需要改動這個文檔的@import規則,而不必修改所有XHTML標記源代碼.Lo-Fi和Hi-Fi樣式
以方法C的@import規則對老舊瀏覽器隱藏CSS時,還有另一個技巧可用.那就是使用CSS的層疊效應,以方法A或方法B提供老舊,最新瀏覽器都支持的Lo-Fi效果,接著以@import為其他支持的瀏覽器提供進階效果.
老舊的瀏覽器只會拿到他們能支持的內容,而新一點的瀏覽器則會拿到所有想使用的樣式.
接著我們看看這個技巧的代碼長什么樣:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Applying CSS</title>
<link rel="stylesheet" type="text/css" href="lofi.css" _fcksavedurl=""lofi.css"" />
<style type="text/css">
@import "hifi.css";
</style>
</head>

此處lofi.css應該包含基本的CSS規則,像是鏈接色彩,字體大小;而hifi.css則是包含進階規則,像是布局,定位,背景圖片等.
我們能同時傳送Lo-Fi和Hi-Fi版本的樣式,完全不必編寫script或者在服務器端以任何方式辨認瀏覽器版本.順序很重要
在標記源代碼內指定<link>與<style>標簽的順序很重要,CSS的Cascade(層疊)指的正是規則的優先權,這是根據出現順序決定的.
舉例來說,由于大多數最新的瀏覽器都同時支持兩種做法,因此會下載所有樣式表并套用里面的所有樣式,這時,在hifi.css里的樣式規則會覆蓋lofi.css對相同標簽指定的樣式,理由是什么?因為標記源碼里,hifi.css出現在lofi.css之后.
老舊瀏覽器會忽略hifi.css,因為不支持@import規則,因此他們只會使用lofi.css定義的樣式.擁抱層疊特性
以各種方式發揮CSS層疊特性帶來的好處,舉個例子,假設你整個網站都共用一個外部CSS進行布局,定位,設定字體,色彩等,這時你應該會在每個頁面以方法@import這個樣式表,為老舊瀏覽器隱藏這些規則.
如果網站上有一個頁面想共享布局和定位設定,但是需要調整字體或顏色.在(與網站上其他頁面不同的)這個頁面里,仍然能引入CSS主體文檔,在完成引用之后,我們緊接著引用第二個為這個頁面定義好特殊樣式的CSS文檔.任何在第二個CSS文件中的規則都會被優先采用,覆蓋第一個CSS文件為相同標簽所指定的樣式規則.
讓我們看看示例,master.css包含了整個網站結構,字體之類的CSS規則,而在custom.css中只在特定頁面引用,覆蓋幾個特殊標簽的樣式設定.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Applying CSS</title>
<style type="text/css">
@import "master.css";
@import "custom.css";
</style>
</head>

由于custom.css在標記源代碼中是第二個出現的,因此它為相同標簽指定的樣式會覆蓋master.css之內制定的內容.
舉例來說,假設在main.css之內我們要求<h1>標簽使用紅色serif字體,而<h2>則使用藍色serif字體.

h1 {
font-family: Georgia, serif;
color: red;
}
h2 {
font-family: Georgia, serif;
color: blue;
}

在某個特定頁面,我們只想改變<h1>標簽的樣式設定,沿用<h2>的樣式.那么在custom.css中,我們就只需要為<h1>聲明新樣式.

h1 {
font-family: Verdana, sans-serif;
color: orange;
}

這個聲明將會覆蓋master.css內的聲明(因為custom.css在它后面再引入).如果頁面先引入master.css之后再引入custom.css的話,<h1>標簽會使用橘色Verdana字體,而<h2>仍是藍色serif字體.因為后面這個在master.css里的聲明沒有被custom.css覆蓋.
CSS的層疊功能是個共享通用樣式的好工具,讓你能夠只覆蓋需要修改的規則.
方法D:行內樣式

<h1 style="font-family: Georgia, serif; color: orange;">This is a Title</h1>

這是我們所接觸的第四種CSS應用方法--行內樣式,幾乎任何標簽都能加上style屬性,讓你能直接對標簽應用CSS樣式規則,與上面的例子一樣.
由于行內樣式是層疊最底層,因此他們會覆蓋所有外部樣式的聲明,以及聲明在<head>的<style>標簽內的規則.
這是個在頁面各處加上樣式的簡單做法,但是使用它必須付出代價.樣式綁死在標簽上
如果在為頁面制定樣式的時候太依賴方法D,那么就沒有做到把內容和展示方式分離,回頭修改的時候必須深入標記源代碼,把CSS放到分離得到文件中,維護起來就簡單很多.
濫用方法D與使用<font>之類的顯示效果標簽污染標記源代碼沒什么差別,這些設計細節向來應該放在其他地方.小心使用
在現實情況中,當然有時用行內樣式的機會,在需要為頁面加上樣式,但是無法存取外部文件,或是不能修改<head>的時候,它能救你一命,或者暫時套用樣式,不打算與其它標簽共用的時候也會用到.
舉例來說,如果網站上有個預告慈善義賣的頁面,稍后就會取下,而你想為這個頁面設計一套獨特的樣式,那么或許就將這些樣式規則內嵌到標簽里,而不把他們加到永久樣式表里.
這就動手吧,不過要注意這些樣式無法輕易更改,或是橫跨頁面讓整個網站使用.
上一頁12 3 下一頁 閱讀全文
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲天堂av在线免费| 国产午夜精品久久久| 欧美精品在线网站| 69国产精品成人在线播放| 91精品国产综合久久香蕉的用户体验| 在线成人免费网站| 午夜精品久久久久久久99热浪潮| 日韩精品免费观看| 精品久久久久国产| 久久精品亚洲国产| 成人中文字幕+乱码+中文字幕| 久久精品国产久精国产一老狼| 国外成人在线视频| 国产欧美久久久久久| 亚洲人成电影网站色www| 日韩中文字幕在线播放| 久久最新资源网| 亚洲久久久久久久久久| 精品夜色国产国偷在线| 成人在线小视频| 亚洲级视频在线观看免费1级| 精品视频在线观看日韩| 中文字幕无线精品亚洲乱码一区| 一本色道久久88精品综合| 欧美午夜精品伦理| 久久色精品视频| 国产色综合天天综合网| 红桃视频成人在线观看| 久久天天躁日日躁| 日韩免费视频在线观看| 日韩欧美中文字幕在线观看| 亚洲精品小视频在线观看| 色多多国产成人永久免费网站| 日韩欧美精品网站| 68精品久久久久久欧美| 中文字幕亚洲在线| 国产ts人妖一区二区三区| 日韩亚洲精品电影| 久久久久久久一| 中文字幕欧美精品在线| www高清在线视频日韩欧美| 精品电影在线观看| 久久久在线免费观看| 亚洲视频网站在线观看| 国产日韩欧美在线视频观看| 伊人激情综合网| 国产色综合天天综合网| www.亚洲免费视频| 97免费中文视频在线观看| 欧美色播在线播放| 国产精品综合不卡av| 欧美大片在线看免费观看| 亚洲网站在线播放| 精品高清美女精品国产区| 91精品国产777在线观看| 精品小视频在线| 欧美激情性做爰免费视频| 日韩女在线观看| 欧美一级视频免费在线观看| y97精品国产97久久久久久| 日本韩国欧美精品大片卡二| 综合欧美国产视频二区| 欧美福利视频在线观看| 成人情趣片在线观看免费| 91色中文字幕| 欧美激情一区二区三区在线视频观看| 亚洲成av人影院在线观看| 亚洲天堂成人在线| 精品国产乱码久久久久久婷婷| 国产色视频一区| 欧美裸身视频免费观看| 成人羞羞国产免费| 欧美日韩中文字幕在线视频| 亚洲第一综合天堂另类专| 日韩电影免费在线观看中文字幕| 国产精品91一区| 亚洲字幕一区二区| 色伦专区97中文字幕| 亚洲精品一区在线观看香蕉| 欧美性猛交xxxx乱大交3| 国产一区二区激情| 亚洲欧美中文日韩在线v日本| 亚洲在线视频观看| 亚洲japanese制服美女| 国产亚洲欧洲高清一区| 欧美黑人性视频| 国产成人在线精品| 国产在线视频2019最新视频| 91精品国产综合久久久久久久久| 大胆欧美人体视频| 国产a级全部精品| 欧美精品在线极品| 中文.日本.精品| 午夜精品久久久久久99热| 亚洲成人中文字幕| 国内精品久久久久影院 日本资源| 青青久久av北条麻妃黑人| 欧美激情va永久在线播放| 日韩中文字幕视频在线| 久久夜色撩人精品| 92看片淫黄大片看国产片| 久久久久久一区二区三区| 欧美日韩亚洲系列| 黑人巨大精品欧美一区二区三区| 久久久中精品2020中文| 中文字幕欧美日韩| 欧美日韩中文在线观看| 在线观看国产成人av片| 一本大道香蕉久在线播放29| 欧美性生交大片免费| 啊v视频在线一区二区三区| 精品无人区太爽高潮在线播放| 久久久精品久久久| 国产噜噜噜噜噜久久久久久久久| 欧美有码在线观看| 久久99久久久久久久噜噜| 欧美性xxxxxx| 久久国产精品影视| 2019中文字幕免费视频| 91精品在线一区| 久久久久久九九九| 亚洲人成在线播放| 精品亚洲男同gayvideo网站| 欧美在线免费视频| 欧美亚洲在线观看| 日韩不卡在线观看| 日韩精品视频三区| 中文字幕亚洲无线码a| 久久久久中文字幕| 亚洲成人av在线| 国产成人一区二| 国产精品久久久久久搜索| 秋霞成人午夜鲁丝一区二区三区| 奇米4444一区二区三区| 国产伦精品一区二区三区精品视频| 欧美日韩在线第一页| 国产精品96久久久久久| 亚洲男人第一av网站| 久久久久久久久久国产精品| 日韩中文理论片| 91网站在线免费观看| 69**夜色精品国产69乱| 伊人亚洲福利一区二区三区| 成人免费观看49www在线观看| 555www成人网| 日韩av在线精品| 久久91精品国产91久久久| 国产精品高精视频免费| 在线观看日韩www视频免费| 不卡av日日日| 亚洲精品国产精品国产自| 亚洲欧美一区二区三区在线| 在线电影av不卡网址| 国产日韩欧美夫妻视频在线观看| 91香蕉嫩草神马影院在线观看| 亚洲人成绝费网站色www| 国产精品成人播放| 久久精品一偷一偷国产| 中文字幕国产精品久久| 精品国偷自产在线| 7777精品久久久久久| 中文字幕精品一区二区精品| 精品动漫一区二区三区| 91亚洲国产成人精品性色|