<標籤名 style="屬性1:屬性值1; 屬性2: 屬性值2; 屬性3:屬性值3;"> 內容 </標籤名>
<head>
<style type="text/css">
選擇器 {
屬性1:屬性值1;
屬性2:屬性值2;
屬性3:屬性值3;
}
</style>
</head>
概念:稱鏈入式,是將所有的樣式放在一個或多個以.CSS爲擴充套件名的外部樣式表檔案中,通過link標籤將外部樣式表檔案鏈接到HTML文件中
基本語法格式如下:
<head>
<link rel="stylesheet" type="text/css" href="css檔案路徑">
</head>
注意:
屬性 | 作用 |
---|---|
rel | 定義當前文件與被鏈接文件之間的關係,在這裏需要指定爲「stylesheet」,表示被鏈接的文件是一個樣式表檔案 |
type | 定義所鏈接文件的型別,在這裏需要指定爲「text/css」,表示鏈接的外部檔案爲CSS樣式表,我們都可以省略 |
href | 定義所鏈接外部樣式表檔案的URL,可以是相對路徑,也可以是絕對路徑 |
樣式表 | 優點 | 缺點 | 使用情況 | 控制範圍 |
---|---|---|---|---|
行內樣式表 | 書寫方便 | 沒有實現樣式和結構相分離 | 較少 | 控制一個標籤(少) |
內部樣式表 | 部分結構和樣式相分離 | 沒有徹底分離 | 較多 | 控制一個頁面(中) |
外部樣式表 | 完全實現結構和樣式相分離 | 需要引入 | 最多,強烈推薦 | 控制整個站點(多) |
團隊約定-程式碼風格
樣式書寫一般有兩種:
一種是緊湊格式:
.jdc{ display: block; width: 50px;}
一種是展開格式(推薦)
h3 { color: deeppink; font-size: 20px; }
團隊約定-程式碼大小寫
樣式選擇器,屬性名,屬性值關鍵字全部使用小寫字母,屬性字串允許使用大小寫/* 推薦 */ h3 { color: pink; } /* 不推薦 */ H3 { COLOOR: PINK; }
具體格式如下:
總結:
作用:找到特定的HTML頁面元素
標籤名{屬性1:屬性值1; 屬性2:屬性值2; 屬性3:屬性值3; }
總結 口訣
標籤選擇器,
頁面同選起。
直接寫標籤,
全部不放棄。
.類名 {
屬性1:屬性值1;
屬性2:屬性值2;
屬性3:屬性值3;
}
<p class="類名"></p>
<span class="blue font100">G</span>
<span class="red font100">o</span>
<span class="byellow font100">o</span>
<span class="blue font100">g</span>
<span class="green font100">l</span>
<span class="red font100">e</span>
id選擇器使用#進行標識,後面緊跟id名
#id名 {
屬性1:屬性值1;
屬性2:屬性值2;
屬性3:屬性值3;
}
<p id="id名"></p>
* {
屬性1:屬性值1;
屬性2:屬性值2;
屬性3:屬性值3;
}
選擇器 | 作用 | 缺點 | 使用情況 | 用法 |
---|---|---|---|---|
標籤選擇器 | 可以選出所有相同的標籤,比如p | 不能差異化選擇 | 較多 | p {color: red; } |
類選擇器 | 可以選出1個或者多個標籤 | 可以根據需求選擇 | 非常多 | .nav {color: red; } |
id選擇器 | 一次只能選擇1個標籤 | 只能使用一次 | 不推薦使用 | #nav {color: red; } |
萬用字元選擇器 | 選擇所有的標籤 | 選擇的太多,有部分不推薦 | 不推薦使用 | * {color: red; } |
/* 推薦 */
.jdc {}
li {}
p {}
/* 不推薦 */
* {}
#jdc {}
div {}
P {
font-size: 20px;
}
單位
相對長度單位 | 說明 |
---|---|
em | 相對於當前物件內文字的字型尺寸 |
px | 畫素,最常用,推薦使用 |
絕對長度單位 | 說明 |
in | 英寸 |
cm | 釐米 |
mm | 毫米 |
pt | 點 |
注意:
p {
font-family: "微軟雅黑";
}
p {
font-family: "Arial", "Microsoft Yahei", "微軟雅黑";
}
常用技巧:
- 各種字型之間必須使用英文狀態下的逗號隔開
- 中文字型需要加英文狀態下的引號,英文字型一般不需要加引號,當需要設定英文字型時,英文字型名必須位於中文字型名之前
- 如果字型名中包含空格、#、$等符號,則該字型必須加英文狀態下的單引號或雙引號,例如font-family: 「Times New Roman」;
- 儘量使用系統預設字型,保證在任何使用者的瀏覽器中都能正確顯示
CSS Unicode字型
爲什麼使用Unicode字型
* 在CSS中設定字型名稱,直接寫中文是可以的,但是在檔案編碼(GB2312、UTF-8等)不匹配時會產生亂碼的錯誤
- xp系統不支援類似微軟雅黑的中文
解決:
- 方案一:可以使用英文替代,比如font-family: 「Microsoft Yahei」
- 方案二:在CSS直接使用Unicode編碼來寫字型名稱可以避免這些錯誤,使用Unicode寫中文字型名稱,瀏覽器是可以正確的解析的
字型名稱 英文名稱 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 華文細黑 STXihei \534E\6587\7EC6\9ED1 細明體 MingLIU \7EC6\660E\4F53 新細明體 PMingLIU \65B0\7EC6\660\4F53
在HTML中如何將字型加粗我們可以用標籤來實現
可以使用CSS來實現,但是CSS是沒有語意的
屬性值 | 描述 |
---|---|
normal | 預設值(不加粗的) |
bold | 定義粗體(加粗的) |
100-900 | 400等同於normal,而700等同於bold |
提倡:我們平時更喜歡用數位來表示加粗和不加粗
屬性 | 作用 |
---|---|
normal | 預設值,瀏覽器會顯示標準的字型樣式 |
italic | 瀏覽器會顯示斜體的字型樣式 |
小技巧:平時我們很少給文字加斜體,反而喜歡個斜體標籤(em,i)改爲普通模式
選擇器 {
font: font-style font-weight font-size/line-height font-family;
}
屬性 | 表示 | 注意點 |
---|---|---|
font-size | 字號 | 我們通常用的單位是px畫素,一定要跟上單位 |
font-family | 字型 | 實際工作中按照團隊約定來寫字型 |
font-weight | 字型粗細 | 記住加粗是700或者bold不加粗是normal或者400 記住數位不要跟單位 |
font-style | 字型樣式 | 記住傾斜是italic,不傾斜是normal,工作中我們最常用normal |
font | 字型連寫 | 1. 字型連寫是由順序的,不能隨意換位置 2. 其中字號和字型必須同時出現 |
表示 | 屬性值 |
---|---|
預定義的顏色值 | red,green,blue,還有我們的御用色pink |
十六進制 | #FF0000,#FF6600,#29D794 |
RGB程式碼 | rgb(255,0,0)或rgb(100%,0%,0%) |
屬性 | 解釋 |
---|---|
left | 左對齊(預設值) |
right | 右對齊 |
center | 居中對齊 |
一般情況下,行距比字號大7、8畫素左右大小就可以了。
line-height: 24px;
作用:text-indent屬性用於設定首行文字的縮排
屬性值
p {
/* 行間距 */
line-height: 25px;
/* 首行縮排2個字,一個em就是1個字的大小 */
text-indent: 2em;
}
text-decoration通常我們用於給鏈接修改裝飾效果
值 | 描述 |
---|---|
none | 預設,定義標準的文字,取消下劃線(最常用) |
underline | 定義文字下的一條線,下劃線也是我們鏈接自帶的(常用) |
overline | 定義文字上的一條線(不用) |
line-through | 定義穿過文字下的一條線(不常用) |
屬性 | 表示 | 注意點 |
---|---|---|
color | 顏色 | 我們通常用十六進制比如#fff |
line-height | 行高 | 控制行與行之間的距離 |
text-align | 水平對齊 | 可以設定文字水平的對齊方式 |
text-indent | 首行縮排 | 通常我們用於段落首行縮排2個字的距離 |
text-decoration | 文字裝飾 | 記住新增下劃線underline,取消下劃線none |
概念:後代選擇器又稱爲包含選擇器
作用:用來選擇元素或元素組的子孫後代
其寫法就是把外層標籤寫在前面,內層標籤寫在後面,中間用空格分隔,先寫父親爺爺,再寫兒子孫子
父級 子級 {
屬性:屬性值;
屬性:屬性值;
}
語法:
.class h3 {
color: red;
font-size: 16px;
}
.class>h3 {
color:red;
font-size: 14px;
}
應用:如果某些選擇器定義的樣式相同樣式,就可以利用並集選擇器,可以讓程式碼更簡潔
並集選擇器(CSS選擇器分組)是各個選擇器通過「,」連線而成的,通常用於集體宣告
語法:
作用:用於向某些選擇器新增特殊的效果,比如給鏈接新增特殊效果,比如可以選擇第一個,第n個元素
類選擇器和鏈接僞類選擇器的區別
a:link /* 未存取的鏈接 */
a:visited /* 已存取的鏈接 */
a:hover /* 滑鼠移動到鏈接上 */
a:active /* 選定的鏈接 */
【注意】
* 寫的時候,他們的順序儘量不要顛倒,按照lvha的順序,否則可能引起錯誤
* 因爲叫鏈接僞類,所以都是利用交集選擇器a:link,a:hover
* 因爲a鏈接瀏覽器具有預設樣式,所以我們實際工作中都需要給鏈接單獨指定樣式
* 實際工作開發中,我們很少寫全四個狀態,一般我們寫法如下:
a { /* a是標籤選擇器,所有的鏈接 */
font-weight: 700;
font-size: 14px;
color: gray;
}
a:hover { /* :hover是鏈接僞類選擇器滑鼠經過 */
color: red; /* 滑鼠經過的時候,由原來的灰色變成了紅色 */
}
選擇器 | 作用 | 特徵 | 使用情況 | 隔開符號及用法 |
---|---|---|---|---|
後代選擇器 | 用來選擇元素後代 | 是選擇所有的子孫後代 | 較多 | 符號是空格.nav a |
子代選擇器 | 選擇最近一級元素 | 只選親兒子 | 較少 | 符號是>.nav>p |
交集選擇器 | 選擇兩個標籤交集的部分 | 既是 又是 | 較少 | 沒有符號p.one |
並集選擇器 | 選擇某些相同樣式的選擇器 | 可以用於集體宣告 | 較多 | 符號是逗號 .nav,.header |
鏈接僞類選擇器 | 給鏈接更改狀態 | 較多 | 重點記住a{}和a:hover實際開發中的寫法 |
常見的塊元素由<h1>~<h6>、<p>、<div>、<ul>、<ol>、<li>等,其中<div>標籤是最典型的塊元素
常見的行內元素有<a>、<strong>、<b>、<em>、<i>、<del>、<s>、<ins>、<u>、<span>等,其中<span>標籤最典型的行內元素,有的地方也稱內聯元素
行內元素的特點
【注意】
在行內元素中有幾個特殊的標籤——<img />、<input />、<td>,可以對它們設定寬高和對齊屬性
元素模式 | 元素排列 | 設定樣式 | 預設寬度 | 包含 |
---|---|---|---|---|
塊級元素 | 一行只能放一個塊級元素 | 可以設定寬度高度 | 容器的100% | 容器級可以包含任何標籤 |
行內元素 | 一行可以放多個行內元素 | 不可以直接設定寬度高度 | 它本身內容的寬度 | 容納文字或其他行內元素 |
行內塊元素 | 一行放多個行內塊元 | 可以設定寬度和高度 | 它本身內容的寬度 |
行高的測量方法:
行高我們利用最多的一個地方是:可以讓單行文字在盒子中垂直居中對齊
行高=上距離+內容高度+下距離
上距離和下距離總是相等的,因此文字看上去是垂直居中的
行高和高度的三種關係:
background-color: 顏色值; /* 預設的值是transparent透明的 */
語法:
background-image: none| url(url);
參數 | 作用 |
---|---|
none | 無背景圖(預設的) |
url | 使用絕對或相對地址指定背景影象 |
background-image: url(images/demo.png);
小技巧:我們提倡背景圖片後面的地址,url不要加引號
background-repeat: repeat | no-repeat | repeat-x | repeat-y;
參數 | 作用 |
---|---|
repeat | 背景影象在縱向和橫向上平鋪(預設的) |
no-repeat | 背景影象不平鋪 |
repeat-x | 背景影象在橫向上平鋪 |
repeat-y | 背景影象在縱向上平鋪 |
語法:
background-position: length || length
background-position: position || position
參數 | 值 |
---|---|
length | 百分比 |
position | top |
【注意】
/* 超大背景圖片的做法 背景定位 */
background-position: center top;
background-attachment: scroll | fixed
參數 | 作用 |
---|---|
scroll | 背景影象是隨物件內容卷動 |
fixed | 背景影象固定 |
background: transparent url(image.jpg) repeat-y scroll center top;
background: rgb(0, 0, 0, 0.3);
屬性 | 作用 | 值 |
---|---|---|
background-color | 背景顏色 | 預定義的顏色值/十六進制/RGB程式碼 |
background-image | 背景圖片 | url(圖片路勁) |
background-repeat | 是否平鋪 | repeat/no-repeat/repeat-x/repeat-y |
background-position | 背景位置 | length/position 分別是x和y座標,切記如果有精確數值單位,則必須按照先x後y的寫法 |
background-attachment | 背景固定還是卷動 | scroll/fixed |
背景簡寫 | 更簡單 | 背景顏色 背景圖片地址 背景平鋪 背景卷動 背景位置;它們沒有順序 |
背景透明 | 讓盒子半透明 | Background: rgba(0, 0, 0, .3); 後面必須是4個值 |
CSS繼承口訣,龍生龍,鳳生鳳,老鼠的孩子會打洞
關於CSS權重,我們需要一套計算公式來去計算,這個就是CSS Specificity(特殊性)
標籤選擇器 | 計算權重公式 |
---|---|
繼承或者* | 0,0,0,0 |
每個元素(標籤選擇器) | 0,0,0,1 |
每個類,僞類 | 0,0,1,0 |
每個ID | 0,1,0,0 |
每個行內樣式style=「」 | 1,0,0,0 |
每個!important重要的 | ∞無窮大 |
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
【注意】 數位之間沒有進位制,比如說:0,0,0,5+0,0,0,5=0,0,0,10而不是0,0,1,0,所以不會存在10個div能趕上一個類選擇器的情況
修改樣式,一定要看該標籤有沒有被選中
【注意】 有兩個特殊標籤 鏈接 和 h標籤 ,它們瀏覽器有自己預設的樣式,繼承的權重爲0,所以,我們還是要單獨給鏈接和標題一樣樣式
所謂盒子模型
border: border-width | border-style | border-color;
屬性 | 作用 |
---|---|
border-width | 定義邊框粗細,單位是px |
border-style | 邊框的樣式 |
border-color | 邊框顏色 |
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: 寬度 樣式 顏色; |
小技巧:
border: none; border-top: 1px solid red;
通過表的cellspacing=「0」,將單元格與單元格之間的距離設定爲0
但是兩個單元格之間的邊框會出現重疊,從而使邊框變粗
通過CSS屬性:
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>
padding屬性用於設定內邊距,是指邊框與內容之間的距離
屬性 | 作用 |
---|---|
padding-left | 左內邊距 |
padding-right | 右內邊距 |
padding-top | 上內邊距 |
padding-bottom | 下內邊距 |
當我們給盒子指定padding值之後,發生了兩件事情
【注意】 後面跟幾個數值表示的意思是不一樣的
值的個數 | 表示意思 |
---|---|
1個值 | padding:上下左右內邊距; |
2個值 | padding:上下內邊距 左右內邊距; |
3個值 | padding:上內邊距 左右內邊距 下內邊距; |
4個值 | padding:上內邊距 右內邊距 下內邊距 左內邊距; |
【新浪導航欄案例】
<!DOCTYPE html>
<html lang="ch-CN">
<head>
<meta charset="UTF-8">
<title>新浪導航</title>
<style>
.nav {
height: 41px;
background-color: #fcfcfc;
border-top: 3px solid #ff8500;
border-bottom: 1px solid #edeef0;
}
.nav a {
display: inline-block;
height: 41px;
line-height: 41px;
color: #4c4c4c;
padding: 0 20px;
text-decoration: none;
font-size: 12px;
}
.nav a:hover {
background-color: #eee;
}
</style>
</head>
<body>
<div class="nav">
<a href="#">設爲首頁</a>
<a href="#">手機新浪網</a>
<a href="#">移動用戶端</a>
<a href="#">部落格</a>
<a href="#">微博</a>
<a href="#">關注我</a>
</div>
</body>
</html>
寬度
Element Height = content height + padding + border (height爲內容高度)
高度
Element width = content width + padding + border (width爲內容寬度)
盒子的實際大小 = 內容的寬度和高度 + 內邊距 + 邊框
如果沒有給一個盒子指定寬度,此時,如果給這個盒子指定padding,則不會撐開盒子
margin屬性用於設定外邊距,margin就是控制盒子與盒子之間的距離
屬性 | 作用 |
---|---|
margin-left | 左外邊距 |
margin-right | 右外邊距 |
margin-top | 上外邊距 |
margin-bottom | 下外邊距 |
可以讓一個塊級盒子實現水平居中必須:
盒子必須指定了寬度
然後就給左右的外邊距都設定爲auto
實際工作中常用這種方式進行網頁佈局,範例程式碼如下:
.header {
widtth: 960ox;
margin: 0 auto;
}
常見的寫法,以下三種都可以
margin-left: auto; margin-right: auto;
margin: auto;
margin: 0 auto;
text-align: center; /* 文字、行內元素、行內塊元素水平居中 */
margin: 10px auto; /* 塊級盒子水平居中,左右margin改爲auto就可以了 */
* {
padding: 0; /* 清除內邊距 */
margin: 0; /* 清除外邊距 */
}
【注意】行內元素爲了照顧相容性,儘量只設置左右內外邊距,不要設定上下內外邊距
使用margin定義塊元素的垂直外邊距時,可能會出現外邊距的合併
**解決方案:**儘量只給一個盒子新增margin值
解決方案:
還有其他方法,比如浮動、固定、絕對定位的盒子不會有問題
建議如下:
按照優先使用寬度(width)其次使用內邊距(padding)再次外邊距(margin)
width > padding > margin
原因:
○ margin會有外邊距合併還有IE6下面 下麪margin加粗的bug,所以最後使用
○ padding會影響盒子大小,需要進行加減計算,其次使用
○ width沒有問題,我們經常使用寬度剩餘法、高度剩餘法來做的
border-radius: length;
border-radius: 50%;
box-shadow: 水平陰影 垂直陰影 模糊距離(虛實) 陰影尺寸(影子大小) 陰影顏色 內/外陰影;
值 | 描述 |
---|---|
h-shadow | 必需,水平陰影的位置,允許負值 |
v-shadow | 必需,垂直陰影的位置,允許負值 |
blur | 可選,模糊距離 |
spread | 可選,陰影的尺寸 |
color | 可選,陰影的顏色 |
inset | 可選,將外部陰影(outset)改爲內部陰影 |
div {
width: 200px;
height: 200px;
border: 10px solid red;
/* box-shadow: 5px 5px 3px 4px rgba(0, 0, 0, .4); */
/* box-shadow:水平位置 垂直位置 模糊距離 陰影尺寸(影子大小) 陰影顏色 內/外陰影; */ box-shadow: 0 15px 30px rgba(0, 0, 0, .4);
}
普通流(標準流)
塊級元素會獨佔一行,從上向下順序排列
行內元素會按照順序,從左到右順序排列,碰到父元素邊緣則會自動換行
浮動
定位
思考題:
我們首先要思考以下兩個佈局中最常見的問題?
雖然我們前面學過行內塊(inline-block)但是他卻有自己的缺陷:
概念:元素的浮動是指設定了浮動屬性的元素會
作用
語法
選擇器 { float: 屬性值;}
屬性值 | 描述 |
---|---|
none | 元素不浮動(預設值) |
left | 元素向左浮動 |
right | 元素向右浮動 |
浮動——浮、浮、浮——漂浮在普通流的上面,脫離標準流的
.box1 {
width: 200px;
height: 200px;
background-color: rgba(255, 0, 0, 0.5);
float: left;
}
.box2 {
width: 150px;
height: 300px;
background-color: skyblue;
}
小結:float屬性會讓盒子浮動在標準流的上面,所以第二個標準流的盒子跑到浮動盒子的底下了
浮動——漏、漏、漏,浮動的盒子,把自己原來的位置漏給下面 下麪標準流的盒子,就是不佔有原來位置,是脫離標準流的,我們俗稱「脫標」
.box1 {
width: 200px;
height: 200px;
bakcground-color: rgba(255, 0, 0, 0.5);
/* 讓第一個盒子浮動起來,不佔位置 */
float: left;
}
.box2 {
width: 150px;
height: 300px;
bakcground-color: skyblue;
}
浮動——特性float屬性會改變元素display屬性
任何元素都可以浮動,浮動元素會生成一個塊級框,而不論它本身是何種元素,生成的塊級框和我們前面的行內塊極其相似
【注意】浮動元素之間預設沒有縫隙
【注意】浮動的元素相互貼靠在一起的,但是如果父級寬度裝不下這些浮動的盒子,多出的盒子會另起一行對齊
特點 | 說明 |
---|---|
浮 | 家裏浮動的盒子是浮起來的,浮動在其他標準流盒子的上面 |
漏 | 加了浮動的盒子是不佔位置的,它原來的位置漏給了標準流的盒子 |
特 | 特別注意:浮動元素會改變display屬性,類似轉換爲行內塊,但是元素之間沒有空白縫隙 |
浮動和標準流的父盒子搭配
我們知道,浮動是脫標的,會影響下面 下麪的標準流元素。此時,我們需要給浮動的元素新增一個標準流的父親,這樣,最大化的減小了對其他標準流的影響
在一個父盒子中,如果前一個兄弟盒子是:
浮動只會影響當前的或者是後面的標準流的盒子,不會影響前面的標準流
因爲父級盒子很多情況下,不方便給高度,但是子盒子浮動就不佔有位置,最後父級盒子高度爲0,就影響了下面 下麪的標準流盒子
總結:
清除浮動主要爲了解決父級元素因爲子級浮動引起內部高度爲0的問題。清除浮動之後,父級就會根據浮動的子盒子自動檢測高度。父級有了高度,就不會影響下面 下麪的標準流了
選擇器 { clear: 屬性值; }
屬性值 | 描述 |
---|---|
left | 不允許左側有浮動元素(清除左側浮動的影響) |
right | 不允許右側有浮動元素(清除右側浮動的影響) |
both | 同時清除左右兩側浮動的影響 |
但是我們實際工作中,幾乎只用clear: both;
W3C推薦的做法是通過在浮動元素末尾新增一個空的標籤例如<div style="clear: both;"></div>,或者其他標籤br等亦可
可以給父級新增:overflow爲 hidden | auto | scroll 都可以實現
:after方式爲空元素額外標籤法的升級版,好處是不用單獨新增標籤了**
使用方法:
.clearfix:after {
content: "";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
/* IE6、7專有 */
.clearfix {
*zoom: 1;
}
使用方法:
.clearfix:before,
.clearfix:after {
content: "";
display: table;
}
.clearfix:after {
clear: both;
}
.clearfix {
*zoom: 1;
}
什麼使用需要清除浮動
清除浮動的方式 | 優點 | 缺點 |
---|---|---|
額外標籤法(隔牆法) | 通俗易懂 | 新增許多無意義的標籤,結構化比較差 |
父級overflow:hidden; | 書寫簡單 | 溢位隱藏 |
父級僞元素 | 結構語意化正確 | 由於IE6、7不支援after,相容性問題 |
父級雙僞元素 | 結構語意化正確 | 由於IE6、7不支援after,相容性問題 |
讓盒子從普通流中浮動起來——讓多個盒子(div)水平排列成一行
將盒子定在某一個位置自由的漂浮在其他盒子的上面—— CSS離不開定位,特別是後面的js特效
定位也是用來佈局的,它有兩部分組成:定位 = 定位元型樣 + 邊偏移
在CSS中,通過top、bottom、left、right屬性定義元素的邊偏移
邊偏移屬性 | 範例 | 描述 |
---|---|---|
top | top:80px | 頂端偏移量,定義元素相對於其父元素上邊線的距離 |
bottom | bottom:80px | 底部偏移量,定義元素相對於其父元素下邊線的距離 |
left | left:80px | 左側偏移量,定義元素相對於其父元素左邊線的距離 |
right | right:80px | 右側偏移量,定義元素相對於其父元素右邊線的距離 |
在CSS中,通過position屬性定義元素的定位元型樣,語法格式如下:
選擇器 { position: 屬性值;}
值 | 語意 |
---|---|
static | 靜態定位 |
relative | 相對定位 |
absolute | 絕對定位 |
fixed | 固定定位 |
效果圖:
相對定位的特點:
絕對定位是元素以帶有定位的父級元素來移動位置(拼爹型)
絕對定位的特點:
定位口訣——子絕父相
固定定位是絕對定位的一種特殊形式:(認死理型),如果說絕對定位是一個矩形,那麼固定定位就類似於正方形
完全脫標_完全不佔位置
只認瀏覽器的可視視窗——瀏覽器可視視窗 + 邊偏移屬性 來設定元素的位置
【注意】絕對定位/固定定位的盒子不能通過設定margin: auto設定水平居中
在使用絕對定位時要想實現水平居中,可以按照下圖的方法:
在使用定位佈局時,可能會出現盒子重疊的情況
加了定位的盒子,預設後來者居上,後面的盒子會壓住前面的盒子
應用z-index層疊等級屬性可以調整盒子的堆疊順序。如下圖所示:
z-index的特性如下:
【注意】z-index只能應用於相對定位、絕對定位和固定定位的元素,其他標準流、浮動和靜態定位無效
前面講過,display是顯示模式,可以改變顯示模式有以下方式:
【注意】浮動元素、絕對定位(固定定位)元素的都不會出發外邊距合併的問題
定位元型樣 | 是否脫標佔有位置 | 移動位置基準 | 模式切換(行內塊) | 使用情況 |
---|---|---|---|---|
靜態static | 不脫標,正常模式 | 正常模式 | 不能 | 幾乎不用 |
相對定位relative | 不脫標,佔有位置 | 相對自身位置移動 | 不能 | 基本單獨使用 |
絕對定位absolute | 完全脫標,不佔有位置 | 相對於定位父級移動位置 | 能 | 要和定位父級元素搭配使用 |
固定定位fixed | 完全脫標,不佔有位置 | 相對於瀏覽器移動位置 | 能 | 單獨使用,不需要父級 |
【注意】
display: none; 隱藏物件
display: block; 除了轉換爲塊級元素之外,同時還有顯示元素的意思
visibility: visible; 物件可視 visibility: hidden; 物件隱藏
屬性值 | 描述 |
---|---|
visible | 不剪下內容也不新增卷軸 |
hidden | 不顯示超過物件尺寸的內容,超出的部分隱藏掉 |
scroll | 不管超出內容,總是顯示卷軸 |
auto | 超出自動顯示卷軸,不超出不顯示卷軸 |
屬性 | 區別 | 用途 |
---|---|---|
display | 隱藏物件,不保留位置 | 配合後面js做特效,比如下拉式選單,原先沒有,滑鼠經過,顯示下拉式選單,應用極爲廣泛 |
visibility | 隱藏物件,保留位置 | 使用較少 |
overflow | 只是隱藏超出大小的部分 | 可以清除浮動 保證盒子裏面的內容不會超出蓋盒子範圍 |
設定或檢索在物件上移動的滑鼠指針採用何種系統預定義 的遊標形式
屬性值 | 描述 |
---|---|
default | 預設 |
pointer | 小手 |
move | 移動 |
text | 文字 |
not-allowed | 禁止 |
是繪製於元素周圍的一條線,位於邊框邊緣的外面,可起到突出元素的作用
outline : outline-color ||outline-style || outline-width
但是我們都不關心可以設定多少,我們平時都是去掉的
最直接的寫法是:outline: 0; 或者 outline: none;
<input type="text" style="outline: 0;"/>
實際開發中,我們文字域右下角是不可推拽:
<textarea style="resize: none;"></textarea>
屬性 | 作用 | 用途 |
---|---|---|
滑鼠樣式 | 更改滑鼠樣式cursor | 樣式很多,重點記住pointer |
輪廓線 | 表單預設outline | outline輪廓線,我們一般直接去掉,border是邊框,我們會經常用 |
防止拖拽 | 主要針對文字域resize | 防止使用者隨意拖拽文字域,造成頁面佈局混亂,我們使用resize: none; |
vertical-align垂直對齊,它只針對行內元素或者行內塊元素
vertical-align : baseline |top |middle |bottom
設定或檢索物件內容的垂直對齊方式
【注意】vertical-align不影響塊級元素中的內容對齊,它只針對於行內元素或者行內塊元素,特別是行內塊元素,通常用來控製圖片/表單與文字的對齊
通過vertical-align控製圖片和文字的垂直關係,預設的圖片會和文字基線對齊
模式 | 單詞 |
---|---|
基線對齊:預設的是文字和圖片基線對齊 | vertical-align: baseline; |
垂直居中:預設的是文字和圖片基線對齊 | vertical-align: middle; |
頂部對齊:預設的是文字和圖片基線對齊 | vertical-align: top; |
原因:
解決方法:
white-space設定或檢索物件內文字顯示放十四。通常我們使用於強制一行顯示內容
white-space: normal; 預設處理方式
white-space: nowrap; 強制在同一行內顯示所有文字,直到文字結束或者遭遇br標籤物件才換行
設定或檢索是否使用一個省略標記(……)表示物件內文字的溢位
text-overflow: clip; 不顯示省略標記(……),而是簡單的裁切
text-overflow: ellipsis; 當物件內文字溢位時顯示省略標記(……)
【注意】一定要首先強制一行內顯示,再次和overflow屬性搭配使用
/* 1. 先強制一行內顯示文字 */
white-space: nowrap;
/* 2. 超出的部分隱藏 */
overflow: hidden;
/* 3. 文字用省略號替代超出的部分 */
text-overflow: ellipsis;
圖所示爲網頁的請求原理圖,當使用者存取一個網站時,需要向伺服器發送請求,網頁上的每張影象都要經過一次請求才能 纔能展示給使用者。
然而,一個網頁中往往會應用很多小的背景影象作爲修飾,當網頁中的影象過多時,伺服器就會頻繁地接收和發送請求,這將大大降低頁面的載入速度
【why?】爲了有效地減少伺服器接受和發送請求的次數,提高頁面的載入速度
css精靈其實是將網頁中的一些背景影象整合到一張大圖中(精靈圖),然而,各個網頁元素通常只需要精靈圖中不同位置的某個小圖,要想精確定位到精靈圖中的某個小圖
當使用者存取該頁面時,只需向伺服器發送一次請求,網頁中的背景影象即可全部展示出來
需要使用CSS中的
在這裏插入圖片描述
爲了使各種特殊形狀的背景能夠自適應元素中文字內容的多少,出現了CSS滑動門技術。它從新的角度構建頁面,使各種特殊形狀的背景能夠自由拉伸滑動,以適應元素內部的文字內容,可用性更強,最常見於各種導航欄的滑動門
核心技術就是利用CSS精靈(主要是背景位置)和盒子padding撐開寬度,以使能適應不同字數的導航欄
一般的經典佈局都是這樣的:
<a href="#">
<span>公司</span>
</a>
<a href="#">
<span>公司新聞</span>
</a>
CSS樣式
/* 1. a是設定左側背景(左門) */
a {
/* 因爲是滑動門,左右推拉的。跟文字內容多少有關,此時需要用文字撐開盒子,就要用到行內塊 */
display: inline-block;
height: 33px;
background: url(images/to.png) no-repeat;
margin: 100px;
padding-left: 15px;
color: #fff;
}
/* 2. span是設定右側背景(右門) */
a span {
display: inline-block;
height: 33px;
/* 注意span需要背景圖片右對齊 */
background: url(images/to.png) no-repeat right top;
padding-right: 15px;
}
效果:
總結:
1)負邊距+定位:水平居中
2)壓住盒子相鄰邊框
【注意】
div {
width: 0;
height: 0;
border-top: 10px solid red;
border-right: 10px solid green;
border-bottom: 10px solid blue;
border-left: 10px solid pink;
}
效果:
總結:
我們用css 邊框可以模擬三角效果
寬度高度爲0
我們4個邊框都要寫, 只保留需要的邊框顏色,其餘的不能省略,都改爲 transparent 透明就好了
而,各個網頁元素通常只需要精靈圖中不同位置的某個小圖,要想精確定位到精靈圖中的某個小圖
[外連圖片轉存中…(img-FULWAyCM-1597025809311)]
當使用者存取該頁面時,只需向伺服器發送一次請求,網頁中的背景影象即可全部展示出來
需要使用CSS中的