1、CSS基礎語法介紹
2、CSS的幾種引入方式
3、CSS選擇器
-
1.基本選擇器
-
2.組合選擇器
-
3.屬性選擇器
-
4.分組和嵌套
-
5.僞類選擇器
-
6.僞元素選擇器
-
7.選擇器的優先級問題
4、CSS屬性
-
1.寬和高
-
2.字體屬性
-
3.文字屬性
-
4.背景屬性
-
5.邊框
-
6.border-radius
-
7.display屬性
5、盒子模型
-
1.盒子模型簡介
-
2.margin外邊距
-
3.padding內填充
-
4.float
-
5.clear
-
6.overflow溢出屬性
-
7.定位(position)
-
8.z-index
-
9.opacity
6、實例
-
1.頂部導航
-
2.麥子學院官網
-
3.博客的簡單實例
1、CSS基礎語法介紹
1.css介紹
2.css語法
1.css介紹
CSS(Cascading Style Sheet, 層疊樣式表)
當瀏覽器讀到一個樣式表,就會按照這個樣式表來對文檔進行渲染。
css出現的緣由:
1.html中大量重複的樣式
2.須要把文檔內容和樣式進行解耦
2.css語法
css結構:
每一個CSS樣式由兩部分組成:選擇器和聲明。聲明又包括屬性和屬性值。每一個聲明以後用分號結束。
CSS註釋:
CSS註釋的格式:
/*
解釋性的信息
*/
/* 全局通用的樣式 */
/* 導航條的樣式 */
/* 商品列表的樣式*/
2、CSS的幾種引入方式
1.行內樣式
2.內部樣式
3.外部樣式
1.行內樣式
行內樣式是在標記的style屬性中設定CSS樣式。不推薦大規模使用。
<p style="color: red">Hello world.</p>
2.內部樣式
嵌入式是將CSS樣式集中寫在網頁的<head></head>標籤中的<style></style>標籤中,格式以下:
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
p{
background-color: #2b99ff;
}
</style>
</head>
3.外部樣式
外部樣式就是將CSS寫在一個單獨的文件中,而後在頁面中進行引入。推薦使用此方式。
<link href="mystyle.css" rel="stylesheet" type="text/css"/>
3、CSS選擇器
1.基本選擇器
2.組合選擇器
3.屬性選擇器
4.分組和嵌套
5.僞類選擇器
6.僞元素選擇器
7.選擇器的優先級問題
1.基本選擇器
元素選擇器
ID選擇器
#i1 {
background-color: red;
}
類選擇器
.c1 {
font-size: 14px;
}
p.c1 {
color: red;
}
注意:
樣式類名不要用數字開頭(有的瀏覽器不認)。
標籤中的class屬性若是有多個,要用空格分隔。
通用選擇器
2.組合選擇器
後代選擇器(div p)
/*li內部的a標籤設置字體顏色*/
li a {
color: green;
}
兒子選擇器(div > p)
/*選擇全部父級是 <div> 元素的 <p> 元素*/
div>p {
font-family: "Arial Black", arial-black, cursive;
}
毗鄰選擇器(div + p)
/*選擇全部緊接着<div>元素以後的<p>元素*/
div+p {
margin: 5px;
}
弟弟選擇器(div~p)
/*i1後面全部的兄弟p標籤*/
#i1~p {
border: 2px solid royalblue;
}
3.屬性選擇器(不經常使用)
p[s9]{color:red;}
/*用於選取帶有指定屬性的元素。*/
p[title] {
color: red;
}
/*用於選取帶有指定屬性和值的元素。*/
p[title="213"] {
color: green;
}
p[s9="good"]{color:green;}
/*找到全部title屬性以hello開頭的元素*/
[title^="hello"] {
color: red;
}
/*找到全部title屬性以hello結尾的元素*/
[title$="hello"] {
color: yellow;
}
/*找到全部title屬性中包含(字符串包含)hello的元素*/
[title*="hello"] {
color: red;
}
/*找到全部title屬性(有多個值或值以空格分割)中有一個值爲hello的元素:*/
[title~="hello"] {
color: green;
}
4.分組和嵌套
分組
當多個元素的樣式相同的時候,咱們沒有必要重複地爲每一個元素都設置樣式,咱們能夠經過在多個選擇器之間使用逗號分隔的分組選擇器來統一設置元素樣式。
如:
一般,咱們會分兩行來寫,更清晰:
嵌套
多種選擇器能夠混合起來使用,好比:.c1類內部全部p標籤設置字體顏色爲紅色。
5.僞類選擇器
/* 未訪問的連接 */
a:link {
color: #FF0000
}
/* 已訪問的連接 */
a:visited {
color: #00FF00
}
/* 鼠標移動到連接上 */
a:hover {
color: #FF00FF
}
/* 選定的連接 */
a:active {
color: #0000FF
}
/*input輸入框獲取焦點時樣式*/
input:focus {
outline: none;
background-color: #eee;
}
6.僞元素選擇器
first-letter
經常使用的給首字母設置特殊樣式:
p:first-letter {
font-size: 48px;
color: red;
}
before
/*在每一個<p>元素以前插入內容*/
p:before {
content:"*";
color:red;
}
after
/*在每一個<p>元素以後插入內容*/
p:after {
content:"[?]";
color:blue;
}
before和after多用於清除浮動。
7.選擇器的優先級
CSS繼承
繼承是CSS的一個主要特徵,它是依賴於祖先-後代的關係的。繼承是一種機制,它容許樣式不只能夠應用於某個特定的元素,還能夠應用於它的後代。例如一個body定義了的字體顏色值也會應用到段落的文本中。
此時頁面上全部標籤都會繼承body的字體顏色。然而CSS繼承性的權重是很是低的,是比普通元素的權重還要低的0。
咱們只要給對應的標籤設置字體顏色就可覆蓋掉它繼承的樣式。
此外,繼承是CSS重要的一部分,咱們甚至不用去考慮它爲何可以這樣,但CSS繼承也是有限制的。有一些屬性不能被繼承,如:border, margin, padding, background等。
選擇器的優先級
瀏覽器是根據不一樣的選擇器的權重來找到一個元素而且爲其設置樣式,集體的選擇器權重計算方式以下圖:
能夠把樣式的應用方式分爲幾個等級,按照等級來計算權重
一、!important,加在樣式屬性值後,權重值爲 10000
二、內聯樣式,如:style=」」,權重值爲1000
三、ID選擇器,如:#content,權重值爲100
四、類,僞類和屬性選擇器,如: content、:hover 權重值爲10
五、標籤選擇器和僞元素選擇器,如:div、p、:before 權重值爲1
六、通用選擇器(*)、子選擇器(>)、相鄰選擇器(+)、同胞選擇器(~)、權重值爲0
除此以外還能夠經過添加 !import方式來強制讓樣式生效,但並不推薦使用。由於若是過多的使用!import會使樣式文件混亂不易維護。
萬不得已可使用!import,其權重爲10000
權重的計算示例
一、實例一:
<style type="text/css">
div{
color:red !important;
}
</style>
......
<div style="color:blue">這是一個div元素</div>
<!--
兩條樣式同時做用一個div,上面的樣式權重值爲10000+1,下面的行間樣式的權重值爲1000,
因此文字的最終顏色爲red
-->
二、實例二:
<style type="text/css">
#content div.main_content h2{
color:red;
}
#content .main_content h2{
color:blue;
}
</style>
......
<div id="content">
<div class="main_content">
<h2>這是一個h2標題</h2>
</div>
</div>
<!--
第一條樣式的權重計算: 100+1+10+1,結果爲112;
第二條樣式的權重計算: 100+10+1,結果爲111;
h2標題的最終顏色爲red
-->
4、CSS屬性
1.寬和高
2.字體屬性
3.文字屬性
4.背景屬性
5.邊框
6.border-radius
7.display屬性
1.寬和高
width屬性能夠爲元素設置寬度。
height屬性能夠爲元素設置高度。
塊級標籤才能設置寬度,內聯標籤的寬度由內容來決定。
2.字體屬性
文字字體
font-family能夠把多個字體名稱做爲一個「回退」系統來保存。若是瀏覽器不支持第一個字體,則會嘗試下一個。瀏覽器會使用它可識別的第一個值。
簡單實例:
body {
font-family: "Microsoft Yahei", "微軟雅黑", "Arial", sans-serif
}
字體大小
若是設置成inherit表示繼承父元素的字體大小值。
字重(粗細)
font-weight用來設置字體的字重(粗細)。
值
|
描述
|
normal
|
默認值,標準粗細
|
bold
|
粗體
|
bolder
|
更粗
|
lighter
|
更細
|
100~900
|
設置具體粗細,400等同於normal,而700等同於bold
|
inherit
|
繼承父元素字體的粗細值
|
文本顏色
顏色屬性被用來設置文字的顏色。
顏色是經過CSS最常常的指定:
* 十六進制值 - 如: #FF0000
* 一個RGB值 - 如: RGB(255,0,0)
* 顏色的名稱 - 如: red
還有rgba(255,0,0,0.3),第四個值爲alpha, 指定了色彩的透明度/不透明度,它的範圍爲0.0到1.0之間。
3.文字屬性
文字對齊
text-align 屬性規定元素中的文本的水平對齊方式。
值
|
描述
|
left
|
左邊對齊 默認值
|
right
|
右對齊
|
center
|
居中對齊
|
justify
|
兩端對齊
|
文字裝飾
text-decoration 屬性用來給文字添加特殊效果。
值
|
描述
|
none
|
默認。定義標準的文本。
|
underline
|
定義文本下的一條線。
|
overline
|
定義文本上的一條線。
|
line-through
|
定義穿過文本下的一條線。
|
inherit
|
繼承父元素的text-decoration屬性的值
|
經常使用的爲去掉a標籤默認的自劃線:
a {
text-decoration: none;
}
首行縮進
將段落的第一行縮進 32像素:
4.背景屬性
/*背景顏色*/
background-color: red;
/*背景圖片*/
background-image: url('1.jpg');
/*
背景重複
repeat(默認):背景圖片平鋪排滿整個網頁
repeat-x:背景圖片只在水平方向上平鋪
repeat-y:背景圖片只在垂直方向上平鋪
no-repeat:背景圖片不平鋪
*/
background-repeat: no-repeat;
/*背景位置*/
background-position: right top;
/*background-position: 200px 200px;*/
支持簡寫:
background:#ffffff url('1.png') no-repeat right top;
使用背景圖片的一個常見案例就是不少網站會把不少小圖標放在一張圖片上,而後根據位置去顯示圖片。減小頻繁的圖片請求。
鼠標滾動背景不動
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>滾動背景圖示例</title>
<style>
* {
margin: 0;
}
.box {
width: 100%;
height: 500px;
background-attachment: fixed;
}
.d1 {
height: 500px;
background-color: tomato;
}
.d2 {
height: 500px;
background-color: steelblue;
}
.d3 {
height: 500px;
background-color: mediumorchid;
}
</style>
</head>
<body>
<div class="d1"></div>
<div class="box"></div>
<div class="d2"></div>
<div class="d3"></div>
</body>
</html>
5.邊框
邊框屬性
* 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
|
實線邊框
|
除了能夠統一設置邊框外還能夠單獨爲某一個邊框設置樣式,以下所示:
#i1 {
border-top-style:dotted;
border-top-color: red;
border-right-style:solid;
border-bottom-style:dotted;
border-left-style:none;
}
6.border-radius
用這個屬性能實現圓角邊框的效果。
將border-radius設置爲長或高的一半便可獲得一個圓形。
7.display屬性
值
|
意義
|
display:"none"
|
HTML文檔中元素存在,可是在瀏覽器中不顯示。通常用於配合JavaScript代碼使用。
|
display:"block"
|
默認佔滿整個頁面寬度,若是設置了指定寬度,則會用margin填充剩下的部分。
|
display:"inline"
|
按行內元素顯示,此時再設置元素的width、height、margin-top、margin-bottom和float屬性都不會有什麼影響。
|
display:"inline-block"
|
使元素同時具備行內元素和塊級元素的特色。
|
display:"none"與visibility:hidden的區別:
visibility:hidden: 能夠隱藏某個元素,但隱藏的元素仍需佔用與未隱藏以前同樣的空間。也就是說,該元素雖然被隱藏了,但仍然會影響佈局。
display:none: 能夠隱藏某個元素,且隱藏的元素不會佔用任何空間。也就是說,該元素不但被隱藏了,並且該元素本來佔用的空間也會從頁面佈局中消失。
5、盒子模型
1.盒子模型簡介
2.margin外邊距
3.padding內填充
4.float
5.clear
6.overflow溢出屬性
7.定位(position)
8.z-index
9.opacity
1.盒子模型簡介
* margin: 用於控制元素與元素之間的距離;margin的最基本用途就是控制元素周圍空間的間隔,從視覺角度上達到相互隔開的目的。
* padding: 用於控制內容與邊框之間的距離;
* Border(邊框): 圍繞在內邊距和內容外的邊框。
* Content(內容): 盒子的內容,顯示文本和圖像。
2.margin外邊距
.margin-test {
margin-top:5px;
margin-right:10px;
margin-bottom:15px;
margin-left:20px;
}
推薦使用簡寫:
.margin-test {
margin: 5px 10px 15px 20px;
}
順序:上右下左
常見居中:
.mycenter {
margin: 0 auto;
}
3.padding內填充
.padding-test {
padding-top: 5px;
padding-right: 10px;
padding-bottom: 15px;
padding-left: 20px;
}
推薦使用簡寫:
.padding-test {
padding: 5px 10px 15px 20px;
}
順序:上右下左
補充padding的經常使用簡寫方式:
-
提供一個,用於四邊;
-
提供兩個,第一個用於上-下,第二個用於左-右;
-
若是提供三個,第一個用於上,第二個用於左-右,第三個用於下;
-
提供四個參數值,將按上-右-下-左的順序做用於四邊;
4.float
在 CSS 中,任何元素均可以浮動。
浮動元素會生成一個塊級框,而不論它自己是何種元素。
關於浮動的兩個特色:
* 浮動的框能夠向左或向右移動,直到它的外邊緣碰到包含框或另外一個浮動框的邊框爲止。
* 因爲浮動框不在文檔的普通流中,因此文檔的普通流中的塊框表現得就像浮動框不存在同樣。
三種取值
left:向左浮動
right:向右浮動
none:默認值,不浮動
5.clear
clear屬性規定元素的哪一側不容許其餘浮動元素。
值
|
描述
|
left
|
在左側不容許浮動元素。
|
right
|
在右側不容許浮動元素。
|
both
|
在左右兩側均不容許浮動元素。
|
none
|
默認值。容許浮動元素出如今兩側。
|
inherit
|
規定應該從父元素繼承 clear 屬性的值。
|
注意:clear屬性只會對自身起做用,而不會影響其餘元素。
父標籤塌陷問題
.clearfix:after {
content: "";
display: block;
clear: both;
}
6.overflow溢出屬性
值
|
描述
|
visible
|
默認值。內容不會被修剪,會呈如今元素框以外。
|
hidden
|
內容會被修剪,而且其他內容是不可見的。
|
scroll
|
內容會被修剪,可是瀏覽器會顯示滾動條以便查看其他的內容。
|
auto
|
若是內容被修剪,則瀏覽器會顯示滾動條以便查看其他的內容。
|
inherit
|
規定應該從父元素繼承 overflow 屬性的值。
|
* overflow(水平和垂直均設置)
* overflow-x(設置水平方向)
* overflow-y(設置垂直方向)
圓形頭像示例
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>圓形的頭像示例</title>
<style>
* {
margin: 0;
padding: 0;
background-color: #eeeeee;
}
.header-img {
width: 150px;
height: 150px;
border: 3px solid white;
border-radius: 100%;
overflow: hidden;
}
.header-img>img {
max-width: 100%;
}
</style>
</head>
<body>
<div class="header-img">
</div>
</body>
</html>
7.定位(position)
static
static 默認值,無定位,不能看成絕對定位的參照物,而且設置標籤對象的left、top等值是不起做用的的。
relative(相對定位)
相對定位是相對於該元素在文檔流中的原始位置,即以本身原始位置爲參照物。有趣的是,即便設定了元素的相對定位以及偏移值,元素還佔有着原來的位置,即佔據文檔流空間。對象遵循正常文檔流,但將依據top,right,bottom,left等屬性在正常文檔流中偏移位置。而其層疊經過z-index屬性定義。
注意:position:relative的一個主要用法:方便絕對定位元素找到參照物。
absolute(絕對定位)
定義:設置爲絕對定位的元素框從文檔流徹底刪除,並相對於最近的已定位祖先元素定位,若是元素沒有已定位的祖先元素,那麼它的位置相對於最初的包含塊(即body元素)。元素原先在正常文檔流中所佔的空間會關閉,就好像該元素原來不存在同樣。元素定位後生成一個塊級框,而不論原來它在正常流中生成何種類型的框。
重點:若是父級設置了position屬性,例如position:relative;,那麼子元素就會以父級的左上角爲原始點進行定位。這樣能很好的解決自適應網站的標籤偏離問題,即父級爲自適應的,那我子元素就設置position:absolute;父元素設置position:relative;,而後Top、Right、Bottom、Left用百分比寬度表示。
另外,對象脫離正常文檔流,使用top,right,bottom,left等屬性進行絕對定位。而其層疊經過z-index屬性定義。
fixed(固定)
fixed:對象脫離正常文檔流,使用top,right,bottom,left等屬性以窗口爲參考點進行定位,當出現滾動條時,對象不會隨着滾動。而其層疊經過z-index屬性 定義。 注意點: 一個元素若設置了 position:absolute | fixed; 則該元素就不能設置float。這 是一個常識性的知識點,由於這是兩個不一樣的流,一個是浮動流,另外一個是「定位流」。可是 relative 卻能夠。由於它本來所佔的空間仍然佔據文檔流。
在理論上,被設置爲fixed的元素會被定位於瀏覽器窗口的一個指定座標,不論窗口是否滾動,它都會固定在這個位置。
示例代碼:
<!DOCTYPE html><html lang="en"><head>
<meta charset="UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>返回頂部示例</title>
<style>
* {
margin: 0;
}
.d1 {
height: 1000px;
background-color: #eeee;
}
.scrollTop {
background-color: darkgrey;
padding: 10px;
text-align: center;
position: fixed;
right: 10px;
bottom: 20px;
}
</style>
</head>
<body>
<div class="d1">111</div>
<div class="scrollTop">返回頂部</div>
</body>
</html>
8.z-index
設置對象的層疊順序,數值大的會覆蓋在數值小的標籤之上。z-index 僅能在定位元素上奏效。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>自定義模態框</title>
<style>
.cover {
background-color: rgba(0,0,0,0.65);
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 998;
}
.modal {
background-color: white;
position: fixed;
width: 600px;
height: 400px;
left: 50%;
top: 50%;
margin: -200px 0 0 -300px;
z-index: 1000;
}
</style>
</head>
<body>
<div class="cover"></div>
<div class="modal"></div>
</body>
</html>
9.opacity
用來定義透明效果。取值範圍是0~1,0是徹底透明,1是徹底不透明。
6、實例
1.頂部導航
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>li標籤的float示例</title>
<style>
/*清除瀏覽器默認外邊距和內填充*/
* {
margin: 0;
padding: 0;
}
a {
text-decoration: none; /*去除a標籤默認的下劃線*/
}
.nav {
background-color: black;
height: 40px;
width: 100%;
position: fixed;
top: 0;
}
ul {
list-style-type: none; /*刪除列表默認的圓點樣式*/
margin: 0; /*刪除列表默認的外邊距*/
padding: 0; /*刪除列表默認的內填充*/
}
/*li元素向左浮動*/
li {
float: left;
}
li > a {
display: block; /*讓連接顯示爲塊級標籤*/
padding: 0 15px; /*設置左右各15像素的填充*/
color: #b0b0b0; /*設置字體顏色*/
line-height: 40px; /*設置行高*/
}
/*鼠標移上去顏色變白*/
li > a:hover {
color: #fff;
}
/*清除浮動 解決父級塌陷問題*/
.clearfix:after {
content: "";
display: block;
clear: both;
}
</style>
</head>
<body>
<!-- 頂部導航欄 開始 -->
<div class="nav">
<ul class="clearfix">
<li><a href="">玉米商城</a></li>
<li><a href="">MIUI</a></li>
<li><a href="">ioT</a></li>
<li><a href="">雲服務</a></li>
<li><a href="">水滴</a></li>
<li><a href="">金融</a></li>
<li><a href="">優品</a></li>
</ul>
</div>
<!-- 頂部導航欄 結束 -->
</body>
</html>
頂部導航菜單示例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>blog頁面實例</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<!-- 左邊欄 開始 -->
<div class="left">
<div class="header-img">
</div>
<div class="blog-name">Chang-Woo</div>
<div class="blog-info">在蒼茫的大海上,海燕在快樂的飛翔</div>
<!-- 連接區 開始 -->
<div class="blog-links">
<ul>
<li><a href="">關於我</a></li>
<li><a href="">聯繫做者</a></li>
<li><a href="">詳情</a></li>
</ul>
</div>
<!-- 連接區 結束 -->
<!-- 文章分類 開始 -->
<div class="blog-tags">
<ul>
<li><a href="">JS</a></li>
<li><a href="">CSS</a></li>
<li><a href="">HTML</a></li>
</ul>
</div>
<!-- 文章分類 結束 -->
</div>
<!-- 左邊欄 結束 -->
<!-- 右邊欄 開始 -->
<div class="right">
<div class="article-list">
<div class="article">
<div class="article-title">
<h1 class="article-name">海燕</h1>
<span class="article-time">2018-7-7</span>
</div>
<div class="article-info">在蒼茫的大海上,狂風及卷着烏雲</div>
<div class="article-tag">
#HTML
#CSS
</div>
</div>
<div class="article">
<div class="article-title">
<h1 class="article-name">海燕</h1>
<span class="article-time">2018-7-7</span>
</div>
<div class="article-info">在蒼茫的大海上,狂風及卷着烏雲</div>
<div class="article-tag">
#HTML
#CSS
</div>
</div>
<div class="article">
<div class="article-title">
<h1 class="article-name">海燕</h1>
<span class="article-time">2018-7-7</span>
</div>
<div class="article-info">在蒼茫的大海上,狂風及卷着烏雲</div>
<div class="article-tag">
#HTML
#CSS
</div>
</div>
>
</div>
</div>
<!-- 右邊欄 結束 -->
</body>
</html>