CSS介紹
CSS(Cascading Style Sheet,層疊樣式表)定義如何顯示HTML元素。
當瀏覽器讀到一個樣式表,它就會按照這個樣式表來對文檔進行格式化(渲染)。
CSS語法
CSS實例
div { color: read; font-size:14px; } #解釋 div 是一個選擇器 color:red; 是一個聲明,其中color是屬性,red是值. #css的注釋方法 /**/
CSS的引入方式
<p style="color:red">Hello,word.</p>
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
p{
color:"red";
}
</style>
</head>
<link href="mystyle.css" rel="stylesheet" type="text/css"/>
CSS選擇器
p {color:"red";} #針對所有的p標簽生效
#li {backgroud-color:red;} #針對所有的標簽的ID有效
.c1 {
font-size: 14px;
} #所有c1的類生效
p.c1 {
color:red;
} #所有p標簽下的c1類生效
* { color:white; } #針對所有生效
組合選擇器
li a { color:green;} /*li標簽內部的a標簽設置字體顏色*/
div>p { font-fize: 20px;} /*選擇所有父級是div元素的p元素*/
dev+p { margin:5px; } /*選擇所有接着的div元素之后的p元素*/
#i1~p {border: 2px solid royalbue; } /*il后面所有的兄弟標簽*/
屬性選擇器
p[title] {color:red;} /*用於選取帶有指定屬性的元素*/
p[title="213"] {color:green;} /*用於選取帶有指定屬性和值得元素*/
分組和嵌套
div,p {color:red;}
.c1 p { color:red; }
偽類選擇器
1 /* 未訪問的鏈接 */ 2 a:link { 3 color: #FF0000 4 } 5 6 /* 已訪問的鏈接 */ 7 a:visited { 8 color: #00FF00 9 } 10 11 /* 鼠標移動到鏈接上 */ 12 a:hover { 13 color: #FF00FF 14 } 15 16 /* 選定的鏈接 */ 17 a:active { 18 color: #0000FF 19 } 20 21 /*input輸入框獲取焦點時樣式*/ 22 input:focus { 23 outline: none;
偽類元素選擇器
1、first-letter
/*常用的給首字母設置特殊樣式*/
p:first-letter {
font-size: 48px;
color: red;
}
2、before
/*在每個<p>元素之前插入內容*/
p:before {
content:"*";
color:red;
}
3、after
/*在每個<p>元素之后插入內容*/
p:after {
content:"[?]";
color:blue;
}
選擇器的優先級
1、CSS繼承
繼承是CSS的一個主要特征、他是依賴於祖先-后代的關系的。繼承是一種機制、他允許樣式不僅可以應用於某個特定的元素、還可以應用於他的后代、例如:一個body定義了的字體顏色值也會應用到段落的文本中。
body { color:red;}
p { color:green;}
2、選擇器的優先級
除此之外還可以通過添加 !import方式來強制讓樣式生效,但並不推薦使用。因為如果過多的使用!import會使樣式文件混亂不易維護。
萬不得已可以使用!import
CSS的屬性
字體屬性
1、文本字體
font-family可以把多個字體名稱作為一個“回退”系統來保存。如果瀏覽器不支持第一個字體,則會嘗試下一個。瀏覽器會使用它可識別的第一個值。
body {
font-family: "Microsoft Yahei", "微軟雅黑", "Arial", sans-serif #如果系統不支持第一個字體就使用第二個字體、然后依次類推.
}
2、字體大小
p {
font-size: 14px;
}
#如果設置成inherit表示繼承父元素的字體大小值。
3、字重
font-weight用來設置字體的字重(粗細)。
| 值 |
描述 |
| normal |
默認值,標准粗細 |
| bold |
粗體 |
| bolder |
更粗 |
| lighter |
更細 |
| 100~900 |
設置具體粗細,400等同於normal,而700等同於bold |
| inherit |
繼承父元素字體的粗細值 |
4、文本顏色
顏色屬性被用來設置文字的顏色。
顏色是通過CSS最經常的指定:
-
十六進制值 - 如:#FF0000
-
一個RGB值 -如:RGB(225,0,0)
-
顏色的名稱 - 如:red
還有rgba(255,0,0,0.3),第四個值為alpha, 指定了色彩的透明度/不透明度,它的范圍為0.0到1.0之間。
文字屬性
1、對齊方式
text-align 屬性規定元素中的文本的水平對齊方式。
| 值 |
描述 |
| left |
左邊對齊 默認值 |
| right |
右對齊 |
| center |
居中對齊 |
| justify |
兩端對齊 |
2、文字裝飾
text-decoration 屬性用來給文字添加特殊效果。
| 值 |
描述 |
| none |
默認。定義標准的文本。 |
| underline |
定義文本下的一條線。 |
| overline |
定義文本上的一條線。 |
| line-through |
定義穿過文本下的一條線。 |
| inherit |
繼承父元素的text-decoration屬性的值。 |
常用的為去掉a標簽默認的自划線:
a {
text-decoration: none;
}
3、首行縮進
p {
text-indent: 32px;
}
背景屬性
使用背景圖片的一個常見案例就是很多網站會把很多小圖標放在一張圖片上,然后根據位置去顯示圖片。減少頻繁的圖片請求。
例如:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 7 <title>滾動背景圖示例</title> 8 <style> 9 * { 10 margin: 0; 11 } 12 .box { 13 width: 100%; 14 height: 500px; 15 background: url("https://gss3.bdstatic.com/7Po3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike150%2C5%2C5%2C150%2C50/sign=78996ead8882b90129a0cb6112e4c212/f3d3572c11dfa9ec3d76139d60d0f703908fc1e4.jpg") no-repeat center center; 16 background-attachment: fixed; 17 } 18 .d1 { 19 height: 500px; 20 21 } 22 .d2 { 23 height: 500px; 24 25 } 26 .d3 { 27 height: 500px; 28 29 } 30 </style> 31 </head> 32 <body> 33 <div class="d1"></div> 34 <div class="box"></div> 35 <div class="d2"></div> 36 <div class="d3"></div> 37 </body> 38 </html>
邊框屬性
邊框屬性:-
border-width
-
border-style
-
border-color
#i1 {
border-width: 2px;
border-style: solid;
border-color: red;
}
簡寫的方式:
#i1 { border: 2px solid red;}
| 值 |
描述 |
| none |
無邊框。 |
| dotted |
點狀虛線邊框。 |
| dashed |
矩形虛線邊框。 |
| solid |
實線邊框。 |
1 #i1 { 2 border-top-style:dotted; 3 border-top-color: red; 4 border-right-style:solid; 5 border-bottom-style:dotted; 6 border-left-style:none; 7 }
用這個屬性能實現圓角邊框的效果。
將border-radius設置為長或高的一半即可得到一個圓形。
display屬性
用於控制HTML元素的顯示效果。
| 值 |
意義 |
| display:"none" |
HTML文檔中元素存在,但是在瀏覽器中不顯示。一般用於配合JavaScript代碼使用。 |
| display:"block" |
默認占滿整個頁面寬度,如果設置了指定寬度,則會用margin填充剩下的部分。 |
| display:"inline" |
按行內元素顯示,此時再設置元素的width、height、margin-top、margin-bottom和float屬性都不會有什么影響。 |
| display:"inline-block" |
使元素同時具有行內元素和塊級元素的特點。 |
display:"none"與visibility:hidden的區別:
1、visibility:hidden: 可以隱藏某個元素,但隱藏的元素仍需占用與未隱藏之前一樣的空間。也就是說,該元素雖然被隱藏了,但仍然會影響布局。
2、display:none: 可以隱藏某個元素,且隱藏的元素不會占用任何空間。也就是說,該元素不但被隱藏了,而且該元素原本占用的空間也會從頁面布局中消失。
CSS盒子模型
margin:用於控制元素與元素之間的距離、margin最基本的用途就是控制元素周圍空間的間隔、從視覺角度上來達到互相隔開的目的。
padding:用於控制內容與邊框之間的距離
border(邊框):圍繞在內邊距和內容外的邊框
content(內容):盒子的內容、顯示文本和圖像
示例圖:
1、margin外邊框
1 .margin-test { 2 margin-top:5px; 3 margin-right:10px; 4 margin-bottom:15px; 5 margin-left:20px; 6 } 7 #推薦使用簡寫 8 .margin-test { 9 margin: 5px 10px 15px 20px; 10 } 11 順序:上右下左 12 常見居中: 13 .mycenter { 14 margin: 0 auto; 15 }
2、padding內填充
1 .padding-test { 2 padding-top: 5px; 3 padding-right: 10px; 4 padding-bottom: 15px; 5 padding-left: 20px; 6 } 7 #簡寫 8 .padding-test { 9 padding: 5px 10px 15px 20px; 10 } 11 #順序:上右下左 12 補充padding的常用簡寫方式: 13 一個值,用於四邊; 14 二個值,第一個值用於上下,第二個值用於左右 15 三個值,第一個用於上,第二個用於左右,第三個用於下 16 四個之,用於上右下左
float浮動
在 CSS 中,任何元素都可以浮動。
浮動元素會生成一個塊級框,而不論它本身是何種元素。
浮動的兩個特點:
-
浮動的框可以向左或者向右移動、知道它的外邊緣碰到包含框或者另一個浮動框的邊框為止。
-
由於浮動框不在文檔的普通流中、所以文檔的普通流中的塊框表現就想浮動框不存在一樣。
1、三種取值
left:向左浮動
right:向右浮動
none:默認值,不浮動
clear清除浮動
clear屬性規定元素的哪一側不允許其他浮動元素。
| 值 |
描述 |
| left |
在左側不允許浮動元素。 |
| right |
在右側不允許浮動元素。 |
| both |
在左右兩側均不允許浮動元素。 |
| none |
默認值。允許浮動元素出現在兩側。 |
| inherit |
規定應該從父元素繼承 clear 屬性的值。 |
注意:clear屬性只會對自身起作用,而不會影響其他元素。
父標簽塌陷的問題:
1 .clearfix:after { 2 content: ""; 3 display: block; 4 clear: both; 5 }
Overflow溢出屬性
| 值 |
描述 |
| visible |
默認值。內容不會被修剪,會呈現在元素框之外。 |
| hidden |
內容會被修剪,並且其余內容是不可見的。 |
| scroll |
內容會被修剪,但是瀏覽器會顯示滾動條以便查看其余的內容。 |
| auto |
如果內容被修剪,則瀏覽器會顯示滾動條以便查看其余的內容。 |
| inherit |
規定應該從父元素繼承 overflow 屬性的值。 |
溢出方向:
-
overflow(水平和垂直均設置)
-
overflow-x (設置水平方向)
-
overflow-y (設置垂直方向)
Position定位
1、static
static 默認值,無定位,不能當作絕對定位的參照物,並且設置標簽對象的left、top等值是不起作用的的。
2、relative(相對定位)
相對定位是相對於該元素在文檔流中的原始位置,即以自己原始位置為參照物。有趣的是,即使設定了元素的相對定位以及偏移值,元素還占有着原來的位置,即占據文檔流空間。對象遵循正常文檔流,但將依據top,right,bottom,left等屬性在正常文檔流中偏移位置。而其層疊通過z-index屬性定義。
注意:position:relative的一個主要用法:方便絕對定位元素找到參照物。
3、absolute(絕對定位)
定義:設置為絕對定位的元素框從文檔流完全刪除,並相對於最近的已定位祖先元素定位,如果元素沒有已定位的祖先元素,那么它的位置相對於最初的包含塊(即body元素)。元素原先在正常文檔流中所占的空間會關閉,就好像該元素原來不存在一樣。元素定位后生成一個塊級框,而不論原來它在正常流中生成何種類型的框。
重點:如果父級設置了position屬性,例如position:relative;,那么子元素就會以父級的左上角為原始點進行定位。這樣能很好的解決自適應網站的標簽偏離問題,即父級為自適應的,那我子元素就設置position:absolute;父元素設置position:relative;,然后Top、Right、Bottom、Left用百分比寬度表示。
另外,對象脫離正常文檔流,使用top,right,bottom,left等屬性進行絕對定位。而其層疊通過z-index屬性定義。
4、fixed(固定)
fixed:對象脫離正常文檔流,使用top,right,bottom,left等屬性以窗口為參考點進行定位,當出現滾動條時,對象不會隨着滾動。而其層疊通過z-index屬性 定義。 注意點: 一個元素若設置了 position:absolute | fixed; 則該元素就不能設置float。這 是一個常識性的知識點,因為這是兩個不同的流,一個是浮動流,另一個是“定位流”。但是 relative 卻可以。因為它原本所占的空間仍然占據文檔流。
在理論上,被設置為fixed的元素會被定位於瀏覽器窗口的一個指定坐標,不論窗口是否滾動,它都會固定在這個位置。
#返回頂部按鈕實例
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="x-ua-compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1"> 7 <title>返回頂部示例</title> 8 <style> 9 * { 10 margin: 0; 11 } 12 13 .d1 { 14 height: 1000px; 15 16 } 17 18 19 20 .scrollTop { 21 22 padding: 10px; 23 text-align: center; 24 position: fixed; 25 right: 10px; 26 bottom: 20px; 27 } 28 </style> 29 </head> 30 <body> 31 <div class="d1">111</div> 32 <div class="scrollTop">返回頂部</div> 33 </body> 34 </html>
