CSS——基礎知識點
一、CSS簡介
如何學習
- CSS是什麼
- CSS怎麼用(快速入門)
- CSS選擇器(重點+難點)
- 美化網頁(文字,陰影,超連結,列表,漸變...)
- 盒子模型
- 浮動
- 定位
- 網頁動畫(特效效果,菜鳥教程)
1.1、什麼是CSS
Cascading Style Sheet 層疊級聯樣式表
CSS:表現(美化網頁)
字型,顏色,邊距,高度,寬度,背景圖片,網頁定位,網頁浮動
1.2、發展史
CSS1.0
CSS2.0 DIV(塊)+ CSS,HTML與CSS結構分離的思想,網頁變得簡單,SEO
CSS2.1 浮動,定位
CSS3.0 圓角,陰影,動畫...... 瀏覽器相容性
1.3、快速入門
style
基本入門
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <!--規範,<style>可以編寫css的程式碼,每一個宣告,最好使用分號結尾 語法: 選擇器{ 宣告1; 宣告2; 宣告3; } --> <style> h1{ color: red; } </style> </head> <body> <h1>我是標題</h1> </body> </html>
-
建議使用這種規範
-
CSS的優勢:
- 內容和表現分離
- 網頁結構表現統一,可以實現複用
- 樣式十分的豐富
- 建議使用獨立於html的CSS檔案
- 利用SEO,容易被搜尋引擎收錄!
1.4、CSS的3中匯入方式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <!--內部樣式--> <style> h1{ color: green; } </style> <!--外部樣式--> <link rel="stylesheet" href="CSS/style.css"> </head> <body> <!--優先順序:就近原則--> <!--行內樣式:在標籤元素中,編寫一個style屬性,編寫樣式即可--> <h1 style="color: red">我是標題</h1> <h1>我是標題</h1> </body> </html>
拓展:外部樣式兩種寫法
-
連結式:
html標籤<!--外部樣式--> <link rel="stylesheet" href="CSS/style.css">
-
匯入式:
@import是CSS2.1特有的!<!--匯入式--> <style> @import url(css/style.css); </style>
二、選擇器
作用:選擇頁面上的某一個或者某一類元素
2.1、基本選擇器
-
標籤選擇器:選擇一類標籤 標籤{ }
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> /*標籤選擇器,會選擇到頁面上所有的這個標籤的元素*/ h1{ color: #77a265; background: #7f24a2; border-radius: 24px; } p{ font-size: 80px; } </style> </head> <body> <h1>學Java</h1> <p>聽狂神說</p> </body> </html>
-
類選擇器 class:選擇所有class屬性一致的標籤,跨標籤 .類名{ }
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> /*類選擇器的格式 .class的名稱{} 好處,可以多個標籤歸類,是同一個class,可以複用 */ .weiming{ color: aquamarine; } .kuangshen{ color: #7f24a2; } </style> </head> <body> <h1 class="weiming">標題1</h1> <h1 class="kuangshen">標題2</h1> <h1 class="weiming">標題3</h1> </body> </html>
-
ID選擇器:全域性唯一! #id名{ }
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> /* id選擇器 :id必須保證全域性唯一! #id名稱{} 優先順序: 不遵循就近原則,固定的 id選擇器 > class 選擇器 > 標籤選擇器 */ #qinjiang{ color: blue; } .style1{ color: rgba(255, 192, 149, 0.82); } h1{ color: red; } </style> </head> <body> <h1 id="qinjiang" class="style1">標題1</h1> <h1 class="style1">標題2</h1> <h1 class="style1">標題3</h1> <h1>標題4</h1> <h1>標題5</h1> </body> </html>
- 優先順序:
不遵循就近原則,固定的
id選擇器 > class 選擇器 > 標籤選擇器
2.2、層次選擇器
-
後代選擇器:在某個元素的後面 祖爺爺 爺爺 爸爸 你
/*後代選擇器*/ body p{ background: red; }
-
子選擇器,一代,兒子
/*子選擇器*/ body>p{ background: aqua; }
-
相鄰兄弟選擇器 同輩
/*相鄰弟選擇器:只有一個,相鄰(向下)*/ .active + p{ background: cornflowerblue; }
-
通用選擇器
/*通用兄弟選擇器,當前選中元素向下的所有兄弟元素*/ .active~p{ background: #7f24a2; }
-
上面程式碼合集
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> /*p{*/ /* background: #77a265;*/ /*}*/ /*後代選擇器*/ /*body p{*/ /* background: red;*/ /*}*/ /*子選擇器*/ /*body>p{*/ /* background: aqua;*/ /*}*/ /*相鄰弟選擇器:只有一個,相鄰(向下)*/ /*.active + p{*/ /* background: cornflowerblue;*/ /*}*/ /*通用兄弟選擇器,當前選中元素向下的所有兄弟元素*/ .active~p{ background: #7f24a2; } </style> </head> <body> <p>p0</p> <p class="active">p1</p> <p>p2</p> <p>p3</p> <ul> <li> <p>p4</p> </li> <li> <p>p5</p> </li> <li> <p>p6</p> </li> </ul> </body> </html>
2.3、結構偽類選擇器
偽類:
/*ul的第一個子元素*/ul li:first-child{ background: blue;}/*ul的最後一個子元素*/ul li:last-child{ background: cornflowerblue;}/*選中P1:定位到父元素,選擇當前的第一個元素選擇當前p元素的父級元素,選中父級元素的第一個子元素,並且是當前元素才生效,按順序!*/p:nth-child(1){ background: antiquewhite;}/*選中父元素下的p元素的第二個,按型別*/p:nth-of-type(2){ background: yellow;}
2.4、屬性選擇器(常用)
id + class 結合
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.demo a{
float: left;
display: block;
height: 50px;
width: 50px;
border-radius: 10px;
background: blue;
text-align: center;
color: gainsboro;
text-decoration: none;
margin-right: 5px;
font: bold 20px/50px Arial;
}
/*屬性名,屬性名 = 屬性值(正則)
= 絕對等於
*= 包含這個元素
^=以這個開頭
$=以這個結尾
*/
/*存在id屬性的元素 a[]{}*/
/*a[id]{*/
/* background: yellow;*/
/*}*/
/*id=first的元素*/
/*a[id=first]{*/
/* background: green;*/
/*}*/
/*class中有links的元素*/
/*a[class*="links"]{*/
/* background: yellow;*/
/*}*/
/*選中href中以http開頭的元素*/
/*a[href^=http]{*/
/* background: yellow;*/
/*}*/
a[href$=pdf]{
background: #7f24a2;
}
</style>
</head>
<body>
<p class="demo">
<a href="http://www.baidu.com" class="links item first" id="first">1</a>
<a href="" class="links item active" target="_blank" title="test">2</a>
<a href="" class="links item">3</a>
<a href="" class="links item">4</a>
<a href="" class="links item">5</a>
<a href="abc" class="links item">6</a>
<a href="/a.pdf" class="links item">7</a>
<a href="/abc.pdf" class="links item">8</a>
<a href="abc.doc" class="links item">9</a>
<a href="abcd.doc" class="links item last">10</a>
</p>
</body>
</html>
三、美化網頁元素
3.1、為什麼要美化網頁
- 有效的傳遞頁面資訊
- 美化網頁,頁面漂亮,才能吸引使用者
- 凸顯頁面的主題
- 提高使用者體驗
-
span標籤:重點要突出的字,使用span套起來
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> #title1{ font-size: 50px; } </style> </head> <body> 歡迎學習<span id="title1">Java</span> </body> </html>
3.2、字型樣式
/*依次為字型風格,粗細,大小 字型*/
p{
font: oblique bolder 16px "楷體";
}
<!--
font-family:字型
font-size:字型大小
font-weight:字型粗細
color:字型顏色
-->
<style>
body{
font-family: "Arial Black",楷體;
color: cornflowerblue;
}
h1{
font-size: 50px;
}
.p1{
font-weight: bold;
}
</style>
3.3、文字樣式
- 顏色 color RGB RGBA
- 文字對齊方式 text-align = center
- 首行縮排 text-indent: 2em
- 行高 line-height: 單行文字上下居中!line-height = height
- 裝飾 text-decoration
- 文字圖片水平對齊:vertical-align: middle
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--
顏色:
單詞
RGB 0~F
RGBA A:0~1(透明度的值)
text-align:排版,居中,
text-indent: 2em; 段落首行縮排
height: 100px;
line-height: 100px;
行高和塊的高度一致就可以居中了
-->
<style>
h1{
color: rgba(0,255,255,0.9);
text-align: center;
}
.p1{
text-indent: 2em;
}
.p3{
background: #7f24a2;
height: 100px;
line-height: 100px;
}
/*下劃線*/
.l1{
text-decoration: underline;
}
/*中劃線*/
.l2{
text-decoration: line-through;
}
/*上劃線*/
.l3{
text-decoration: overline;
}
/*a標籤去下劃線*/
a{
text-decoration: none;
}
/*水平對齊~ 參照物, a,b*/
img,span{
vertical-align: middle;
}
</style>
</head>
<body>
<a href="">123</a>
<p class="l1">123123</p>
<p class="l2">123123</p>
<p class="l3">123123</p>
<h1>現場|蘇炳添:我的身份是老師,我要回暨南大學報到了</h1>
<p class="p1">在6日晚的男子4×100米接力拿下第四後,蘇炳添和隊友都對今天的交接棒不太滿意。</p>
<p>蘇炳添表示,“今天交接棒只能打80分吧,我和謝震業接棒出現了問題,和吳智強的接棒也出現了點問題。”</p>
<p class="p3">
When I wake up in the morning,You are all I see;
When I think about you,And how happy you make me.
You're everything I wanted; You're everything I need;
I look at you and know;
That you are all to me.
Barry Fitzpatrick.
</p>
<p>
<img src="images/1.jpg" alt="">
<span>蘇炳添</span>
</p>
</body>
</html>
3.4、陰影
/*text-shadow:陰影顏色,水平偏移,垂直偏移,陰影半徑*/#price{ text-shadow: #09e7ff 10px 10px 3px;}
3.5、超連結偽類
正常情況下只需要記住:a,a:hover
/*預設的顏色*/
a{
text-decoration: none;
color: #000000;
}
/*滑鼠懸浮的顏色(只需要記住:hover)*/
a:hover{
color: orange;
font-size: 50px;
}
/*滑鼠按住為釋放的狀態*/
a:active{
color: blue;
}
3.6、列表
#nav{
width:300px;
background: #e1e4e0;
}
.title{
font-size: 18px;
font-weight: bold;
text-indent: 1em;
line-height: 35px;
background: red;
}
/*ul li*/
/*
list-style:
none; 去掉原點
circle; 空心圓
decimal; 數字
square; 正方形
*/
/*ul{*/
/* background: #e1e4e0;*/
/*}*/
ul li{
height: 30px;
list-style: none;
text-indent: 1em;
}
a{
text-decoration: none;
font-size: 14px;
color: #000000;
}
a:hover{
color: orange;
text-decoration: underline;
}
3.7、背景
背景顏色
背景圖片
div{ width: 1000px; height: 700px; border: 1px solid red; background-image:url("images/1.jpg") ; /*預設是全部平鋪的*/}/*水平平鋪*/.div1{ background-repeat:repeat-x;}/*豎直平鋪*/.div2{ background-repeat: repeat-y;}/*不平鋪*/.div3{ background-repeat: no-repeat;}
3.8、漸變
background-color: #4158D0;
background-image: linear-gradient(287deg, #4158D0 0%, #C850C0 46%, #FFCC70 100%);
找漸變色推薦的網站:https://www.grabient.com/
四、盒子模型
4.1、什麼是盒子模型
margin:外邊距
padding:內邊距
border:邊框
4.2、邊框
- 邊框的粗細
- 邊框的樣式
- 邊框的顏色
/*body總有一個預設的外邊距,讓margin:0*/
body{
margin: 0;
}
/*border:粗細,樣式,顏色*/
#app{
width: 300px;
border: 1px solid #808fa2;
}
h2{
font-size: 16px;
background-color: #8EC5FC;
line-height: 30px;
color: white;
}
form{
background: #8EC5FC;
}
div:nth-of-type(1) input{
border: 3px solid black;
}
div:nth-of-type(2) input{
border: 2px dashed #E0C3FC;
}
4.3、內外邊距
/*順時針旋轉margin: 0margin: 0 1pxmargin: 0 1px 2px 3px*/h2{ font-size: 16px; background-color: #8EC5FC; line-height: 30px; color: white; margin: 0 1px 2px 3px;}
盒子的計算方式:你這個元素到底多大?
margin+border+padding+內容寬度
4.4、圓角邊框
border-radius: 50px 20px 10px 5px;
/*
左上 右上 右下 左下,順時針方向
圓圈:圓角 = 半徑!
*/
4.5、盒子陰影
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--margin:0 auto;居中
要求:塊元素,塊元素有固定的寬度
-->
<style>
div{
width: 100px;
height: 100px;
margin: 0 auto;
}
img{
border-radius: 50px;
box-shadow: 10px 10px 100px yellow;
}
</style>
</head>
<body>
<div>
<img src="images/1.jpg" alt="籃球">
</div>
</body>
</html>
五、浮動
5.1、標準文件流
塊級元素:獨佔一行
h1~h6 p div 列表...
行內元素:不獨佔一行
span a img strong...
行內元素可以被包含在塊級元素中,反之則不可以
5.2、display
<!--block 塊元素inline 行內元素inline-block 是塊元素,但是可以內聯在一行!none.--><style> div{ width: 100px; height: 100px; border: 1px solid red; display:inline; } span{ width: 100px; height: 100px; border: 1px solid red; display: inline-block; }</style>
- 這個也是一種實現行內元素排列的方式,但是我們很多情況都是用float
5.3、float
- 左右浮動 float
div{
margin: 10px;
padding: 5px;
}
#father{
border: 1px solid #000000;
}
.layer01{
border: 1px dashed #ff0000;
display: inline-block;
float: left;
}
.layer02{
border: 1px dashed #00f;
display: inline-block;
float: left;
}
.layer03{
border: 1px dashed #006600;
display: inline-block;
float: left;
}
.layer04{
border: 1px dashed #666;
font-size: 50px;
line-height: 70px;
display: inline-block;
float: left;
}
5.4、父級邊框塌陷的問題
- clear
/*
clear:right; 右側不允許有浮動元素
clear:left; 左側不允許有浮動元素
clear:both; 兩側不允許有浮動元素
*/
-
解決方案:
-
增加父級元素的高度
#father{ border: 1px solid #000000; height: 800px; }
-
增加一個空的div標籤,清除浮動
<div class="clear"></div> .clear{ clear: both; margin: 0; padding: 0; }
-
overflow
在父級元素中增加一個 overflow:hidden
-
父類新增一個偽類:after
#father:after{ content: ''; display: block; clear: both; }
-
小結:
-
浮動元素後面增加一個空的div
利弊:簡單,程式碼中儘量避免空div -
設定父元素的高度
利弊:簡單,元素假設有了固定的高度,就會塌陷
-
overflow
利弊:簡單,下拉的一些場景避免使用 -
父類新增一個偽類:after(推薦)
利弊:寫法稍微複雜一點,但是沒有副作用,推薦使用!
5.5、對比
- display
方向不可以控制 - float
浮動起來的話會脫離標準文件流,所以要解決父級邊框塌陷的問題
六、定位
6.1、相對定位
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> div{ margin: 0; padding: 5px; font-size: 12px; line-height: 25px; } #father{ border: 1px solid #8EC5FC; padding: 0px; margin: 20px; } #first{ background-color: #E0C3FC; border: 1px dashed #808fa2; position: relative;/*相對定位,上下左右*/ top: -20px; left: 20px; } #second{ background-color: #09e7ff; border: 1px dashed #7f24a2; } #third{ background-color: yellow; border: 1px dashed #fcdfa0; position: relative; bottom: 10px; right: 20px; } </style> </head><body><div id="father"> <div id="first">第一個盒子</div> <div id="second">第二個盒子</div> <div id="third">第三個盒子</div></div></body></html>
相對定位:position: relative;
相對於原來的位置,進行指定的偏移,相對定位的話,它仍然在標準文件流中!原來的位置會被保留;
top: -20px;
left: 20px;
bottom: 10px;
right: 20px;
-
練習
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> #box{ width: 300px; height: 300px; padding: 10px; border: 2px solid red; } a{ width: 100px; height: 100px; text-decoration: none; background-color: pink; line-height: 100px; text-align: center; color: white; display: block; } a:hover{ background: blue; } .a2,.a4{ position: relative; left: 200px; top: -100px; } .a5{ position: relative; left: 100px; top: -300px; } </style> </head> <body> <div id="box"> <a href="#" class="a1">連結1</a> <a href="#" class="a2">連結2</a> <a href="#" class="a3">連結3</a> <a href="#" class="a4">連結4</a> <a href="#" class="a5">連結5</a> </div> </body> </html>
6.2、絕對定位
定位:基於xxx定位,上下左右
- 沒有父級元素定位的前提下,相對於瀏覽器定位
- 假設父級元素存在定位,我們通常會相對於父級元素進行偏移
- 在父級元素範圍內運動
相對於父級或瀏覽器的位置,進行指定的偏移,絕對定位的話,它不在標準文件流中!原來的位置不會被保留;
div{
margin: 0;
padding: 5px;
font-size: 12px;
line-height: 25px;
}
#father{
border: 1px solid #8EC5FC;
padding: 5px;
margin: 20px;
position: relative;
}
#first{
background-color: #E0C3FC;
border: 1px dashed #808fa2;
}
#second{
background-color: #09e7ff;
border: 1px dashed #7f24a2;
position: absolute;
right: 30px;
top: 5px;
}
#third{
background-color: yellow;
border: 1px dashed #fcdfa0;
}
6.3、固定定位fixed
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
body{
height: 1000px;
}
div:nth-of-type(1){/*絕對定位:相對於瀏覽器初始位置的*/
width: 100px;
height: 100px;
background: red;
position: absolute;
right: 0;
bottom: 0;
}
div:nth-of-type(2){/*fixed,固定定位,定死在固定位置*/
width: 50px;
height: 50px;
background: yellow;
position: fixed;
right: 0;
bottom: 0;
}
</style>
</head>
<body>
<div>div1</div>
<div>div2</div>
</body>
</html>
6.4、z-index
-
圖層的概念
z-index:預設是0,最高無限
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="content">
<ul>
<li><img src="images/1.jpg" alt=""></li>
<li class="tipText">學習微服務,找狂神</li>
<li class="tipBg"></li>
<li>時間:2099-01-01</li>
<li>地點:月球一號基地</li>
</ul>
</div>
</body>
</html>
opacity: 0.3 ; 背景透明度
#content{
width: 331px;
padding: 0;
margin: 0;
overflow: hidden;
font-size: 12px;
line-height: 25px;
border: 1px solid #8EC5FC;
}
ul,li{
padding: 0;
margin: 0;
list-style: none;
}
/*父級元素相對定位*/
#content ul{
position: relative;
}
.tipText{
position: absolute;
width: 331px;
height: 25px;
top: 210px;
color: white;
z-index: 1;
}
.tipBg{
background: #000000;
position: absolute;
top: 210px;
width: 331px;
height: 25px;
opacity: 0.3;/*背景透明度*/
}