精心整理了之前的css學習筆記,僅供學習參考使用,禁止商業用途 [TOC] CSS 簡介 1.CSS 簡介 CSS 概述 CSS 指層疊樣式表 (Cascading Style Sheets) 樣式定義如何顯示 HTML 元素 樣式通常存儲在樣式表中 把樣式添加到 HTML 4.0 中,是為瞭解決內 ...
目錄
- CSS 簡介
- CSS樣式
- CSS 框模型
- CSS 定位
- CSS 選擇器
- CSS 高級
- CSS3 教程
精心整理了之前的css學習筆記,僅供學習參考使用,禁止商業用途
CSS 簡介
1.CSS 簡介
CSS 概述
CSS 指層疊樣式表 (Cascading Style Sheets)
- 樣式定義如何顯示 HTML 元素
- 樣式通常存儲在樣式表中
- 把樣式添加到 HTML 4.0 中,是為瞭解決內容與表現分離的問題
- 外部樣式表可以極大提高工作效率
- 外部樣式表通常存儲在 CSS 文件中
- 多個樣式定義可層疊為一
層疊次序
當同一個 HTML 元素被不止一個樣式定義時,會使用哪個樣式呢?
- 瀏覽器預設設置
- 外部樣式表
- 內部樣式表(位於
<head>
標簽內部) 內聯樣式(在 HTML 元素內部)
4 擁有最高的優先權。
2.CSS 基礎語法
CSS 語法
CSS 規則由兩個主要的部分構成:選擇器,以及一條或多條聲明。
selector {declaration1; declaration2; ... declarationN }
- 每條聲明由一個屬性和一個值組成。
- 屬性(property)是您希望設置的樣式屬性(style attribute)。
- 每個屬性有一個值。
- 屬性和值被冒號分開。
selector {property: value}
下麵這行代碼的作用是將h1
元素內的文字顏色定義為紅色,同時將字體大小設置為 14
像素。
在這個例子中,h1
是選擇器,color 和 font-size 是屬性,red 和 14px 是值。
h1 {color:red; font-size:14px;}
下麵的示意圖為您展示了上面這段代碼的結構:
提示:請使用花括弧來包圍聲明。
值的不同寫法和單位
- 除了英文單詞 red,我們還可以使用十六進位的顏色值 #ff0000:
p { color: #ff0000; }
- 為了節約位元組,我們可以使用 CSS 的縮寫形式:
p { color: #f00; }
- 我們還可以通過兩種方法使用 RGB 值:
p { color: rgb(255,0,0); }
p { color: rgb(100%,0%,0%); }
請註意,當使用 RGB 百分比時,即使當值為 0 時也要寫百分比符號。但是在其他的情況下就不需要這麼做了。比如說,當尺寸為 0 像素時,0 之後不需要使用 px 單位,因為 0 就是 0,無論單位是什麼。
記得寫引號
提示:如果值為若幹單詞,則要給值加引號:
p {font-family: "sans serif";}
多重聲明:
提示:如果要定義不止一個聲明,則需要用分號將每個聲明分開。下麵的例子展示出如何定義一個紅色文字的居中段落。最後一條規則是不需要加分號的,因為分號在英語中是一個分隔符號,不是結束符號。然而,大多數有經驗的設計師會在每條聲明的末尾都加上分號,這麼做的好處是,當你從現有的規則中增減聲明時,會儘可能地減少出錯的可能性。就像這樣:
p {text-align:center; color:red;}
你應該在每行只描述一個屬性,這樣可以增強樣式定義的可讀性,就像這樣:
p {
text-align: center;
color: black;
font-family: arial;
}
空格和大小寫
- 大多數樣式表包含不止一條規則,而大多數規則包含不止一個聲明。多重聲明和空格的使用使得樣式表更容易被編輯:
body {
color: #000;
background: #fff;
margin: 0;
padding: 0;
font-family: Georgia, Palatino, serif;
}
- 是否包含空格不會影響 CSS 在瀏覽器的工作效果,同樣,與 XHTML 不同,CSS 對大小寫不敏感。不過存在一個例外:如果涉及到與 HTML 文檔一起工作的話,class 和 id 名稱對大小寫是敏感的。
3.CSS 高級語法
選擇器的分組
用逗號對選擇器進行分組,分享相同的聲明
h1,h2,h3,h4,h5,h6 {
color: green;
}
繼承及其問題
- 根據 CSS,子元素從父元素繼承屬性。但是它並不總是按此方式工作。看看下麵這條規則:
body {
font-family: Verdana, sans-serif;
}
- 根據上面這條規則,站點的 body 元素將使用 Verdana 字體(假如訪問者的 系統中存在該字體的話)。
- 通過 CSS 繼承,子元素將繼承最高級元素(在本例中是 body)所擁有的屬性(這些子元素諸如 p, td, ul, ol, ul, li, dl, dt,和 dd)。不需要另外的規則,所有 body 的子元素都應該顯示 Verdana 字體,子元素的子元素也一樣。並且在大部分的現代瀏覽器中,也確實是這樣的。
- 但是在那個瀏覽器大戰的血腥年代里,這種情況就未必會發生,那時候對標準的支持並不是企業的優先選擇。比方說,Netscape 4 就不支持繼承,它不僅忽略繼承,而且也忽略應用於 body 元素的規則。IE/Windows 直到 IE6 還存在相關的問題,在表格內的字體樣式會被忽略。我們又該如何是好呢?
友善地對待Netscape 4
- 幸運地是,你可以通過使用我們稱為 "Be Kind to Netscape 4" 的冗餘法則來處理舊式瀏覽器無法理解繼承的問題。
body {
font-family: Verdana, sans-serif;
}
p, td, ul, ol, li, dl, dt, dd {
font-family: Verdana, sans-serif;
}
- 4.0 瀏覽器無法理解繼承,不過他們可以理解組選擇器。這麼做雖然會浪費一些用戶的帶寬,但是如果需要對 Netscape 4 用戶進行支持,就不得不這麼做。
繼承是一個詛咒嗎?
如果你不希望 "Verdana, sans-serif" 字體被所有的子元素繼承,又該怎麼做呢?比方說,你希望段落的字體是 Times。沒問題。創建一個針對 p 的特殊規則,這樣它就會擺脫父元素的規則:
body {
font-family: Verdana, sans-serif;
}
td, ul, ol, ul, li, dl, dt, dd {
font-family: Verdana, sans-serif;
}
p {
font-family: Times, "Times New Roman", serif;
}
4.CSS 派生選擇器
派生選擇器
通過依據元素在其位置的上下文關係來定義樣式,你可以使標記更加簡潔。
在 CSS1 中,通過這種方式來應用規則的選擇器被稱為上下文選擇器 (contextual selectors),這是由於它們依賴於上下文關係來應用或者避免某項規則。在 CSS2 中,它們稱為派生選擇器,但是無論你如何稱呼它們,它們的作用都是相同的。
派生選擇器允許你根據文檔的上下文關係來確定某個標簽的樣式。通過合理地使用派生選擇器,我們可以使 HTML 代碼變得更加整潔。
比方說,你希望列表中的 strong 元素變為斜體字,而不是通常的粗體字,可以這樣定義一個派生選擇器:
li strong {
font-style: italic;
font-weight: normal;
}
<p><strong>我是粗體字,不是斜體字,因為我不在列表當中,所以這個規則對我不起作用</strong></p>
<ol>
<li><strong>我是斜體字。這是因為 strong 元素位於 li 元素內。</strong></li>
<li>我是正常的字體。</li>
</ol>
在上面的例子中,只有 li 元素中的 strong 元素的樣式為斜體字,無需為 strong 元素定義特別的 class 或 id,代碼更加簡潔。
再看看下麵的 CSS 規則:
strong {
color: red;
}
h2 {
color: red;
}
h2 strong {
color: blue;
}
<p>The strongly emphasized word in this paragraph is<strong>red</strong>.</p>
<h2>This subhead is also red.</h2>
<h2>The strongly emphasized word in this subhead is<strong>blue</strong>.</h2>
5.CSS id 選擇器
id 選擇器
id 選擇器可以為標有特定 id 的 HTML 元素指定特定的樣式。
id 選擇器以 "#" 來定義。
下麵的兩個 id 選擇器,第一個可以定義元素的顏色為紅色,第二個定義元素的顏色為綠色:
#red {color:red;}
#green {color:green;}
下麵的 HTML 代碼中,id 屬性為 red 的 p 元素顯示為紅色,而 id 屬性為 green 的 p 元素顯示為綠色。
<p id="red">這個段落是紅色。</p>
<p id="green">這個段落是綠色。</p>
註意:id 屬性只能在每個 HTML 文檔中出現一次。想知道原因嗎,請參閱 XHTML:網站重構。
id 選擇器和派生選擇器
在現代佈局中,id 選擇器常常用於建立派生選擇器。
#sidebar p {
font-style: italic;
text-align: right;
margin-top: 0.5em;
}
上面的樣式只會應用於出現在 id 是 sidebar 的元素內的段落。這個元素很可能是 div 或者是表格單元,儘管它也可能是一個表格或者其他塊級元素。它甚至可以是一個內聯元素,比如<em></em>
或者 <span></span>
,不過這樣的用法是非法的,因為不可以在內聯元素 <span>
中嵌入 <p>
一個選擇器,多種用法
即使被標註為 sidebar 的元素只能在文檔中出現一次,這個 id 選擇器作為派生選擇器也可以被使用很多次:
#sidebar p {
font-style: italic;
text-align: right;
margin-top: 0.5em;
}
#sidebar h2 {
font-size: 1em;
font-weight: normal;
font-style: italic;
margin: 0;
line-height: 1.5;
text-align: right;
}
在這裡,與頁面中的其他 p 元素明顯不同的是,sidebar 內的 p 元素得到了特殊的處理,同時,與頁面中其他所有 h2
元素明顯不同的是,sidebar 中的 h2 元素也得到了不同的特殊處理。
單獨的選擇器
id 選擇器即使不被用來創建派生選擇器,它也可以獨立發揮作用:
#sidebar {
border: 1px dotted #000;
padding: 10px;
}
根據這條規則,id 為 sidebar 的元素將擁有一個像素寬的黑色點狀邊框,同時其周圍會有 10 個像素寬的內邊距(padding,內部空白)。
- 老版本的 Windows/IE 瀏覽器可能會忽略這條規則,除非你特別地定義這個選擇器所屬的元素:
div#sidebar {
border: 1px dotted #000;
padding: 10px;
}
6.CSS 類選擇器
在 CSS 中,類選擇器以一個點號顯示:
.center {text-align: center}
在上面的例子中,所有擁有 center 類的 HTML 元素均為居中。
在下麵的 HTML 代碼中,h1 和 p 元素都有 center 類。這意味著兩者都將遵守 ".center" 選擇器中的規則。
<h1 class="center">
This heading will be center-aligned
</h1>
<p class="center">
This paragraph will also be center-aligned.
</p>
註意:類名的第一個字元不能使用數字!它無法在 Mozilla 或 Firefox 中起作用。
和 id 一樣,class 也可被用作派生選擇器:
.fancy td {
color: #f60;
background: #666;
}
在上面這個例子中,類名為 fancy 的更大的元素內部的表格單元都會以灰色背景顯示橙色文字。(名為 fancy 的更大的元素可能是一個表格或者一個 div)
元素也可以基於它們的類而被選擇:
td.fancy {
color: #f60;
background: #666;
}
在上面的例子中,類名為 fancy 的表格單元將是帶有灰色背景的橙色。
<td class="fancy">
你可以將類 fancy 分配給任何一個表格元素任意多的次數。那些以 fancy 標註的單元格都會是帶有灰色背景的橙色。那些沒有被分配名為 fancy 的類的單元格不會受這條規則的影響。還有一點值得註意,class 為 fancy 的段落也不會是帶有灰色背景的橙色,當然,任何其他被標註為 fancy 的元素也不會受這條規則的影響。這都是由於我們書寫這條規則的方式,這個效果被限制於被標註為 fancy 的表格單元(即使用 td 元素來選擇 fancy 類)。
7.CSS 屬性選擇器
對帶有指定屬性的 HTML 元素設置樣式。
可以為擁有指定屬性的 HTML 元素設置樣式,而不僅限於 class 和 id 屬性。
註釋:只有在規定了 !DOCTYPE 時,IE7 和 IE8 才支持屬性選擇器。在 IE6 及更低的版本中,不支持屬性選擇。
屬性選擇器
下麵的例子為帶有 title 屬性的所有元素設置樣式:
[title]
{
color:red;
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<style type="text/css">
[title]
{
color:red;
}
</style>
</head>
<body>
<h1>可以應用樣式:</h1>
<h2 title="Hello world">Hello world</h2>
<a title="W3School" href="http://w3school.com.cn">W3School</a>
<hr />
<h1>無法應用樣式:</h1>
<h2>Hello world</h2>
<a href="http://w3school.com.cn">W3School</a>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<style type="text/css">
[title]
{
color:red;
}
</style>
</head>
<body>
<h1>可以應用樣式:</h1>
<h2 title="Hello world">Hello world</h2>
<a title="W3School" href="http://w3school.com.cn">W3School</a>
<hr />
<h1>無法應用樣式:</h1>
<h2>Hello world</h2>
<a href="http://w3school.com.cn">W3School</a>
</body>
</html>
屬性和值選擇器
下麵的例子為 title="W3School" 的所有元素設置樣式:
[title=W3School]
{
border:5px solid blue;
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<style type="text/css">
[title=W3School]
{
border:5px solid blue;
}
</style>
</head>
<body>
<h1>可以應用樣式:</h1>
<img title="W3School" src="/i/w3school_logo_white.gif" />
<br />
<a title="W3School" href="http://w3school.com.cn">W3School</a>
<hr />
<h1>無法應用樣式:</h1>
<p title="greeting">Hi!</p>
<a class="W3School" href="http://w3school.com.cn">W3School</a>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<style type="text/css">
[title=W3School]
{
border:5px solid blue;
}
</style>
</head>
<body>
<h1>可以應用樣式:</h1>
<img title="W3School" src="http://www.w3school.com.cn/i/w3school_logo_white.gif" />
<br />
<a title="W3School" href="http://w3school.com.cn">W3School</a>
<hr />
<h1>無法應用樣式:</h1>
<p title="greeting">Hi!</p>
<a class="W3School" href="http://w3school.com.cn">W3School</a>
</body>
</html>
屬性和值選擇器 - 多個值
下麵的例子為包含指定值的 title 屬性的所有元素設置樣式。適用於由空格分隔的屬性值:
[title~=hello] { color:red; }
下麵的例子為帶有包含指定值的 lang 屬性的所有元素設置樣式。適用於由連字元分隔的屬性值:
[lang|=en] { color:red; }
設置表單的樣式
屬性選擇器在為不帶有 class 或 id 的表單設置樣式時特別有用:
input[type="text"]
{
width:150px;
display:block;
margin-bottom:10px;
background-color:yellow;
font-family: Verdana, Arial;
}
input[type="button"]
{
width:120px;
margin-left:35px;
display:block;
font-family: Verdana, Arial;
}
CSS 選擇器參考手冊
選擇器 | 描述 |
---|---|
[attribute] | 用於選取帶有指定屬性的元素 |
[attribute=value] | 用於選取帶有指定屬性和值的元素 |
[attribute~=value] | 用於選取屬性值中包含指定辭彙的元素 |
[attribute^=value] | 匹配屬性值以指定值開頭的每個元素 |
[attribute$=value] | 匹配屬性值以指定值結尾的每個元素 |
[attribute*=value] | 匹配屬性值中包含指定值的每個元素 |
[attribute|=value] 用於選取帶有以指定值開頭的屬性值的元素,該值必須是整個單詞。
8.CSS 創建
如何插入樣式表
- 當讀到一個樣式表時,瀏覽器會根據它來格式化 HTML 文檔。插入樣式表的方法有三種:
**********外部樣式表**********
當樣式需要應用於很多頁面時,外部樣式表將是理想的選擇。在使用外部樣式表的情況下,你可以通過改變一個文件來改變整個站點的外觀。每個頁面使用 <link>
標簽鏈接到樣式表。<link>
標簽在(文檔的)頭部:
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css" />
</head>
瀏覽器會從文件 mystyle.css 中讀到樣式聲明,並根據它來格式文檔。
外部樣式表可以在任何文本編輯器中進行編輯。文件不能包含任何的 html 標簽。樣式表應該以 .css 擴展名進行保存。下麵是一個樣式表文件的例子:
hr {color: sienna;}
p {margin-left: 20px;}
body {background-image: url("images/back40.gif");}
不要在屬性值與單位之間留有空格。假如你使用
“margin-left: 20 px”
而不是 “margin-left: 20px”
,它僅在 IE 6 中有效,但是在 Mozilla/Firefox 或 Netscape 中卻無法正常工作。
**********內部樣式表**********
當單個文檔需要特殊的樣式時,就應該使用內部樣式表。你可以使用 <style>
標簽在文檔頭部定義內部樣式表,就像這樣:
<head>
<style type="text/css">
hr {color: sienna;}
p {margin-left: 20px;}
body {background-image: url("images/back40.gif");}
</style>
</head>
**********內聯樣式表**********
由於要將表現和內容混雜在一起,內聯樣式會損失掉樣式表的許多優勢。請慎用這種方法,例如當樣式僅需要在一個元素上應用一次時。 要使用內聯樣式,你需要在相關的標簽內使用樣式(style)屬性。Style 屬性可以包含任何 CSS 屬性。本例展示如何改變段落的顏色和左外邊距:
<p style="color: sienna; margin-left: 20px">
This is a paragraph
</p>
多重樣式
如果某些屬性在不同的樣式表中被同樣的選擇器定義,那麼屬性值將從更具體的樣式表中被繼承過來。
例如,外部樣式表擁有針對 h3 選擇器的三個屬性:
h3 {
color: red;
text-align: left;
font-size: 8pt;
}
而內部樣式表擁有針對 h3 選擇器的兩個屬性:
h3 {
text-align: right;
font-size: 20pt;
}
假如擁有內部樣式表的這個頁面同時與外部樣式錶鏈接,那麼 h3 得到的樣式是:
color: red;
text-align: right;
font-size: 20pt;
即顏色屬性將被繼承於外部樣式表,而文字排列(text-alignment)和字體尺寸(font-size)會被內部樣式表中的規則取代。
CSS樣式
9.CSS 背景
CSS 允許應用純色作為背景,也允許使用背景圖像創建相當複雜的效果。
CSS 在這方面的能力遠遠在 HTML 之上。****
背景色
background-color 屬性
這條規則把元素的背景設置為灰色:
p {background-color: gray;}
如果您希望背景色從元素中的文本向外少有延伸,只需增加一些內邊距:
p {background-color: gray; padding: 20px;}
可以為所有元素設置背景色,這包括 body 一直到 em 和 a 等行內元素。
background-color 不能繼承,其預設值是 transparent。transparent 有“透明”之意。也就是說,如果一個元素沒有指定背景色,那麼背景就是透明的,這樣其祖先元素的背景才能可見。
背景圖像
background-image 屬性
如果需要設置一個背景圖像,必須為這個屬性設置一個 URL 值:
body {background-image: url(/i/eg_bg_04.gif);}
大多數背景都應用到 body 元素,不過並不僅限於此。
下麵例子為一個段落應用了一個背景,而不會對文檔的其他部分應用背景:
p.flower {background-image: url(/i/eg_bg_03.gif);}
您甚至可以為行內元素設置背景圖像,下麵的例子為一個鏈接設置了背景圖像:
a.radio {background-image: url(/i/eg_bg_07.gif);}
如需查看上述例子的效果,可以親自試一試!
理論上講,甚至可以向 textareas 和 select 等替換元素的背景應用圖像,不過並不是所有用戶代理都能很好地處理這種情況。
另外還要補充一點,background-image 也不能繼承。
事實上,所有背景屬性都不能繼承。
背景重覆
background-repeat 屬性
如果需要在頁面上對背景圖像進行平鋪,可以使用 background-repeat 屬性。
屬性值 repeat 導致圖像在水平垂直方向上都平鋪,就像以往背景圖像的通常做法一樣。repeat-x 和 repeat-y 分別導致圖像只在水平或垂直方向上重覆,no-repeat 則不允許圖像在任何方向上平鋪。
預設地,背景圖像將從一個元素的左上角開始。請看下麵的例子:
body
{
background-image: url(/i/eg_bg_03.gif);
background-repeat: repeat-y;
}
背景定位
background-position 屬性
可以利用 background-position 屬性改變圖像在背景中的位置。
下麵的例子在 body 元素中將一個背景圖像居中放置:
body
{
background-image:url('/i/eg_bg_03.gif');
background-repeat:no-repeat;
background-position:center;
}
為 background-position 屬性提供值有很多方法。首先,可以使用一些關鍵字:top、bottom、left、right 和 center。通常,這些關鍵字會成對出現,不過也不總是這樣。還可以使用長度值,如 100px 或 5cm,最後也可以使用百分數值。不同類型的值對於背景圖像的放置稍有差異。
關鍵字
圖像放置關鍵字最容易理解,其作用如其名稱所表明的。例如,top right 使圖像放置在元素內邊距區的右上角。
根據規範,位置關鍵字可以按任何順序出現,只要保證不超過兩個關鍵字 - 一個對應水平方向,另一個對應垂直方向。
如果只出現一個關鍵字,則認為另一個關鍵字是 center。
所以,如果希望每個段落的中部上方出現一個圖像,只需聲明如下:
p
{
background-image:url('bgimg.gif');
background-repeat:no-repeat;
background-position:top;
}
下麵是等價的位置關鍵字:
單一關鍵字 | 等價的關鍵字 |
---|---|
center | center center |
top | top center 或 center top |
bottom | bottom center 或 center bottom |
right | right center 或 center right |
left | left center 或 center left |
百分數值
百分數值的表現方式更為複雜。假設你希望用百分數值將圖像在其元素中居中,這很容易:
body
{
background-image:url('/i/eg_bg_03.gif');
background-repeat:no-repeat;
background-position:50% 50%;
}
這會導致圖像適當放置,其中心與其元素的中心對齊。換句話說,百分數值同時應用於元素和圖像。也就是說,圖像中描述為 50% 50% 的點(中心點)與元素中描述為 50% 50% 的點(中心點)對齊。
如果圖像位於 0% 0%,其左上角將放在元素內邊距區的左上角。如果圖像位置是 100% 100%,會使圖像的右下角放在右邊距的右下角。
因此,如果你想把一個圖像放在水平方向 2/3、垂直方向 1/3 處,可以這樣聲明:
body
{
background-image:url('/i/eg_bg_03.gif');
background-repeat:no-repeat;
background-position:66% 33%;
}
如果只提供一個百分數值,所提供的這個值將用作水平值,垂直值將假設為 50%。這一點與關鍵字類似。
background-position 的預設值是 0% 0%,在功能上相當於 top left。這就解釋了背景圖像為什麼總是從元素內邊距區的左上角開始平鋪,除非您設置了不同的位置值。
長度值
長度值解釋的是元素內邊距區左上角的偏移。偏移點是圖像的左上角。
比如,如果設置值為 50px 100px,圖像的左上角將在元素內邊距區左上角向右 50 像素、向下 100 像素的位置上:
body
{
background-image:url('/i/eg_bg_03.gif');
background-repeat:no-repeat;
background-position:50px 100px;
}
註意,這一點與百分數值不同,因為偏移只是從一個左上角到另一個左上角。也就是說,圖像的左上角與 background-position 聲明中的指定的點對齊。
背景關聯
background-attachment 屬性
如果文檔比較長,那麼當文檔向下滾動時,背景圖像也會隨之滾動。當文檔滾動到超過圖像的位置時,圖像就會消失。
您可以通過 background-attachment 屬性防止這種滾動。通過這個屬性,可以聲明圖像相對於可視區是固定的(fixed),因此不會受到滾動的影響:
body
{
background-image:url(/i/eg_bg_02.gif);
background-repeat:no-repeat;
background-attachment:fixed
}
background-attachment 屬性的預設值是 scroll,也就是說,在預設的情況下,背景會隨文檔滾動。
10.CSS 文本
CSS 文本屬性可定義文本的外觀。
通過文本屬性,您可以改變文本的顏色、字元間距,對齊文本,裝飾文本,對文本進行縮進,等等。
縮進文本
text-indent 屬性
所有元素的第一行都可以縮進一個給定的長度,甚至該長度可以是負值
首行縮進 5 em
p {text-indent: 5em;}
註意:
一般來說,可以為所有塊級元素應用 text-indent,但無法將該屬性應用於行內元素,圖像之類的替換元素上也無法應用 text-indent 屬性。不過,如果一個塊級元素(比如段落)的首行中有一個圖像,它會隨該行的其餘文本移動。
提示:如果想把一個行內元素的第一行“縮進”,可以用左內邊距或外邊距創造這種效果。
可以使用負值(為防止內容超出視窗,可以額外設置內外邊距),百分比(相對父元素),可以繼承
水平對齊
text-align 屬性
- 值 left、right 和 center 元素中的文本左對齊、右對齊和居中
- 塊級元素或表元素居中,要通過在這些元素上適當地設置左、右外邊距來實現
- justify 水平對齊屬性 由用戶代理(而不是 CSS)來確定兩端對齊文本如何拉伸,以填滿父元素左右邊界之間的空間
text-align:center 與 <CENTER>
<CENTER>
不僅影響文本,還會把整個元素居中。text-align
不會控制元素的對齊,而隻影響內部內容
字間隔
word-spacing 屬性
- 改變字(單詞)之間的標準間隔
- 其預設值 normal 與設置值為 0 是一樣的。
其值可正可負,正則間隔增加,負則距離拉近
p.spread {word-spacing: 30px;}
p.tight {word-spacing: -0.5em;}
<p class="spread">
This is a paragraph. The spaces between words will be increased.
</p>
<p class="tight">
This is a paragraph. The spaces between words will be decreased.
</p>
字母間隔
letter-spacing 屬性
- 字母間隔修改的是字元或字母之間的間隔。
- 與 word-spacing 屬性一樣,預設關鍵字是 normal(這與 letter-spacing:0 相同)。輸入的長度值會使字母之間的間隔增加或減少指定的量:
h1 {letter-spacing: -0.5em}
h4 {letter-spacing: 20px}
<h1>This is header 1</h1>
<h4>This is header 4</h4>
字元轉換
text-transform 屬性
- none
- uppercase
- lowercase
- capitalize
h1 {text-transform: uppercase}
使用 text-transform 有兩方面的好處。首先,只需寫一個簡單的規則來完成這個修改,而無需修改 h1 元素本身。其次,如果您以後決定將所有大小寫再切換為原來的大小寫,可以更容易地完成修改。
文本裝飾
text-decoration 屬性
- none
- underline
- overline
- line-through
- blink
blink 會讓文本閃爍,類似於 Netscape 支持的頗招非議的 blink 標記。
鏈接預設地會有下劃線,去掉超鏈接的下劃線
a {text-decoration: none;}
註意:如果顯式地用這樣一個規則去掉鏈接的下劃線,那麼錨與正常文本之間在視覺上的唯一差別就是顏色(至少預設是這樣的,不過也不能完全保證其顏色肯定有區別)。
一個規則中結合多種裝飾。
超鏈接既有下劃線,又有上劃線
a:link a:visited {text-decoration: underline overline;}
不過要註意的是,如果兩個不同的裝飾都與同一元素匹配,勝出規則的值會完全取代另一個值。請考慮以下的規則:
h2.stricken {text-decoration: line-through;}
h2 {text-decoration: underline overline;}
所有 class 為 stricken 的 h2 元素都只有一個貫穿線裝飾,而沒有下劃線和上劃線,因為 text-decoration 值會替換而不是累積起來。
處理空白符
white-space 屬性
從某種程度上講,預設的 XHTML 處理已經完成了空白符處理:它會把所有空白符合併為一個空格。所以給定以下標記,它在 Web 瀏覽器中顯示時,各個字之間只會顯示一個空格,同時忽略元素中的換行:
<p>This paragraph has many
spaces in it.</p>
p {white-space: normal;}
上面的規則告訴瀏覽器按照平常的做法去處理:丟掉多餘的空白符。如果給定這個值,換行字元(回車)會轉換為空格,一行中多個空格的序列也會轉換為一個空格。
- 值 pre
- 如果 white-space 屬性的值為 pre,瀏覽器將會註意額外的空格,甚至回車。在這個方面,而且僅在這個方面,任何元素都可以相當於一個 pre 元素。
註意:經測試,IE 7 以及更早版本的瀏覽器不支持該值,因此請使用非 IE 的瀏覽器來查看上面的實例。
- 值 nowrap
與之相對的值是 nowrap,它會防止元素中的文本換行,除非使用了一個 br 元素。在 CSS 中使用 nowrap 非常類似於 HTML 4 中用
將一個表單元格設置為不能換行,不過 white-space 值可以應用到任何元素。 - 值 pre-wrap 和 pre-line
- CSS2.1 引入了值 pre-wrap 和 pre-line,這在以前版 本的 CSS 中是沒有的。這些值的作用是允許創作人員更好地 控制空白符處理。
- 如果元素的 white-space 設置為 pre-wrap,那麼該元素中的文本會保留空白符序列,但是文本行會正常地換行。如果設置為這個值,源文本中的行分隔符以及生成的行分隔符也會保留。pre-line 與 pre-wrap 相反,會像正常文本中一樣合併空白符序列,但保留換行符。
註意:我們在 IE7 和 FireFox2.0 瀏覽器中測試了上面的兩個實例,但是結果是,值 pre-wrap 和 pre-line 都沒有得到很好的支持。
總結
下麵的表格總結了 white-space 屬性的行為:
值 空白符 換行符 自動換行 pre-line 合併 保留 允許 normal 合併 忽略 允許 nowrap 合併 忽略 不允許 pre 保留 保留 不允許 pre-wrap 保留 保留 允許
文本方向
direction 屬性
如果您閱讀的是英文書籍,就會從左到右、從上到下地閱讀,這就是英文的流方向。不過,並不是所有語言都如此。我們知道古漢語就是從右到左來閱讀的,當然還包括希伯來語和阿拉伯語等等。
CSS2 引入了一個屬性來描述其方向性。
direction 屬性影響塊級元素中文本的書寫方向、表中列佈局的方向、內容水平填充其元素框的方向、以及兩端對齊元素中最後一行的位置。
註釋:對於行內元素,只有當 unicode-bidi 屬性設置為 embed 或 bidi-override 時才會應用 direction 屬性。
direction 屬性有兩個值:ltr 和 rtl。大多數情況下,預設值是 ltr,顯示從左到右的文本。如果顯示從右到左的文本,應使用值 rtl。
CSS 文本屬性
屬性 描述 color 設置文本顏色 direction 設置文本方向。 line-height 設置行高。 letter-spacing 設置字元間距。 text-align 對齊元素中的文本。 text-decoration 向文本添加修飾。 text-indent 縮進元素中文本的首行。 text-shadow 設置文本陰影。CSS2 包含該屬性,但是 CSS2.1 沒有保留該屬性。 text-transform 控制元素中的字母。 unicode-bidi 設置文本方向。 white-space 設置元素中空白的處理方式。 word-spacing 設置字間距。 11.CSS 字體
CSS 字體屬性定義文本的字體系列、大小、加粗、風格(如斜體)和變形(如小型大寫字母)。
CSS 字體系列
在 CSS 中,有兩種不同類型的字體系列名稱:
- 通用字體系列 - 擁有相似外觀的字體系統組合(比如 "Serif" 或 "Monospace")
- 特定字體系列 - 具體的字體系列(比如 "Times" 或 "Courier")
除了各種特定的字體系列外,CSS 定義了 5 種通用字體系列:
- Serif 字體
- Sans-serif 字體
- Monospace 字體
- Cursive 字體
- Fantasy 字體
指定字體系列
使用 font-family 屬性 定義文本的字體系列。
使用通用字體系列
如果你希望文檔使用一種 sans-serif 字體,但是你並不關心是哪一種字體,以下就是一個合適的聲明:
body {font-family: sans-serif;}
這樣用戶代理就會從 sans-serif 字體系列中選擇一個字體(如 Helvetica),並將其應用到 body 元素。因為有繼承,這種字體選擇還將應用到 body 元素中包含的所有元素,除非有一種更特定的選擇器將其覆蓋。
指定字體系列
除用通用的字體系列,還可通過 font-family 屬性設置更具體的字體
該例為所有 h1 元素設置了 Georgia 字體:
h1 {font-family: Georgia;}
如果用戶代理上沒有安裝 Georgia 字體,就只能使用用戶代理的預設字體來顯示 h1 元素。
可通過結合特定字體名和通用字體系列來解決該問題:
h1 {font-family: Georgia, serif;}
沒裝 Georgia,但裝了 Times 字體(serif 字體系列中的一種字體),用戶代理就可能對 h1 元素使用 Times。儘管 Times 與 Georgia 並不完全匹配,但至少足夠接近。
因此,建議在所有 font-family 規則中都提供一個通用字體系列。這樣就提供了一條後路,在用戶代理無法提供與規則匹配的特定字體時,就可以選擇一個候選字體。
對字體非常熟悉,也可以為給定的元素指定一系列類似的字體。要做到這一點,需要把這些字體按照優先順序排列,然後用逗號進行連接:
p {font-family: Times, TimesNR, 'New Century Schoolbook', Georgia, 'New York', serif;}
根據這個列表,用戶代理會按所列的順序查找這些字體。如果列出的所有字體都不可用,就會簡單地選擇一種可用的 serif 字體。
使用引號
您也許已經註意到了,上面的例子中使用了單引號。只有當字體名中有一個或多個空格(比如 New York),或者如果字體名包括 # 或 $ 之類的符號,才需要在 font-family 聲明中加引號。
單引號或雙引號都可以接受。但是,如果把一個 font-family 屬性放在 HTML 的 style 屬性中,則需要使用該屬性本身未使用的那種引號:
<p style="font-family: Times, TimesNR, 'New Century Schoolbook', Georgia, 'New York', serif;">...</p>
字體風格
font-style 屬性最常用於規定斜體文本。
該屬性有三個值:- normal - 文本正常顯示
- italic - 文本斜體顯示
- oblique - 文本傾斜顯示
<html> <head> <style type="text/css"> p.normal {font-style:normal} p.italic {font-style:italic} p.oblique {font-style:oblique} </style> </head> <body> <p class="normal">This is a paragraph, normal.</p> <p class="italic">This is a paragraph, italic.</p> <p class="oblique">This is a paragraph, oblique.</p> </body> </html>
<html> <head> <style type="text/css"> p.normal {font-style:normal} p.italic {font-style:italic} p.oblique {font-style:oblique} </style> </head> <body> <p class="normal">This is a paragraph, normal.</p> <p class="italic">This is a paragraph, italic.</p> <p class="oblique">This is a paragraph, oblique.</p> </body> </html>
italic 和 oblique 的區別
font-style 非常簡單:用於在 normal 文本、italic 文本和 oblique 文本之間選擇。唯一有點複雜的是明確 italic 文本和 oblique 文本之間的差別。
斜體(italic)是一種簡單的字體風格,對每個字母的結構有一些小改動,來反映變化的外觀。與此不同,傾斜(oblique)文本則是正常豎直文本的一個傾斜版本。
通常情況下,italic 和 oblique 文本在 web 瀏覽器中看上去完全一樣。
字體變形
font-variant 屬性可以設定小型大寫字母。
小型大寫字母不是一般的大寫字母,也不是小寫字母,這種字母採用不同大小的大寫字母。
p {font-variant:small-caps;}
<html> <head> <style type="text/css"> p.normal {font-variant: normal} p.small {font-variant: small-caps} </style> </head> <body> <p class="normal">This is a paragraph</p> <p class="small">This is a paragraph</p> </body> </html>
字體加粗
font-weight 屬性設置文本的粗細。
關鍵字 100 ~ 900 為字體指定了 9 級加粗度。如果一個字體內置了這些加粗級別,那麼這些數字就直接映射到預定義的級別,100 對應最細的字體變形,900 對應最粗的字體變形。數字 400 等價於 normal,而 700 等價於 bold。
如果將元素的加粗設置為 bolder,瀏覽器會設置比所繼承值更粗的一個字體加粗。與此相反,關鍵詞 lighter 會導致瀏覽器將加粗度下移而不是上移。
p.normal {font-weight:normal;} p.thick {font-weight:bold;} p.thicker {font-weight:900;}
字體大小
font-size 屬性設置文本的大小。
有能力管理文本的大小在 web 設計領域很重要。但是,您不應當通過調整文本大小使段落看上去像標題,或者使標題看上去像段落。 請始終使用正確的 HTML 標題,比如使用 <h1> - <h6> 來
您的分享是我們最大的動力!
更多相關文章-
前言 項目中需要根據坐標定位,將自己的實現過程寫下來,廢話不多說,上代碼 正文 總結 ...
-
前言 帶你走進高德api 正文 高德api地址:https://lbs.amap.com/ 1、註冊/登錄 2、進入應用管理創建應用並申請key 3、在項目中使用 效果圖 ...
-
通過配置nginx幹掉 304 (from memory cache) (from disk cache) ...
-
在日常工作中,我們需要將匹配到的所有路由,映射到一個組件上。 如下代碼想要達到的效果: 不傳page和id,則映射到user預設list頁面 傳page和id,根據page不同,顯示不同的頁面 問題 使用以下代碼片段是不能實現以上效果的,因為預設情況下page和id參數是必傳的,如果不傳參數,則會根 ...
-
DOM事件,就是瀏覽器或用戶針對頁面可以做出的某種動作,我們稱這些動作為DOM事件。它是用戶和頁面交互的核心。當動作發生(事件觸發)時,我們可以為其綁定一個或多個事件處理程式(函數),來完成我們想要實現的功能。 為了方便理解下麵即將要講解的內容,在正式開始之前,讓我們先來瞭解一個最常用的事件:cli ...
-
jQuery知識梳理20190818 [TOC] 1. 時間綁定和解綁 2. 區別mouseover與mouseenter 3. 時間委托(委派/代理) 4 . 多庫共存 如果有2個庫都有$, 就存在衝突。 jQuery庫可以釋放$的使用權, 讓另一個庫可以正常使用, 此時jQuery庫只能使用jQ ...
-
JQuery Ztree 樹插件配置與應用小結 by:授客 QQ:1033553122 測試環境 Win7 jquery-3.2.1.min.js 下載地址: https://gitee.com/ishouke/front_end_plugin/blob/master/jquery-3.2.1.mi ...
-
摘要: React Hooks原理解析。 原文: "快速瞭解 React Hooks 原理" 譯者:前端小智 我們大部分 React 類組件可以保存狀態,而函數組件不能? 並且類組件具有生命周期,而函數組件卻不能? React 早期版本,類組件可以通過繼承 來優化一些不必要的渲染,相對於函數組件,R ...
一周排行-
移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
-
前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
-
項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
-
話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
-
前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
-
Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
-
目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
-
1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
-
本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
-
通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...
-Advertisement- 所有分類