CSS,通常稱為CSS樣式表或?qū)盈B樣式表(級聯(lián)樣式表)。主要用于設(shè)置HTML頁面中的文本內(nèi)容(字體、大小、對齊方式等)、圖形的外形(寬高、邊框樣式、邊距等)以及版面布局和外觀顯示樣式。
稱行內(nèi)樣式、行間樣式. 是通過標(biāo)簽的style屬性來設(shè)置元素的樣式
基本語法如下:
<標(biāo)簽名 style="屬性1:屬性值1;屬性2:屬性值2;屬性3:屬性值3">內(nèi)容</標(biāo)簽名>
任何擁有HTML標(biāo)簽都擁有style屬性,用來設(shè)置行內(nèi)式。
注意:
style其實就是標(biāo)簽的屬性
樣式屬性和值之間是 ':'
多組屬性之間用 ';'隔開。
只能控制當(dāng)前標(biāo)簽及嵌套在其中的標(biāo)簽
稱內(nèi)嵌式 是將CSS代碼集中卸載HTML文檔的head頭部標(biāo)簽中,并且用style標(biāo)簽定義。
語法基本語法格式如下:
<head> <style type="text/css"> 選擇器(選擇的標(biāo)簽) { 屬性1:屬性值1; 屬性2:屬性值2; 屬性3:屬性值3; } </style> </head>
style標(biāo)簽一般位于head標(biāo)簽中,當(dāng)然理論上他可以放在HTML文檔的任何地方。
type="text/css" 在html5中可以省略。
只能控制當(dāng)前的頁面
注意:
稱鏈入式 是將所有的樣式放在一個或多個以上.css為擴(kuò)展名的外部樣式表文件中,通過link標(biāo)簽將外部樣式表文件鏈接到HTML文檔中。
其基本語法格式如下:
<head> <link rel="stylesheet" type="text/css" href="css文件路徑" </head>
注意 :
屬性 | 作用 |
---|---|
rel | 定義當(dāng)前文檔與被鏈接文檔之間的關(guān)系,在這里需要指定為“stylesheet”,表示被鏈接的文檔是一個樣式表文件。 |
type | 定義所鏈接文檔的類型,在這里需要指定為“text/CSS”,表示鏈接的外部文件為CSS樣式表。我們都可以省略 |
href | 定義所鏈接外部樣式表文件的URL,可以是相對路徑,也可以是絕對路徑。 |
link 是個單標(biāo)簽
link標(biāo)簽需要放在head頭部標(biāo)簽中,并且指定link標(biāo)簽的三個屬性。
樣式表 | 優(yōu)點 | 缺點 | 使用情況 | 控制范圍 |
---|---|---|---|---|
行內(nèi)樣式表 | 書寫方便,權(quán)重高 | 沒有實現(xiàn)樣式和結(jié)構(gòu)相分離 | 較少 | 控制一個標(biāo)簽(少) |
內(nèi)部樣式表 | 部分結(jié)構(gòu)和樣式相分離 | 沒有徹底分離 | 較多 | 控制一個頁面(中) |
外部樣式表 | 完全實現(xiàn)結(jié)構(gòu)和樣式相分離 | 需要引入 | 最多 | 控制多個站點(多) |
選擇器能找到特定的HTNL頁面元素
標(biāo)簽選擇器(元素選擇器)是指用HTNL標(biāo)簽名稱作為選擇器,按標(biāo)簽名稱分類,為頁面中某一類標(biāo)簽指定同意的CSS樣式。
語法:
標(biāo)簽名{ 屬性1:屬性值1; 屬性2:屬性值2; 屬性3:屬性值3; }
作用:
標(biāo)簽選擇器 可以把某一類標(biāo)簽全部選擇出來 比如所有的div標(biāo)簽 和 所有的 是span標(biāo)簽
類選擇器使用"."進(jìn)行標(biāo)識, 后面緊跟類名。
語法:
類選擇器使用“.”(英文點號)進(jìn)行標(biāo)識,后面緊跟類名(自定義,我們自己命名的)
長名稱或詞組可以使用中橫線來為選擇器命名。
不要純數(shù)字、中文等命名, 盡量使用英文字母來表示。
類型選擇器
.類名 { 屬性1:屬性值1; 屬性2:屬性值2; 屬性3:屬性值3; }
標(biāo)簽
<p class='類名'></p>
注意
類選擇器特殊用法-多類名
可以給標(biāo)簽指定多個類名, 從而達(dá)到跟過的選擇目的。
<div class="pink fontWeight font20">文字</div>
注意: 多個類名中間用空格隔開
id選擇器使用 # 進(jìn)行標(biāo)識, 后面緊跟id名。
基本語法
元素的id值是唯一的,只能對應(yīng)于文檔中某一個具體的元素。
用法基本和類選擇器相同。
id選擇器
#id名 {屬性1:屬性值1;屬性2:屬性值2; 屬性3:屬性值3; }
標(biāo)簽
<p id="id名"></p>
注意:
id選擇器和類選擇器區(qū)別
W3C標(biāo)準(zhǔn)規(guī)定, 在同一個頁面內(nèi),不允許有相同名字的id對象出現(xiàn),但是允許相同名字的class。
通配符選擇器用 * 號表示, * 就是 選擇所有的標(biāo)簽 他是所有選擇器中做喲個范圍最廣的,能匹配頁面中所有的元素。
基本語法:
* { 屬性1:屬性值1; 屬性2:屬性值2; 屬性3:屬性值3; }
例(清除所有HTML標(biāo)記的默認(rèn)邊距):
* { margin: 0;/* 定義外邊距 */ padding: 0;/* 定義內(nèi)邊距 */ }
選擇器 | 作用 | 缺點 | 使用情況 | 用法 |
---|---|---|---|---|
標(biāo)簽選擇器 | 可以選出所有相同的標(biāo)簽,比如p | 不能差異化選擇 | 較多 | p { color:red;} |
類選擇器 | 可以選出1個或者多個標(biāo)簽 | 可以根據(jù)需求選擇 | 非常多 | .nav { color: red; } |
id選擇器 | 一次只能選擇器1個標(biāo)簽 | 只能使用一次 | 不推薦使用 | #nav {color: red;} |
通配符選擇器 | 選擇所有的標(biāo)簽 | 選擇的太多,有部分不需要 | 不推薦使用 | * {color: red;} |
后代選擇器又稱為包含選擇器。其寫法就是把外層標(biāo)簽寫在前面,內(nèi)層標(biāo)簽寫在后面,中間用空格分隔,先寫父親爺爺,在寫兒子孫子。
父級 子級 { 屬性: 屬性值; 屬性: 屬性值; }
.class h3 { color: red; font-size: 16px; }
當(dāng)標(biāo)簽發(fā)生嵌套時,內(nèi)層標(biāo)簽就成為外層標(biāo)簽的后代。
子孫后代都可以這么選擇。 或者說,它能選擇任何包含在內(nèi) 的標(biāo)簽。
子元素選擇器只能選擇作為某元素子元素的元素。
.class>h3 { color:red; font-size:14px; }
交集選擇器由兩個選擇器構(gòu)成,找到的標(biāo)簽必須滿足:既有標(biāo)簽一的特點,也有標(biāo)簽二的特點。
h3.class { color: red; font-size: 25px; }
其中第一個為標(biāo)簽選擇器,第二個為class選擇器,兩個選擇器之間不能有空格,如h3.sp。
如果某些選擇器定義的相同樣式,就可以利用并集選擇器,可以讓代碼更簡潔。
.class, h3 { color: red; font-size: 25px; }
任何形式的選擇器(包括標(biāo)簽選擇器、class類選擇器id選擇器等),都可以作為并集選擇器的一部分。
用于向某些選擇器添加特殊的效果。比如給鏈接添加特殊效果, 比如可以選擇 第1個,第n個元素。
- a:link /* 未訪問的鏈接 */ - a:visited /* 已訪問的鏈接 */ - a:hover /* 鼠標(biāo)移動到鏈接上 */ - a:active /* 選定的鏈接 */
寫的時候,他們的順序盡量不要顛倒 按照 lvha 的順序。否則可能引起錯誤。
選擇器 | 作用 | 特征 | 使用情況 | 隔開符號及用法 |
---|---|---|---|---|
后代選擇器 | 用來選擇元素后代 | 是選擇所有的子孫后代 | 較多 | 符號是空格 .nav a |
子代選擇器 | 選擇 最近一級元素 | 只選親兒子 | 較少 | 符號是> .nav>p |
交集選擇器 | 選擇兩個標(biāo)簽交集的部分 | 既是 又是 | 較少 | 沒有符號 p.one |
并集選擇器 | 選擇某些相同樣式的選擇器 | 可以用于集體聲明 | 較多 | 符號是逗號 .nav, .header |
鏈接偽類選擇器 | 給鏈接更改狀態(tài) | 較多 | 重點記住 a{} 和 a:hover 實際開發(fā)的寫法 |
font-size 屬性用于設(shè)置字號
p { font-size: 20px; }
單位:
可以使用相對長隊單位,也可以使用絕對長度單位。
相對長度單位比較常用,推薦使用像素單位px, 絕對長度單位使用較少。
相對長度單位 | 說明 |
---|---|
em | 相對于當(dāng)前對象內(nèi)文字的字體尺寸 |
px | 像素, 最常用 |
絕對長度單位 | 說明 |
in | 英寸 |
cm | 厘米 |
mm | 毫米 |
pt | 點 |
注意:
谷歌瀏覽器默認(rèn)的文字大小為16px
不用瀏覽器默認(rèn)顯示的字號大小不一致,我們盡量給一個明確值大小, 不要默認(rèn)大小。一般給body指定整個頁面字體大小。
font-family 屬性用于設(shè)置哪種字體
p { font-family:"微軟雅黑"; }
網(wǎng)頁中常用的字體有宋體、微軟雅黑、黑體等,例如將網(wǎng)頁中所有段落文本字體設(shè)置為微軟雅黑。
可以同時指定多個字體,中間以逗號隔開, 表示如果瀏覽器不支持第一個字體,則會嘗試下一個,直到找到合適的字體,如果都沒有,則以電腦默認(rèn)的字體為準(zhǔn)。
p { font-family: Arial, "Microsoft yahei", "微軟雅黑" }
各種字體之間必須使用英文狀態(tài)下的逗號隔開。
注意:
中文字體需要加英文狀態(tài)下的引號,英文字體一般不需要加引號。當(dāng)需要設(shè)置英文字體時,英文字體名必須位于中文字體名之前。
如果字體名中包含空格、#、$等符號,則該字體必須加英文狀態(tài)下的單引號或雙引號,例如font-family: "Times New Roman";。
盡量使用系統(tǒng)默認(rèn)字體,保證在任何用戶的瀏覽器中都能正確顯示。
CSS Unicode字體
在 CSS 中設(shè)置字體名稱,直接寫中文是可以的。但是在文件編碼(GB2312、UTF-8 等)不匹配時會產(chǎn)生亂碼的錯誤。
解決方案
在 CSS 直接使用 Unicode 編碼來寫字體名稱可以避免這些錯誤。使用 Unicode 寫中文字體名稱,瀏覽器是可以正確的解析的。
font-family: "\5FAE\8F6F\96C5\9ED1"; /*表示設(shè)置字體為“微軟雅黑”。*/
字體名稱 | 英文名稱 | Unicode 編碼 |
---|---|---|
宋體 | SimSun | \5B8B\4F53 |
新宋體 | NSimSun | \65B0\5B8B\4F53 |
黑體 | SimHei | \9ED1\4F53 |
微軟雅黑 | Microsoft YaHei | \5FAE\8F6F\96C5\9ED1 |
楷體_GB2312 | KaiTi_GB2312 | \6977\4F53_GB2312 |
隸書 | LiSu | \96B6\4E66 |
幼園 | YouYuan | \5E7C\5706 |
華文細(xì)黑 | STXihei | \534E\6587\7EC6\9ED1 |
細(xì)明體 | MingLiU | \7EC6\660E\4F53 |
新細(xì)明體 | PMingLiU | \65B0\7EC6\660E\4F53 |
在html中設(shè)置加粗可以用標(biāo)簽來實現(xiàn),
可以使用CSS來實現(xiàn),但是CSS是沒有語義的。
屬性值 | 描述 |
---|---|
normal | 默認(rèn)值(不加粗的) |
bold | 定義粗體(加粗的) |
100~900 | 400 等同于 normal,而 700 等同于 bold 我們重點記住這句話 |
在html中設(shè)置斜體可以用標(biāo)簽來實現(xiàn),
可以使用CSS來實現(xiàn),但是CSS是沒有語義的。
屬性 | 作用 |
---|---|
normal | 默認(rèn)值,瀏覽器會顯示標(biāo)準(zhǔn)的字體樣式 font-style: normal; |
italic | 瀏覽器會顯示斜體的字體樣式。 |
基本語法:
選擇器 { font: font-style font-weight font-size/line-height font-family; }
注意
使用font屬性時,必須按上面的語法格式中的順序書寫,不能更換順序, 各個屬性以空格隔開。
其中不需要設(shè)置的屬性可以省略(取默認(rèn)值), 但必須保留fint-size和font-family屬性, 否則font屬性將不起作用。
屬性 | 表示 | 注意點 |
---|---|---|
font-size | 字號 | 我們通常用的單位是px 像素,一定要跟上單位 |
font-family | 字體 | 實際工作中按照團(tuán)隊約定來寫字體 |
font-weight | 字體粗細(xì) | 記住加粗是 700 或者 bold 不加粗 是 normal 或者 400 記住數(shù)字不要跟單位 |
font-style | 字體樣式 | 記住傾斜是 italic 不傾斜 是 normal 工作中我們最常用 normal |
font | 字體連寫 | 1. 字體連寫是有順序的 不能隨意換位置 2. 其中字號 和 字體 必須同時出現(xiàn) |
color屬性用于定義文本的顏色
取值方式:
表示表示 | 屬性值 |
---|---|
預(yù)定義的顏色值 | red,green,blue等 |
十六進(jìn)制 | #FF0000,#FF6600,#29D794 |
RGB代碼 | rgb(255,0,0)或rgb(100%,0%,0%) |
十六進(jìn)制顏色可以簡寫。
作用:
text-align屬性用于設(shè)置文本內(nèi)容的水平對齊, 相當(dāng)于HTML中的align對齊屬性
其可用屬性值:
屬性 | 解釋 |
---|---|
left | 左對齊(默認(rèn)值) |
right | 右對齊 |
center | 居中對齊 |
是讓盒子內(nèi)的內(nèi)容水平居中, 而不是讓盒子居中對齊。
作用
line-height屬性用與設(shè)置行間距, 就是行與行之間的距離,即字符的垂直間距, 一般稱為行高
單位
ine-height常用的屬性值單位有三種,分別為像素px,相對值em和百分比%
一般情況下,行距比字號大7.8像素左右就可以了。
line-height: 24px;
作用:
text-indent屬性用于設(shè)置首行文本的縮進(jìn)
屬性值
1em就是一個字的寬度 如果是漢字的段落,1 em 就是一個漢字的寬度
p { /*行間距*/ line-height: 25px; /*首行縮進(jìn)2個字節(jié)*/ text-indent: 2em; }
其屬性值可為不同單位的數(shù)值、em字符寬度的倍數(shù)、或相對于瀏覽器窗口寬度的百分比%,允許使用負(fù)值,
建議使用em作為設(shè)置單位。
text-decoration 通常我們用于給鏈接修改裝飾效果
值 | 描述 |
---|---|
none | 默認(rèn)。定義標(biāo)準(zhǔn)的文本。 取消下劃線(最常用) |
underline | 定義文本下的一條線。下劃線 也是我們鏈接自帶的(常用) |
overline | 定義文本上的一條線。(不用) |
line-through | 定義穿過文本下的一條線。(不常用) |
屬性 | 表示 | 注意點 |
---|---|---|
color | 顏色 | 我們通常用 十六進(jìn)制 比如 而且是簡寫形式 #fff |
line-height | 行高 | 控制行與行之間的距離 |
text-align | 水平對齊 | 可以設(shè)定文字水平的對齊方式 |
text-indent | 首行縮進(jìn) | 通常我們用于段落首行縮進(jìn)2個字的距離 text-indent: 2em; |
text-decoration | 文本修飾 | 記住 添加 下劃線 underline 取消下劃線 none |
HTML標(biāo)簽一般分為塊標(biāo)簽和行內(nèi)標(biāo)簽兩種類型,它們也稱塊元素和行內(nèi)元素。
常見的塊元素有<h1>~<h6>、<p>、<div>、<ul>、<ol>、<li>等,其中<div>標(biāo)簽是最典型的塊元素。
塊級元素的特點
獨占一行。
高度, 寬度,外邊距以及內(nèi)邊距都可以控制。
寬度默認(rèn)是容器的100%。
是一個容器,里面可以放行內(nèi)或塊級元素。
注意
只有文字才能組成段落, 因此 p 內(nèi)不能放塊級元素, 特別是 p 不能放 div
同理h1-h6,dt, 它們都是文字類塊級標(biāo)簽, 里面不能放其它塊級元素
常見的行內(nèi)元素有<a>、<strong>、<b>、<em>、<i>、<del>、<s>、<ins>、<u>、<span>等,其中<span>標(biāo)簽最典型的行內(nèi)元素。有的地方也成內(nèi)聯(lián)元素
行內(nèi)元素的特點:
相鄰行內(nèi)元素在一行上,一行可以顯示多個。
高、款直接設(shè)置是無效的。
默認(rèn)寬度就是它本身內(nèi)容的寬度。
行內(nèi)元素只能容納文本或其它行內(nèi)元素。
注意:
鏈接內(nèi)不能再放鏈接
特殊情況a里面可以放塊級元素, 但是給a轉(zhuǎn)換一下塊級模式最安全。
在行內(nèi)元素中有幾個特殊的標(biāo)簽——<img />、<input />、<td>,可以對它們設(shè)置寬高和對齊屬性,有些資料可能會稱它們?yōu)樾袃?nèi)塊元素。
特點:
和相鄰行內(nèi)元素(行內(nèi)塊) 在一行上, 但是之間會有空白縫隙。一行可以顯示多個。
默認(rèn)寬度就是它本身內(nèi)容的寬度。
高度, 行高, 外邊距以及內(nèi)邊距都可以控制。
元素模式 | 元素排列 | 設(shè)置樣式 | 默認(rèn)寬度 | 包含 |
---|---|---|---|---|
塊級元素 | 一行只能放一個塊級元素 | 可以設(shè)置寬度高度 | 容器的100% | 容器級可以包含任何標(biāo)簽 |
行內(nèi)元素 | 一行可以放多個行內(nèi)元素 | 不可以直接設(shè)置寬度高度 | 它本身內(nèi)容的寬度 | 容納文本或則其他行內(nèi)元素 |
行內(nèi)塊元素 | 一行放多個行內(nèi)塊元素 | 可以設(shè)置寬度和高度 | 它本身內(nèi)容的寬度 |
塊轉(zhuǎn)行內(nèi): display: inline;
行內(nèi)轉(zhuǎn)塊: display: block;
塊、行內(nèi)元素轉(zhuǎn)換為行內(nèi)塊:diaplay: inline-block;
英文和漢字 內(nèi)有 頂線, 中線, 基線, 底線。 行高測量: 為兩行中基線與基線的距離為行高。
單行文字垂直居中
文字的行高等于盒子的高度。
行高 = 上距離 + 內(nèi)容高度 + 下距離
行高和高度的三種關(guān)系
如果 行高 等 高度 文字會 垂直居中
如果行高 大于 高度 文字會 偏下
如果行高小于高度 文字會 偏上
background-color: 顏色值; /* 默認(rèn)的值是 transparent 透明的 */
background-image: none | url( url )
參數(shù) | 作用 |
---|---|
none | 無背景圖(默認(rèn)的) |
url | 使用絕對或相對地址指定背景圖像 |
background-image: url(images/demo.png);
background-repect: repeat | no-repeat | repeat-x | repeat-y
參數(shù) | 作用 |
---|---|
repeat | 背景圖像在縱向和橫向上平鋪(默認(rèn)的) |
no-repeat | 背景圖像不平鋪 |
repeat-x | 背景圖像在橫向上平鋪 |
repeat-y | 背景圖像在縱向平鋪 |
background-position : length || length background-position : position || position
參數(shù) | 值 |
---|---|
length | 百分?jǐn)?shù) | 由浮點數(shù)字和單位標(biāo)識符組成的長度值 |
position | top | center | bottom | left | center | right 方位名詞 |
注意:
必須先指定background-image屬性
position 后面是x坐標(biāo)和y坐標(biāo)。 可以使用方位名詞或者 精確單位。
如果指定兩個值,兩個值都是方位名字,則兩個值前后順序無關(guān),比如left top和top left效果一致
如果只指定了一個方位名詞,另一個值默認(rèn)居中對齊。
如果position 后面是精確坐標(biāo), 那么第一個,肯定是 x 第二的一定是y
如果只指定一個數(shù)值,那該數(shù)值一定是x坐標(biāo),另一個默認(rèn)垂直居中
如果指定的兩個值是 精確單位和方位名字混合使用,則第一個值是x坐標(biāo),第二個值是y坐標(biāo)
背景附著就是解釋背景是滾動的還是固定的
background-attachment: scroll | fixed
參數(shù) | 作用 |
---|---|
scroll | 背景圖像是隨對象內(nèi)容滾動 |
fixed | 背景圖像固定 |
background:屬性的值的書寫順序官方并沒有強(qiáng)制標(biāo)準(zhǔn)的。為了可讀性,建議大家如下寫:
background: 背景顏色 背景圖片地址 背景平鋪 背景滾動 背景位置;
background: transparent url(image.jpg) repeat-y scroll center top ;
background: rgba(0,0,0,.3);
最后一個參數(shù)是alpha 透明度 取值范圍 0~1之間
我們習(xí)慣把0.3 的 0 省略掉 這樣寫 background: rgba(0, 0, 0, .3);
注意: 背景半透明是指盒子背景半透明, 盒子里面的內(nèi)容不受影響
因為是CSS3 ,所以 低于 ie9 的版本是不支持的。
屬性 | 作用 | 值 |
---|---|---|
background-color | 背景顏色 | 預(yù)定義的顏色值/十六進(jìn)制/RGB代碼 |
background-image | 背景圖片 | url(圖片路徑) |
background-repeat | 是否平鋪 | repeat/no-repeat/repeat-x/repeat-y |
background-position | 背景位置 | length/position 分別是x 和 y坐標(biāo), 切記 如果有 精確數(shù)值單位,則必須按照先X 后Y 的寫法 |
background-attachment | 背景固定還是滾動 | scroll/fixed |
背景簡寫 | 更簡單 | 背景顏色 背景圖片地址 背景平鋪 背景滾動 背景位置; 他們沒有順序 |
背景透明 | 讓盒子半透明 | background: rgba(0,0,0,0.3); 后面必須是 4個值 |
所謂層疊性是指多種CSS樣式的疊加。
是瀏覽器處理沖突的一個能力,如果一個屬性通過兩個相同選擇器設(shè)置到同一個元素上,那么這個時候一個屬性就會將另一個屬性層疊掉
樣式?jīng)_突,遵循的原則是就近原則。 那個樣式離著結(jié)構(gòu)近,就執(zhí)行那個樣式。
樣式不沖突,不會層疊
子標(biāo)簽會繼承父標(biāo)簽的某些樣式,如文本顏色和字號。
想要設(shè)置一個可繼承的屬性,只需將它應(yīng)用于父元素即可。
注意:
恰當(dāng)?shù)厥褂美^承可以簡化代碼,降低CSS樣式的復(fù)雜性。比如有很多子級孩子都需要某個樣式,可以給父級指定一個,這些孩子繼承過來就好了。
子元素可以繼承父元素的樣式(text-,font-,line-這些元素開頭的可以繼承,以及color屬性)
定義CSS樣式時,經(jīng)常出現(xiàn)兩個或更多規(guī)則應(yīng)用在同一元素上,此時,
選擇器相同,則執(zhí)行層疊性
選擇器不同,就會出現(xiàn)優(yōu)先級的問題。
關(guān)于CSS權(quán)重,我們需要一套計算公式來去計算,這個就是 CSS Specificity(特殊性)
標(biāo)簽選擇器 | 計算權(quán)重公式 |
---|---|
繼承或者 * | 0,0,0,0 |
每個元素(標(biāo)簽選擇器) | 0,0,0,1 |
每個類,偽類 | 0,0,1,0 |
每個ID | 0,1,0,0 |
每個行內(nèi)樣式 style="" | 1,0,0,0 |
每個!important 重要的 | ∞ 無窮大 |
值從左到右,左面的最大,一級大于一級,數(shù)位之間沒有進(jìn)制,級別之間不可超越。
div { color: pink!important; }
我們經(jīng)常用交集選擇器,后代選擇器等,是有多個基礎(chǔ)選擇器組合而成,那么此時,就會出現(xiàn)權(quán)重疊加。
例如:
div ul li ------> 0,0,0,3
.nav ul li ------> 0,0,1,2
a:hover -----—> 0,0,1,1
.nav a ------> 0,0,1,1
注意:
數(shù)位之間沒有進(jìn)制 比如說: 0,0,0,5 + 0,0,0,5 =0,0,0,10 而不是 0,0, 1, 0, 所以不會存在10個div能趕上一個類選擇器的情況。
我們修改樣式,一定要看該標(biāo)簽有沒有被選中。
如果選中了,那么以上面的公式來計權(quán)重。誰大聽誰的。
如果沒有選中,那么權(quán)重是0,因為繼承的權(quán)重為0.
所謂盒子模型:
就是把HTML頁面中的布局元素看作是一個矩形的盒子,也就是一個盛裝內(nèi)容的容器。
盒子模型有元素的內(nèi)容、邊框(border)、內(nèi)邊距(padding)、和外邊距(margin)組成。
盒子里面的文字和圖片等元素是 內(nèi)容區(qū)域
盒子的厚度 我們成為 盒子的邊框
盒子內(nèi)容與邊框的距離是內(nèi)邊距(類似單元格的 cellpadding)
盒子與盒子之間的距離是外邊距(類似單元格的 cellspacing)
border: border-width || border-style || border-color
屬性 | 作用 |
---|---|
border-width | 定義邊框粗細(xì),單位是px |
border-style | 邊框的樣式 |
border-color | 邊框顏色 |
邊框的樣式:
none: 沒有比那狂即忽略所有邊框的寬度(默認(rèn)值)
solid: 邊框為單實線(常用)
dashed: 邊框為虛線
dotted: 邊框為點線
border: border-width || border-style || border-color /* 例如 */ border: 1px solid red; /* 沒有順序 */
上邊框 | 下邊框 | 左邊框 | 右邊框 |
---|---|---|---|
border-top-style:樣式; | border-bottom-style:樣式; | border-left-style:樣式; | border-right-style:樣式; |
border-top-width:寬度; | border- bottom-width:寬度; | border-left-width:寬度; | border-right-width:寬度; |
border-top-color:顏色; | border- bottom-color:顏色; | border-left-color:顏色; | border-right-color:顏色; |
border-top:寬度 樣式 顏色; | border-bottom:寬度 樣式 顏色; | border-left:寬度 樣式 顏色; | border-right:寬度 樣式 顏色; |
通過表格的 cellspaceing="0", 將單元格與單元格之間的距離設(shè)置為0
但是兩個單元格之間的邊框會出現(xiàn)重疊, 從而使邊框變粗
通過css屬性設(shè)置:
table { border-collapse: collapse; }
<style> table { width: 500px; height: 300px; border: 1px solid red; } td { border: 1px solid red; text-align: center; } table, td { border-collapse: collapse; /*合并相鄰邊框*/ } </style>
collapse 為合并的意思
border-collapse: collapse; 表示相鄰邊框合并在一起。
padding屬性用于設(shè)置內(nèi)邊距。是指 邊框與內(nèi)容之間的距離。
屬性 | 作用 |
---|---|
padding-left | 左內(nèi)邊距 |
padding-right | 右內(nèi)邊距 |
padding-top | 上內(nèi)邊距 |
padding-bottom | 下內(nèi)邊距 |
當(dāng)我們給盒子指定padding值之后, 發(fā)生了2件事:
內(nèi)容和邊框 有了距離, 添加了內(nèi)邊距。
盒子會變大了。
注意
如果沒有給一個盒子指定寬度, 此時,如果給這個盒子指定padding, 則不會撐開盒子。
值的個數(shù) | 表達(dá)意思 |
---|---|
1個值 | padding:上下左右內(nèi)邊距; |
2個值 | padding: 上下內(nèi)邊距 左右內(nèi)邊距 ; |
3個值 | padding:上內(nèi)邊距 左右內(nèi)邊距 下內(nèi)邊距; |
4個值 | padding: 上內(nèi)邊距 右內(nèi)邊距 下內(nèi)邊距 左內(nèi)邊距 ; |
寬度
Element Height = content height + padding + border (Height為內(nèi)容高度)
高度
Element Width = content width + padding + border (Width為內(nèi)容寬度)
盒子的實際的大小 = 內(nèi)容的寬度和高度 + 內(nèi)邊距 + 邊框
margin屬性用于設(shè)置外邊距。 margin就是控制盒子與盒子之間的距離
屬性 | 作用 |
---|---|
margin-left | 左外邊距 |
margin-right | 右外邊距 |
margin-top | 上外邊距 |
margin-bottom | 下外邊距 |
margin值的簡寫 (復(fù)合寫法)代表意思 跟 padding 完全相同。
可以讓一個塊級盒子實現(xiàn)水平居中:
盒子必須指定了寬度(width)。
然后就給1左右的外邊距都設(shè)置為auto。
例如:
.header { width: 960px; margin: 0 auto; }
常見的寫法
* margin-left: auto; margin-right: auto; * margin: auto; * margin: 0 auto;
盒子內(nèi)的文字水平居中是 text-align: center, 而且還可以讓 行內(nèi)元素和行內(nèi)塊居中對齊
塊級盒子水平居中 左右margin 改為 auto
text-align: center; /* 文字 行內(nèi)元素 行內(nèi)塊元素水平居中 */ margin: 10px auto; /* 塊級盒子水平居中 左右margin 改為 auto 就闊以了 上下margin都可以 */
插入圖片 我們用的最多 比如產(chǎn)品展示類 移動位置只能靠盒模型 padding margin
背景圖片我們一般用于小圖標(biāo)背景 或者 超大背景圖片 背景圖片 只能通過 background-position
img { width: 200px;/* 插入圖片更改大小 width 和 height */ height: 210px; margin-top: 30px; /* 插入圖片更改位置 可以用margin 或padding 盒模型 */ margin-left: 50px; /* 插入當(dāng)圖片也是一個盒子 */ } div { width: 400px; height: 400px; border: 1px solid purple; background: #fff url(images/sun.jpg) no-repeat; background-position: 30px 50px; /* 背景圖片更改位置 我用 background-position */ }
為了更靈活方便地控制網(wǎng)頁中的元素,制作網(wǎng)頁時,我們需要將元素的默認(rèn)內(nèi)外邊距清除
* { padding: 0; margin: 0; }
注意:
行內(nèi)元素為了照顧兼容性, 盡量只設(shè)置左右內(nèi)外邊距, 不要設(shè)置上下內(nèi)外邊距。
使用margin定義塊元素的垂直外邊距時, 可能出現(xiàn)外邊距的合并。
相鄰塊元素垂直外邊距的合并
當(dāng)上下相鄰的兩個塊元素相遇時, 如果上面的元素有下外邊距margin-bottom
下面的元素有上邊距margin-top, 則它們之間的垂直間距不是margin-bottom與margin-top之和
取兩個值中的較大者這種現(xiàn)象被稱為相鄰塊元素垂直外邊距的合并(也成為外邊距塌陷)
嵌套塊元素垂直外邊距的合并(塌陷)
對于兩個嵌套關(guān)系的塊元素, 如果發(fā)元素沒有上內(nèi)邊距及邊框
父元素的上外邊距會與子元素的上外邊距發(fā)生合并
合并后的外邊距為兩者中的較大者
按照 優(yōu)先使用 寬度 (width) 其次 使用內(nèi)邊距(padding) 再次 外邊距(margin)。
width > padding > margin
原因:
margin 會有外邊距合并 還有IE6一下margin 加倍的bug 最后使用。
padding 會影響盒子大小, 需要進(jìn)行加減計算 其次使用。
width 沒有問題 我們經(jīng)常使用寬度剩余法 高度剩余法來做。
無序和有序列表前面默認(rèn)的列表樣式, 在不同瀏覽器顯示效果不同, 所以一般會去掉這些列表樣式。
li { list-style: none; }
border-radius: length;
其中每一個值可以為 數(shù)值或百分比的形式。
可以讓一個正方形 變成圓圈
border-radius:50%;
如果為矩形的圓角, 就不要用百分比了, 因為百分比會是表示高度和寬度的一般。
這里矩形就只用高度的一半就號。 精確單位。
box-shadow: 水平陰影 垂直陰影 模糊距離(虛實) 陰影尺寸(影子大小) 陰影顏色 內(nèi)/外陰影
值 | 描述 |
---|---|
h-shadow | 必需。水平陰影的位置。允許負(fù)值。 |
v-shadow | 必需。垂直陰影的位置。允許負(fù)值。 |
blur | 可選。模糊距離。 |
spread | 可選。陰影的尺寸。 |
color | 可選。陰影的顏色。 |
inset | 可選。將外部陰影(outset)改為內(nèi)部陰影。 |
前面兩個屬性是必須寫的。其余的可以省略。
外陰影(outset)是默認(rèn)的 但是不能寫 outset 想要內(nèi)陰影可以寫 inset
div { width: 200px; height: 200px; border: 10px soild red; /* box-shadow: 5px 5px 3px 4px rgba(0,0,0,.4); */ /* box-shadow: 水平位置 垂直位置 模糊距離 陰影尺寸(影子大小) 陰影顏色 內(nèi)/外陰影; */ box-shadow: 0 15px 30px rgba(0,0,0,.4); }
網(wǎng)頁布局的核心---就是用CSS來擺放盒子。
CSS 提供了 3 種機(jī)制來設(shè)置盒子的擺放位置,分別是普通流(標(biāo)準(zhǔn)流)、浮動和定位,其中:
普通流(標(biāo)準(zhǔn)流)
常用元素:span、a、i、em等
常用元素:div、hr、p、h1~h6、ul、ol、dl、form、table
塊級元素會獨占一行,從上向下順序排列;
行內(nèi)元素會按照順序,從左到右順序排列,碰到父元素邊緣則自動換行;
浮動
讓盒子從普通流中浮起來,主要作用讓多個塊級盒子一行顯示。
定位
將盒子定在瀏覽器的某一個位置——CSS 離不開定位,特別是后面的 js 特效。
概念:元素的浮動是指設(shè)置了浮動屬性的元素會
脫離標(biāo)準(zhǔn)普通流的控制
移動到指定位置。
作用
讓多個盒子(div)水平排列成一行,使得浮動成為布局的重要手段。
可以實現(xiàn)盒子的左右對齊等等..
浮動最早是用來控制圖片,實現(xiàn)文字環(huán)繞圖片的效果。
選擇器 { float: 屬性值; }
屬性值 | 描述 |
---|---|
none | 元素不浮動(默認(rèn)值) |
left | 元素向左浮動 |
right | 元素向右浮動 |
float
屬性會讓盒子漂浮在標(biāo)準(zhǔn)流的上面,所以第二個標(biāo)準(zhǔn)流的盒子跑到浮動盒子的底下了。
float屬性會改變元素display屬性。
浮動的元素互相貼靠一起的,但是如果父級寬度裝不下這些浮動的盒子, 多出的盒子會另起一行對齊。
浮動元素會改變display屬性, 類似轉(zhuǎn)換為了行內(nèi)塊,但是元素之間沒有空白縫隙
子盒子的浮動參照父盒子對齊
不會與父盒子的邊框重疊, 也不會超過父盒子的內(nèi)邊距。
在一個父級盒子中, 如果前一個兄弟盒子是:
浮動的, 那么當(dāng)前盒子會與前一個盒子的頂部對齊。
普通流, 那么當(dāng)前盒子會顯示在前一個兄弟盒子的下方。
浮動只會影響當(dāng)前的或者是后面的標(biāo)準(zhǔn)流盒子,不會影響前面的標(biāo)準(zhǔn)流。
由于浮動元素不再占用原文檔流的位置,所以它會對后面的元素排版產(chǎn)生影響
準(zhǔn)確地說,并不是清除浮動,而是清除浮動后造成的影響
清除浮動主要為了解決父級元素因為子級浮動引起內(nèi)部高度為0 的問題。清除浮動之后, 父級就會根據(jù)浮動的子盒子自動檢測高度。父級有了高度,就不會影響下面的標(biāo)準(zhǔn)流了
在CSS中, clear屬性用于清除浮動。
語法一:
選擇器 { clear: 屬性值; /* clear 清除 */ }
屬性值 | 描述 |
---|---|
left | 不允許左側(cè)有浮動元素(清除左側(cè)浮動的影響) |
right | 不允許右側(cè)有浮動元素(清除右側(cè)浮動的影響) |
both | 同時清除左右兩側(cè)浮動的影響 |
語法二(額外標(biāo)簽法):
是W3C推薦的做法是通過在浮動元素末尾添加一個空的標(biāo)簽例如 <div style=”clear:both”></div>,或則其他標(biāo)簽br等亦可。
語法三(父級添加overflow屬性方法):
可以給父級添加: overflow: hidden | auto | scroll都可以實現(xiàn)。
語法四(使用after偽元素清除浮動):
:after 方式為空元素額外標(biāo)簽法的升級版
.clearfix:after { content: ""; display: block; height: 0; clear: both; visibility:hidden; } .clearfix { *zoom: 1; /* IE6、7 專有*/ }
語法五(使用雙偽元素清除浮動):
.clearfix:before, .clearfix:after { content:""; display: table; } .clearfix:after { clear: both; } .clearfix { *zoom: 1; }
用途:
父級沒有高度。
子盒子浮動。
影響下面布局。
清除浮動的方式 | 優(yōu)點 | 缺點 |
---|---|---|
額外標(biāo)簽法(隔墻法) | 通俗易懂,書寫方便 | 添加許多無意義的標(biāo)簽,結(jié)構(gòu)化較差。 |
父級overflow:hidden; | 書寫簡單 | 溢出隱藏 |
父級after偽元素 | 結(jié)構(gòu)語義化正確 | 由于IE6-7不支持:after,兼容性問題 |
父級雙偽元素 | 結(jié)構(gòu)語義化正確 | 由于IE6-7不支持:after,兼容性問題 |
將盒子定在某一個位置 自由的漂浮在其他盒子(包括標(biāo)準(zhǔn)流和浮動)的上面
定位 = 定位模式 + 邊偏移
在 CSS 中,通過 top
、bottom
、left
和 right
屬性定義元素的邊偏移:(方位名詞)
邊偏移屬性 | 示例 | 描述 |
---|---|---|
top | top: 80px | 頂端偏移量,定義元素相對于其父元素上邊線的距離。 |
bottom | bottom: 80px | 底部偏移量,定義元素相對于其父元素下邊線的距離。 |
left | left: 80px | 左側(cè)偏移量,定義元素相對于其父元素左邊線的距離。 |
right | right: 80px | 右側(cè)偏移量,定義元素相對于其父元素右邊線的距離 |
在 CSS 中,通過 position
屬性定義元素的定位模式,語法如下:
選擇器 { position: 屬性值; }
定位模式是有不同分類的,在不同情況下,我們用到不同的定位模式。
值 | 語義 |
---|---|
static | 靜態(tài)定位 |
relative | 相對定位 |
absolute | 絕對定位 |
fixed | 固定定位 |
靜態(tài)定位是元素的默認(rèn)定位方式,無定位的意思。它相當(dāng)于 border 里面的none, 不要定位的時候用。
靜態(tài)定位 按照標(biāo)準(zhǔn)流特性擺放位置,它沒有邊偏移。
靜態(tài)定位在布局時我們幾乎不用的
相對于 自己原來在標(biāo)準(zhǔn)流中位置來移動的
原來在標(biāo)準(zhǔn)流的區(qū)域繼續(xù)占有,后面的盒子仍然以標(biāo)準(zhǔn)流的方式對待它。
絕對定位是元素以帶有定位的父級元素來移動位置
完全脫標(biāo) ---- 不占位置。
父元素沒有定位, 則以瀏覽器為準(zhǔn)定位(Document文檔)
父元素需要有定位。將元素依據(jù)最近的已經(jīng)定位(絕對、固定或相對定位)的父元素(祖先)進(jìn)行定位。
子級是絕對定位,父級要用相對定位。
完全脫標(biāo) —— 完全不占位置;
只認(rèn)瀏覽器的可視窗口 —— 瀏覽器可視窗口 + 邊偏移屬性
來設(shè)置元素的位置;
跟父元素沒有任何關(guān)系;單獨使用的
不隨滾動條滾動。
提示:IE 6 等低版本瀏覽器不支持固定定位。
注意:絕對定位/固定定位的盒子不能通過設(shè)置
margin: auto
設(shè)置水平居中。
left: 50%;:/*讓盒子的左側(cè)移動到父級元素的水平中心位置。*/ margin-left: -100px;:/*讓盒子向左移動自身寬度的一半。*/
在使用定位布局時,可能會出現(xiàn)盒子重疊的情況。
加了定位的盒子,默認(rèn)后來者居上, 后面的盒子會壓住前面的盒子。
應(yīng)用 z-index
層疊等級屬性可以調(diào)整盒子的堆疊順序。
z-index
的特性如下:
屬性值:正整數(shù)、負(fù)整數(shù)或 0,默認(rèn)值是 0,數(shù)值越大,盒子越靠上;
如果屬性值相同,則按照書寫順序,后來居上;
數(shù)字后面不能加單位。
注意:z-index
只能應(yīng)用于相對定位、絕對定位和固定定位的元素,其他標(biāo)準(zhǔn)流、浮動和靜態(tài)定位無效。
display 是顯示模式, 可以改變顯示模式有以下方式:
可以用inline-block 轉(zhuǎn)換為行內(nèi)塊
可以用浮動 float 默認(rèn)轉(zhuǎn)換為行內(nèi)塊(類似,并不完全一樣,因為浮動是脫標(biāo)的)
絕對定位和固定定位也和浮動類似, 默認(rèn)轉(zhuǎn)換的特性 轉(zhuǎn)換為行內(nèi)塊。
注意
浮動元素、絕對定位(固定定位)元素的都不會觸發(fā)外邊距合并的問題。 (我們以前是用padding border overflow解決的)
定位模式 | 是否脫標(biāo)占有位置 | 移動位置基準(zhǔn) | 模式轉(zhuǎn)換(行內(nèi)塊) | 使用情況 |
---|---|---|---|---|
靜態(tài)static | 不脫標(biāo),正常模式 | 正常模式 | 不能 | 幾乎不用 |
相對定位relative | 不脫標(biāo),占有位置 | 相對自身位置移動 | 不能 | 基本單獨使用 |
絕對定位absolute | 完全脫標(biāo),不占有位置 | 相對于定位父級移動位置 | 能 | 要和定位父級元素搭配使用 |
固定定位fixed | 完全脫標(biāo),不占有位置 | 相對于瀏覽器移動位置 | 能 | 單獨使用,不需要父級 |
注意:
邊偏移需要和定位模式聯(lián)合使用,單獨使用無效;
top
和 bottom
不要同時使用;
left
和 right
不要同時使用。
display設(shè)置或檢索對象是否及如何顯示。
display: none; /* 隱藏對象 */ display: block /* 除了轉(zhuǎn)換為塊級元素之外,同時還有顯示元素的意思。 */
特點: 隱藏之后,不再保留位置。
設(shè)置或檢索是否顯示對象。
visibility: visible; /* 對象可見 */ visibility: hidden; /* 對象隱藏 */
特點: 隱藏之后,繼續(xù)保留原有位置。
檢索或設(shè)置當(dāng)對象的內(nèi)容超過其指定高度及寬度時如何管理內(nèi)容。
屬性值 | 描述 |
---|---|
visible | 不剪切內(nèi)容也不添加滾動條 |
hidden | 不顯示超過對象尺寸的內(nèi)容,超出的部分隱藏掉 |
scroll | 不管超出內(nèi)容否,總是顯示滾動條 |
auto | 超出自動顯示滾動條,不超出不顯示滾動條 |
屬性 | 區(qū)別 | 用途 |
---|---|---|
display | 隱藏對象,不保留位置 | 配合后面js做特效,比如下拉菜單,原先沒有,鼠標(biāo)經(jīng)過,顯示下拉菜單, 應(yīng)用極為廣泛 |
visibility | 隱藏對象,保留位置 | 使用較少 |
overflow | 只是隱藏超出大小的部分 | 1. 可以清除浮動 2. 保證盒子里面的內(nèi)容不會超出該盒子范圍 |
設(shè)置或檢索在對象上移的鼠標(biāo)指針采用何種系統(tǒng)預(yù)定義的光標(biāo)形狀
屬性值 | 描述 |
---|---|
default | 小白 默認(rèn) |
pointer | 小手 |
move | 移動 |
text | 文本 |
not-allowed | 禁止 |
例如
<ul> <li style="cursor:default">我是小白</li> <li style="cursor:pointer">我是小手</li> <li style="cursor:move">我是移動</li> <li style="cursor:text">我是文本</li> <li style="cursor:not-allowed">我是文本</li> </ul>
是繪制于元素周圍的一條線,位于邊框邊緣的外圍,可起到突出元素的作用。
outline: outline-color || outline-style || outline-width /* 去除 */ outline: 0; 或者 outline: none;
<textarea style="resize: none;"></textarea>
屬性 | 用途 | 用途 |
---|---|---|
鼠標(biāo)樣式 | 更改鼠標(biāo)樣式cursor | 樣式很多,重點記住 pointer |
輪廓線 | 表單默認(rèn)outline | outline 輪廓線,我們一般直接去掉,border是邊框,我們會經(jīng)常用 |
防止拖拽 | 主要針對文本域resize | 防止用戶隨意拖拽文本域,造成頁面布局混亂,我們resize:none |
vertical-align 垂直對齊,它只針對于行內(nèi)元素或者行內(nèi)塊元素,
vertical-align : baseline |top |middle |bottom
注意:
vertical-align 不影響塊級元素中的內(nèi)容對齊,它只針對于行內(nèi)元素或者行內(nèi)塊元素,
特別是行內(nèi)塊元素, 通常用來控制圖片/表單與文字的對齊。
通過vertical-align 控制圖片和文字的垂直關(guān)系了。 默認(rèn)的圖片會和文字基線對齊。
圖片或者表單等行內(nèi)塊元素,他的底線會和父級盒子的基線對齊。就是圖片底側(cè)會有一個空白縫隙。
解決:
給img vertical-align:middle | top| bottom等等。 讓圖片不要和基線對齊。
給img 添加 display:block; 轉(zhuǎn)換為塊級元素就不會存在問題了。
white-space設(shè)置或檢索對象內(nèi)文本顯示方式。通常我們使用于強(qiáng)制一行顯示內(nèi)容
white-space:normal ; /* 默認(rèn)處理方式 */ white-space:nowrap ; /* 強(qiáng)制在同一行內(nèi)顯示所有文本,直到文本結(jié)束或者遭遇br標(biāo)簽對象才換行。 */
設(shè)置或檢索是否使用一個省略標(biāo)記(...)標(biāo)示對象內(nèi)文本的溢出
text-overflow : clip ; /* 不顯示省略標(biāo)記(...),而是簡單的裁切 */ text-overflow:ellipsis ; /* 當(dāng)對象內(nèi)文本溢出時顯示省略標(biāo)記(...)*/
/*1. 先強(qiáng)制一行內(nèi)顯示文本*/ white-space: nowrap; /*2. 超出的部分隱藏*/ overflow: hidden; /*3. 文字用省略號替代超出的部分*/ text-overflow: ellipsis;
為了有效地減少服務(wù)器接受和發(fā)送請求的次數(shù),提高頁面的加載速度。
CSS 精靈其實是將網(wǎng)頁中的一些背景圖像整合到一張大圖中(精靈圖),然而,各個網(wǎng)頁元素通常只需要精靈圖中不同位置的某個小圖,要想精確定位到精靈圖中的某個小圖。
首先我們知道,css精靈技術(shù)主要針對于背景圖片,插入的圖片img 是不需要這個技術(shù)的。
我們需要使用CSS的
background-image、
background-repeat
background-position屬性進(jìn)行背景定位,
其中最關(guān)鍵的是使用background-position 屬性精確地定位。
精確測量,每個小背景圖片的大小和 位置。
給盒子指定小背景圖片時, 背景定位基本都是 負(fù)值。
為了使各種特殊形狀的背景能夠自適應(yīng)元素中文本內(nèi)容的多少,出現(xiàn)了CSS滑動門技術(shù)。它從新的角度構(gòu)建頁面,使各種特殊形狀的背景能夠自由拉伸滑動,以適應(yīng)元素內(nèi)部的文本內(nèi)容,可用性更強(qiáng)。 最常見于各種導(dǎo)航欄的滑動門。
核心技術(shù)就是利用CSS精靈(主要是背景位置)和 盒子padding撐開寬度, 以便能適應(yīng)不同字?jǐn)?shù)的導(dǎo)航欄。
<li> <a href="#"> <span>導(dǎo)航欄內(nèi)容</span> </a> </li>
* { padding:0; margin:0; } body{ background: url(images/wx.jpg) repeat-x; } .father { padding-top:20px; } li { padding-left: 16px; height: 33px; float: left; line-height: 33px; margin:0 10px; background: url(./images/to.png) no-repeat left ; } a { padding-right: 16px; height: 33px; display: inline-block; color:#fff; background: url(./images/to.png) no-repeat right ; text-decoration: none; } li:hover, li:hover a { background-image:url(./images/ao.png); }
總結(jié):
a 設(shè)置 背景左側(cè),padding撐開合適寬度。
span 設(shè)置背景右側(cè), padding撐開合適寬度 剩下由文字繼續(xù)撐開寬度。
之所以a包含span就是因為 整個導(dǎo)航都是可以點擊的。
聯(lián)系客服