css總結

什麼是css

用於美化頁面, 裝飾頁面的


css樣式規則

#dv {width: 32px; height: 40; color:"red"}

1, 選擇器後面跟一個花括號, 選擇器和花括號之間要有一個空格

2, 花括號內有多個鍵值對, 每一對後面跟個分號

3, 數值不用雙引號, 字符串需要雙引號


css樣式屬性

font-size: 字號大小

​ 單位:

  • em: 相對於文本字體大小
  • px:像素
  • in: 英寸
  • cm:釐米
  • mm: 毫米
  • pt:點

font-family: 字體

​ p{ font-family:“微軟雅黑”;} 直接寫中文xp系統不支持

​ 方法一: 寫對應的英文

​ 方法二: 寫對象的編碼

字體名稱 英文名稱 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\660E\4F53

font-weight: 字體粗細

​ font-weight屬性用於定義字體的粗細,其可用屬性值:normal、bold、bolder、lighter、100~900(100的整數倍)。

​ 數字 400 等價於 normal,而 700 等價於 bold。 但是我們更喜歡用數字來表示。


font-style: 字體風格

​ font-style屬性用於定義字體風格,如設置斜體、傾斜或正常字體,其可用屬性值如下:

​ normal:默認值,瀏覽器會顯示標準的字體樣式。

​ italic:瀏覽器會顯示斜體的字體樣式。

​ oblique:瀏覽器會顯示傾斜的字體樣式。


font綜合設置

​ 選擇器{font: font-style font-weight font-size/line-height font-family;}

​ 使用font屬性時,必須按上面語法格式中的順序書寫,不能更換順序,各個屬性以空格隔開。

​ 注意:其中不需要設置的屬性可以省略(取默認值),但必須保留font-size和font-family屬性,否則font屬性將不起作用。


選擇器

標籤選擇器 (元素選擇器)
標籤名 {:;:}; 
例如: div {width:300px; height:300px}
<div></div>

類選擇器

這個類名可以被多個標籤使用, (多個標籤起同一個類名)

.類名 {:;:}; 
例如: .dv {width:300px; height:300px}
    <div class = "dv"></div>

多類名選擇器

一個標籤名, 有多個選擇器名

#noe {:;:}; 
#tow {:;:}; 
#three {:;:}; 
例如: #noe #tow #three {width:300px; height:300px}
    <div id="noe tow three"></div>

id選擇器

這個id名只能使用一次, (只能有一個標籤使用)

#id名 {:;:}; 
例如: #dv {width:300px; height:300px}
    <div id="dv"></div>

通配符選擇器
* { 屬性1:屬性值1; 屬性2:屬性值2; 屬性3:屬性值3; }
例如: * {margin: 0; padding: 0;}

僞選擇器

連接僞類選擇器
:link 未訪問的連接
visited 已訪問的連接
:hover 鼠標移動到連接上
active 選定的連接
a {   /* a是標籤選擇器  所有的鏈接 */
			font-weight: 700;
			font-size: 16px;
			color: gray;
		}
a:hover {   /* :hover 是鏈接僞類選擇器 鼠標經過 */
			color: red; /*  鼠標經過的時候,由原來的 灰色 變成了紅色 */
}

結構(位置)僞類選擇器

:first-child 選取屬於其父元素的首個子元素的指定選擇器

:last-child 選取屬於其父元素的最後一個字元素的指定選擇器

:nth-child(N) 匹配屬於父元素的第N個字元素, 不論元素類型

:nth-last-child(N) 選取匹配屬於其元素的第N個元素的每一個元素,不論元素類型, 從最後一個元素開始計數

li:first-child { /*  選擇第一個孩子 */
        		color: pink; 
        	}
li:last-child {   /* 最後一個孩子 */
        		color: purple;
        	}
li:nth-child(4) {   /* 選擇第4個孩子  n  代表 第幾個的意思 */ 
				color: skyblue;
        	}

目標僞類選擇器

:target, 用於選取當前活動的目標元素

:target {
		color: red;
		font-size: 30px;
}


複合選擇器

交集選擇器

交集選擇器由兩個選擇器構成, 期中第一個爲標籤選擇器, 第二個爲類選擇器, 中間不能有空格

含義: 交集爲並且的意思, (選中的是P標籤, 並且這個標籤的類名叫noe)

標籤名.類名 {鍵:值; ...}
例如: p.noe {width:200px; height:200px}


並集選擇器

由多個選擇器 構成, 可以是標籤選擇器,類選擇器id選擇器. 中間由逗號隔開

含義: 和的意思, (P, ,noe,#tow,三個都這個設置)

標籤名,.類名,#id名 {鍵:值; ...}
例如: p,.noe,#tow {width:200px; height:200px}


後代選擇器 (包含選擇器)

由多個選擇器組成, 可以是標籤,類名, id名, 中間由空格隔開

含義: 層級選中 (選擇爺元素下的, 子元素下的, 曾孫元素, 將該元素設置屬性),

注意: 可以隔代選擇 ,只要是子孫(被包含的)都可以選擇

標籤名 .類名 #id名 {鍵:值; ...}
例如: p .noe #tow {width:200px; height:200px}


子元素選擇器

由多個選擇器組成, 可以是標籤,類名, id名, 中間由大於號隔開

含義: 選擇爺元素下的, 父元素下的, 子元素下的, 曾孫元素, 將該元素設置屬性

注意: 只能選擇自己的子元素, 一層一層選擇下去, 不能跳過子元素直接選中曾孫元素

標籤名>.類名>#id名 {鍵:值; ...}
例如: p>.noe>#tow {width:200px; height:200px}


屬性選擇器

**選擇器 **示例 **含義
E[attr]**** 存在attr屬性即可
E[attr=val]**** 屬性值完全等於val
E[attr*=val]**** 屬性值裏包含val字符並且在“任意”位置
E[attr^=val]**** 屬性值裏包含val字符並且在“開始”位置
E[attr$=val]**** 屬性值裏包含val字符並且在“結束”位置
/* 獲取到 擁有 該屬性的元素 */
li[type] {
  border: 1px solid gray;
}
/* 獲取 屬性等於某個值的 元素 屬性值 可以使用 引號進行包裹 */
li[type="vegetable"] {
  background-color: green;
}
/* 使用空格分隔的 多個屬性 其中有某個屬性即可獲取 */
li[type~="hot"] {
  font-size: 40px;
}
/* 獲取以某個屬性開頭的語法  */
li[color^='green'] {
  background-color: orange;
}
/* 獲取以某個值 結尾的屬性 */
li[type$='t']{
  color: hotpink;
  font-weight: 900;
}

/* 獲取 屬性中 擁有某個值的 元素 */
li[type*=ea] {
  font-size: 100px;
}
/*  如果屬性的值 只有very 也能夠獲取  用來獲取 多個屬性 並且 使用-連接 */
li[price|='very'] {
  background-color: darkred;
}

<ul>
<li\ type=‘fruit’ color=‘green’>西瓜</li>
<li\ type=‘vegetable’ color=‘greenyellow’>西蘭花</li>
<li\ type=‘meat’>牛肉</li>
<li\ type=‘meat hot’>豬肉</li>
<li\ type=‘drink hot’>可樂</li>
<li\ type=‘drink hot’>雪碧</li>
<li\ price=‘very-cheap’>紅酒</li>
<li\ price=‘very’>白酒</li>
</ul>


僞元素選擇器

  1. E::first-letter文本的第一個單詞或字(如中文、日文、韓文等)

  2. E::first-line 文本第一行;

  3. E::selection 可改變選中文本的樣式;

    p::first-letter {
      font-size: 20px;
      color: hotpink;
    }
    
    /* 首行特殊樣式 */
    p::first-line {
      color: skyblue;
    }
    
    p::selection {
      /* font-size: 50px; */
      color: orange;
    }
    
    

4、E::before和E::after

在E元素內部的開始位置和結束位創建一個元素,該元素爲行內元素,且必須要結合content屬性使用。

div::befor {
  content:"開始";
}
div::after {
  content:"結束";
}

E:after、E:before 在舊版本里是僞元素,CSS3的規範裏“:”用來表示僞類,“::”用來表示僞元素,但是在高版本瀏覽器下E:after、E:before會被自動識別爲E::after、E::before,這樣做的目的是用來做兼容處理。

“:” 與 “::” 區別在於區分僞類和僞元素


css外觀屬性

color: 文本顏色

有三種取值

1.預定義的顏色值,如red,green,blue等。

2.十六進制,如#FF0000,#FF6600,#29D794等。實際工作中,十六進制是最常用的定義顏色的方式。

3.RGB代碼,如紅色可以表示爲rgb(255,0,0)或rgb(100%,0%,0%)。


line-height: 行間距

有三種單位

​ px, em, %


text-align: 水平對齊

1, left: 左對齊(默認)

2, right: 右對齊

3, center: 居中


text-index: 首行縮進

​ 單位 em, 一個 em 就是一個字的寬


letter-spacing: 字間距

​ 字與字之間的距離, 單位可以是數值, 默認值爲normal


word-spacing: 單詞間距

​ 單詞與單詞之間的距離, 單位可以是數值, 默認值爲normal


顏色透明度

​ color: rgba(r,g,b,a) a 是alpha 透明的意思 取值範圍 0~1之間 color: rgba(0,0,0,0.3)


text-shadow:文字陰影

​ 給文字添加陰影

​ text-shadow:水平位置 垂直位置 模糊距離 陰影顏色;

​ h-shadow: 必寫, 水平陰影, 允許負值

​ v-shadow: 必寫, 垂直陰影, 運行負值

​ blur: 可選 模糊距離

​ color: 可選


css書寫位置

行內樣式 (內聯樣式)

​ 將樣式直接寫的標籤中


內部樣式(內嵌式)

​ 在head內, 寫style標籤, 在style標籤中寫


外部樣式 (外鏈式)

​ 1, 寫一個css文件, 直接寫在文件內

​ 2, 在需要的頁面, head中引入

<link rel="stylesheet" href="xxx.css">


display: 標籤顯示模式

塊級元素block-level
常見的塊元素有<h1>~<h6>、<p>、<div>、<ul>、<ol>、<li>等,其中<div>標籤是最典型的塊元素。


行內元素inline-level
常見的行內元素有<a>、<strong>、<b>、<em>、<i>、<del>、<s>、<ins>、<u>、<span>等,其中<span>標籤最典型的行內元素。


塊元素 和 行內元素的區別
塊級元素特點:
	1, 總是從新的一行開始
	2, 高,寬,外邊距, 內邊距都 可以控制
	3, 默認寬爲容器的100%
	4, 可以容納行內元素和其他元素


行內元素的特點:
	1, 和相鄰的行內元素在同一行
	2, 高寬無效,但是水平方向的mrign和padding可以設置,垂直方向無效
	3, 默認高度就是內容的高度
	4, 行內元素只能容納文本或其他行內元素


行內塊元素inline-block
在行內元素中有幾個特殊的標籤——<img />、<input />、<td>,可以對它們設置寬高和對齊屬性,有些資料可能會稱它們爲行內塊元素。

行內塊元素的特點:
(1)和相鄰行內元素(行內塊)在一行上,但是之間會有空白縫隙。
(2)默認寬度就是它本身內容的寬度。
(3)高度,行高、外邊距以及內邊距都可以控制。


css背景background

background-image背景圖片
background-image : none | url (url) 

none: 無背景圖(默認)

url: 圖片地址, 不要雙號


background-repeat背景平鋪
background-repeat : repeat | no-repeat | repeat-x | repeat-y 

repeat :  背景圖像在縱向和橫向上平鋪(默認的)

no-repeat :  背景圖像不平鋪

repeat-x :  背景圖像在橫向上平鋪 (單橫向平鋪)

repeat-y :  背景圖像在縱向平鋪 (單縱向平鋪)


background-position背景位置
background-position : length || length

background-position : position || position 

length :  百分數 | 由浮點數字和單位標識符組成的長度值
position :  top | center | bottom | left | center | right

1, 設置或檢索對象的背景圖像位置。必須先指定background-image屬性。

2, 默認值爲:(0% 0%)。

3, 如果只指定了一個值,該值將用於橫座標。縱座標將默認爲50%。第二個值將用於縱座標。


background-attachement背景附着
background-attachment : scroll | fixed 

scroll :  背景圖像是隨對象內容滾動
fixed :  背景圖像固定

說明: 設置或檢索背景圖像是隨對象內容滾動還是固定的。


背景簡寫

background:背景顏色 背景圖片地址 背景平鋪 背景滾動 背景位置

background: transparent url(image.jpg) repeat-y  scroll 50% 0 ;


rgba(0,0,0,0.3)背景透明(CSS3)

CSS3支持背景半透明的寫法語法格式是:

background: rgba(0,0,0,0.3);

最後一個參數是alpha 透明度 取值範圍 0~1之間

注意: 背景半透明是指盒子背景半透明, 盒子裏面的內容不收影響。

同樣, 可以給 文字和邊框透明 都是 rgba 的格式來寫。

color:rgba(0,0,0,0.3);
border: 1px solid rgba(0,0,0,0.3);


###### background-size背景縮放(CSS3)
background-size: 300px 100px;
background-size: contain;
background-size: cover; 

a) 可以設置長度單位(px)或百分比(設置百分比時,參照盒子的寬高)

b) 設置爲cover時,會自動調整縮放比例,保證圖片始終填充滿背景區域,如有溢出部分則會被隱藏。

c) 設置爲contain會自動調整縮放比例,保證圖片始終完整顯示在背景區域。


多背景(CSS3)

以逗號分隔可以設置多背景,可用於自適應佈局

background-image: url('images/gyt.jpg'),url('images/robot.png');


css三大特性

層疊 繼承 優先級


css層疊

是指css的樣式重複, 當瀏覽器發現兩個選擇器設置同一個元素時, 會將另一個的選擇器樣式覆蓋掉,

如果出現樣式衝突, 會按照css書寫的順序, 以最後的樣式爲標準


css基礎

有兩個元素是嵌套關係(父子元素), 給父元素設置樣式, 子元素也會基礎到父元素的樣式

繼承樣式的權重爲0。即在嵌套結構中,不管父元素樣式的權重多大,被子元素繼承時,他的權重都爲0,也就是說子元素定義的樣式會覆蓋繼承來的樣式。


css優先級

​ 默認樣式 < 基礎樣式 < 通配符 < 標籤名 < class < id < 行內樣式

​ 設置!important該樣式優先級最大

div {
           width: 300px;
           height: 300px;
           background-color: red !important; //無法基礎, 基礎權重爲0
       }


css的特殊性

關於CSS權重,我們需要一套計算公式來去計算,這個就是 CSS Specificity,我們稱爲CSS 特性或稱非凡性,它是一個衡量CSS值優先級的一個標準 具體規範入如下:

specificity用一個四位的數 字串(CSS2是三位)來表示,更像四個級別,值從左到右,左面的最大,一級大於一級,數位之間沒有進制,級別之間不可超越。

繼承或者* 的貢獻值 0,0,0,0
每個元素(標籤)貢獻值爲 0,0,0,1
每個類,僞類貢獻值爲 0,0,1,0
每個ID貢獻值爲 0,1,0,0
每個行內樣式貢獻值 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   

#nav p       ----->       0,1,0,1

注意: 數位之間沒有進制 比如說: 0,0,0,5 + 0,0,0,5 =0,0,0,10 而不是 0,0, 1, 0, 所以不會存在10個div能趕上一個類選擇器的情況。


盒子模式

CSS就三個大模塊: 盒子模型 、 浮動 、 定位

盒子邊框border
border : border-width  border-style  border-color 
例如: border: 1px solid red;

邊框屬性—設置邊框樣式(border-style)

邊框樣式用於定義頁面中邊框的風格,常用屬性值如下:

none:沒有邊框即忽略所有邊框的寬度(默認值)

solid:邊框爲單實線(最爲常用的)

dashed:邊框爲虛線

dotted:邊框爲點線

double:邊框爲雙實線


設置單邊樣式
設置內容 樣式屬性 常用屬性值
上邊框 border-top-style:樣式; border-top-width:寬度;border-top-color:顏色;border-top:寬度 樣式 顏色;
下邊框 border-bottom-style:樣式;border- bottom-width:寬度;border- bottom-color:顏色;border-bottom:寬度 樣式 顏色;
左邊框 border-left-style:樣式; border-left-width:寬度;border-left-color:顏色;border-left:寬度 樣式 顏色;
右邊框 border-right-style:樣式;border-right-width:寬度;border-right-color:顏色;border-right:寬度 樣式 顏色;
樣式綜合設置 border-style:上邊 [右邊 下邊 左邊]; none無(默認)、solid單實線、dashed虛線、dotted點線、double雙實線
寬度綜合設置 border-width:上邊 [右邊 下邊 左邊]; 像素值
顏色綜合設置 border-color:上邊 [右邊 下邊 左邊]; 顏色值、#十六進制、rgb(r,g,b)、rgb(r%,g%,b%)
邊框綜合設置 border:四邊寬度 四邊樣式 四邊顏色;

圓角邊框
Border-radius: 水平半徑/垂直半徑;
border-radius: 左上角  右上角  右下角  左下角;

單位: px || %


內邊距padding

padding-top:上內邊距

padding-right:右內邊距

padding-bottom:下內邊距

padding-left:左內邊距

當關鍵字後面跟的數值不一樣時, 表達的意思也不一樣

值的個數 表達意思
1個值 padding:上下左右邊距 比如padding: 3px; 表示上下左右都是3像素
2個值 padding: 上下邊距 左右邊距 比如 padding: 3px 5px; 表示 上下3像素 左右 5像素
3個值 padding:上邊距 左右邊距 下邊距 比如 padding: 3px 5px 10px; 表示 上是3像素 左右是5像素 下是10像素
4個值 padding:上內邊距 右內邊距 下內邊距 左內邊距 比如: padding: 3px 5px 10px 15px; 表示 上3px 右是5px 下 10px 左15px 順時針

外邊距marign

margin屬性用於設置外邊距。 設置外邊距會在元素之間創建“空白”, 這段空白通常不能放置其他內容。

margin-top:上外邊距

margin-right:右外邊距

margin-bottom:下外邊距

margin-left:上外邊距

margin:上外邊距 右外邊距 下外邊距 左外邊

取值順序跟內邊距相同。


清除元素的默認內外邊距

元素之間是有默認內外邊距的

* {
   padding:0;         /* 清除內邊距 */
   margin:0;          /* 清除外邊距 */
}


邊距合併
1, 如果有兩個元素是垂直上下的關係時.	
當上元素設置了下外邊距爲20, 下元素設置了上外邊距爲10. 這個邊距將會合並, 最後的邊距爲最大的哪一方

解決方法:  避免這種行爲即可

2, 如果有兩個元素嵌套垂直關係.	
父元素沒有上內邊距及邊框, 父元素的上外邊距和子元素的上外邊距發生合併, 合併邊距爲兩者最大的那個值, 即使父元素的上外邊距是0也會發生合併

解決方法:
    1. 可以爲父元素定義1像素的上邊框或上內邊距。
    2. 可以爲父元素添加overflow:hidden


盒子的大小
盒子的總寬度= width+左右內邊距之和+左右邊框寬度之和+左右外邊距之和
盒子的總高度= height+上下內邊距之和+上下邊框寬度之和+上下外邊距之和

注意:

​ 1、寬度屬性width和高度屬性height僅適用於塊級元素,對行內元素無效( img 標籤和 input除外)。

​ 2、計算盒子模型的總高度時,還應考慮上下兩個盒子垂直外邊距合併的情況


盒子模型佈局穩定性

按照 優先使用 寬度 (width) 其次 使用內邊距(padding) 再次 外邊距(margin)。

原因:

  1. margin 會有外邊距合併 還有 ie6下面margin 加倍的bug 所以最後使用。

  2. padding 會影響盒子大小, 需要進行加減計算(麻煩) 其次使用。

  3. width 沒有問題


盒子陰影
box-shadow:水平陰影 垂直陰影 模糊距離 陰影尺寸 陰影顏色  內/外陰影;

1. 前兩個屬性是必須寫的。其餘的可以省略。
2. 外陰影 (outset) 但是不能寫    默認      想要內陰影  inset 
3. 取值爲 正整數


浮動float

標準流:

​ 又叫, 普通流, 文檔流.

​ 當一個頁面元素的排版從上到下, 從左到右依次排序, 快元素會獨佔一行, 行內元素會在一行, 的時候就叫普通流

元素的浮動是指設置了浮動屬性的元素會脫離標準流, 移動到其父元素的中指定的位置

選擇器 {float:屬性值;}

取值:
	left 元素向左浮動
	right: 元素向右浮動
	none: 元素不浮動(默認值)


浮動的特性
  1. 浮動的元素總是找理它最近的父級元素對齊。但是不會超出內邊距的範圍。

  2. 當兩個塊元素浮動時, 會並排顯示, 加了浮動的元素,不佔位置, 位置將會留出來給標準流的元素

  3. 元素浮動後具有行內塊元素的特性


清除浮動

​ 有兩個元素是嵌套關係, 父元素沒有高度, 子元素浮動了, 父元素的高度會顯示0

方法一

選擇器{clear:屬性值;}

取值:
	left:	清除左邊的浮動影響
	right:	清除右邊浮動的影響
	both:	同時清除兩邊的浮動影響


方法二

是W3C推薦的做法是通過在浮動元素末尾添加一個空的標籤例如

,或則其他標籤br等亦可。

優點: 通俗易懂,書寫方便

缺點: 添加許多無意義的標籤,結構化較差。 我只能說,w3c你推薦的方法我不接受,你不值得擁有。。。


方法三: overflow

可以給父級添加: overflow爲 hidden|auto|scroll  都可以實現。

優點: 代碼簡潔

缺點: 內容增多時候容易造成不會自動換行導致內容被隱藏掉,無法顯示需要溢出的元素。


方法四: 使用after僞元素清除浮動

 .clearfix:after {  content: "."; display: block; height: 0; clear: both; visibility: hidden;  }   

 .clearfix {*zoom: 1;}   /* IE6、7 專有 */

優點: 符合閉合浮動思想 結構語義化正確

缺點: 由於IE6-7不支持:after,使用 zoom:1觸發 hasLayout。

方法五: 使用before和after雙僞元素清除浮動

使用方法:

.clearfix:before,.clearfix:after { 
  content:".";
  display:table;
}
.clearfix:after {
 clear:both;
}
.clearfix {
  *zoom:1;
}

優點: 代碼更簡潔

缺點: 由於IE6-7不支持:after,使用 zoom:1觸發 hasLayout。


定位position

將元素定在某個位置就是定位

元素的定位屬性主要包括定位模式和邊偏移兩部分。

1、邊偏移

邊偏移屬性 描述
top 頂端偏移量,定義元素相對於其父元素上邊線的距離
bottom 底部偏移量,定義元素相對於其父元素下邊線的距離
left 左側偏移量,定義元素相對於其父元素左邊線的距離
right 右側偏移量,定義元素相對於其父元素右邊線的距離

也就說,以後定位要和這邊偏移搭配使用了, 比如 top: 100px; left: 30px; 等等

2、定位模式

在CSS中,position屬性用於定義元素的定位模式,其基本語法格式如下:

選擇器{position:屬性值;}

position屬性的常用值

描述
static 自動定位(默認定位方式)
relative 相對定位,相對於其原文檔流的位置進行定位
absolute 絕對定位,相對於其上一個已經定位的父元素進行定位
fixed 固定定位,相對於瀏覽器窗口進行定位

靜態定位static

​ 恢復標準流, left,right等都不能使用, 是默認值


相對定位relative

​ 配置後在標準流的位置還在, 元素相對於該位置定位


絕對定位absolute

​ 配置後不會保留原先的位置, 元素會根據父元素定位, 如果父元素沒有定位, 會根據瀏覽器定位, 瀏覽器滑動, 定位元素也會跟着滑動, 一直保持這個距離


固定定位fixed

​ 固定定位的元素跟父親沒有任何關係,只認瀏覽器。

​ 固定定位完全脫標,不佔有位置,不隨着滾動條滾動。


疊放次序z-index

多個元素定位時, 可能會層疊覆蓋掉其他的元素,

z-index=1;
取值爲數值,  正整數, 或負整數

  1. z-index的默認屬性值是0,取值越大,定位元素在層疊元素中越居上。

  2. 如果取值相同,則根據書寫順序,後來居上。

  3. 後面數字一定不能加單位。

  4. 只有相對定位,絕對定位,固定定位有此屬性,其餘標準流,浮動,靜態定位都無此屬性,亦不可指定此屬性。


四種定位總結

定位模式 是否脫標占有位置 是否可以使用邊偏移 移動位置基準
靜態static 不脫標,正常模式 不可以 正常模式
相對定位relative 不脫標,佔有位置 可以 相對自身位置移動
絕對定位absolute 完全脫標,不佔有位置 可以 相對於定位父級移動位置
固定定位fixed 完全脫標,不佔有位置 可以 相對於瀏覽器移動位置

定位模式轉換

跟 浮動一樣, 元素添加了 絕對定位和固定定位之後, 元素模式也會發生轉換, 都轉換爲 行內塊模式,


元素的顯示與隱藏

display 顯示

display 設置或檢索對象是否及如何顯示。

display : none 隱藏對象 與它相反的是 display:block 除了轉換爲塊級元素之外,同時還有顯示元素的意思。

特點: 隱藏之後,不再保留位置。


visibility 可見性

設置或檢索是否顯示對象。

visible :  對象可視

hidden :  對象隱藏

特點: 隱藏之後,繼續保留原有位置。(停職留薪)


overflow 溢出

檢索或設置當對象的內容超過其指定高度及寬度時如何管理內容。

visible :  不剪切內容也不添加滾動條。

auto :   超出自動顯示滾動條,不超出不顯示滾動條

hidden :  不顯示超過對象尺寸的內容,超出的部分隱藏掉

scroll :  不管超出內容否,總是顯示滾動條


CSS用戶界面樣式

鼠標樣式cursor

設置鼠標樣子

cursor :  default  正常 | pointer  小手  | move  移動  |  text  文本


輪廓 outline

是繪製於元素周圍的一條線,位於邊框邊緣的外圍,可起到突出元素的作用。

outline : outline-color outline-style  outline-width 


防止拖拽文本域resize

resize:none 這個單詞可以防止 火狐 谷歌等瀏覽器隨意的拖動 文本域


vertical-align 垂直對齊

vertical-align 不影響塊級元素中的內容對齊,它只針對於 行內元素或者行內塊元素,特別是行內塊元素, 通常用來控制圖片和表單等。

vertical-align : baseline |top |middle |bottom 

baseline: 文字和圖片基線對齊

middle: 文字和圖片中間對齊

top: 文字和圖片頭部對齊


去除圖片底側空白縫隙

如果一個元素沒有基線,比如圖片或者表單等行內塊元素,則他的底線會和父級盒子的基線對齊。 這樣會造成一個問題,就是圖片底側會有一個空白縫隙。

解決方法:

​ 1, 給img vertical-align:middle | top等等。 讓圖片不要和基線對齊。

​ 2, 給img 添加 display:block; 轉換爲塊級元素就不會存在問題了。


css精靈技術

CSS精靈是一種處理網頁背景圖像的方式。它將一個頁面涉及到的所有零星背景圖像都集中到一張大圖中去,然後將大圖應用於網頁,這樣,當用戶訪問該頁面時,只需向服務發送一次請求,網頁中的背景圖像即可全部展示出來


將圖標生成兼容性字體文件包

推薦網站: http://icomoon.io


阿里巴巴矢量圖庫

http://www.iconfont.cn/


fontello

http://fontello.com/

在線定製你自己的icon font字體圖標字庫,也可以直接從GitHub下載整個圖標集,該項目也是開源的。


Font-Awesome

http://fortawesome.github.io/Font-Awesome/

字庫 目前已經有369個圖標了。


Glyphicon Halflings

http://glyphicons.com/

這個字體圖標可以在Bootstrap下免費使用。自帶了200多個圖標。


Icons8

https://icons8.com/

提供PNG免費下載,像素大能到500PX


圖標使用

  1. 輸入阿里矢量圖庫地址

  2. 搜索自己需要的的圖標

  3. 點擊放入購物車
    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-SsWsrlAD-1574137585932)(C:\Users\wei\AppData\Roaming\Typora\typora-user-images\image-20191119110108130.png)]

    3.點擊購物車
    在這裏插入圖片描述
    ​ 4.下載代碼
    在這裏插入圖片描述

​ 5.解壓文件包, 將括號中的文件複製到需要的項目中
在這裏插入圖片描述

​ 6.打開index.html文件
在這裏插入圖片描述

​ 7.查看使用教程
在這裏插入圖片描述


滑動門

設置文本背景時, 文本長度不一樣, 背景需要更改, 不想更改的情況下使用該技術
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20191119123253810.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1MDAzMzEw,size_16,color_FFFFFF,t_70
核心技術就是利用CSS精靈(主要是背景位置)和盒子padding撐開寬度, 以便能適應不同字數的導航欄。

一般的經典佈局都是這樣的:

<li>
  <a href="#">
    <span>導航欄內容</span>
  </a>
</li>

li {
    float: left;
    height: 33px;
    line-height: 33px;
    background: url(img/ao.png); /*設置爲背景圖片 */
    padding-left: 15px; 
    margin: 0 10px;
}

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-IFhvPKp1-1574137044750)(C:\Users\wei\AppData\Roaming\Typora\typora-user-images\image-20191119113306340.png)]

a {
    display: inline-block;
    height: 33px;
    background: url(img/ao.png) no-repeat right top; /*給a標籤也設置背景*/
    padding-right: 15px; /*將右邊補齊*/
}


伸縮佈局(CSS3)

CSS3在佈局方面做了非常大的改進,使得我們對塊級元素的佈局排列變得十分靈活,適應性非常強,其強大的伸縮性,在響應式開中可以發揮極大的作用。

主軸:Flex容器的主軸主要用來配置Flex項目,默認是水平方向

側軸:與主軸垂直的軸稱作側軸,默認是垂直方向的

方向:默認主軸從左向右,側軸默認從上到下

主軸和側軸並不是固定不變的,通過flex-direction可以互換。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-WEsQ8DVb-1574137044751)(G:/全棧1期/基礎班/03基礎班第三天CSS3入門及提高/1-教學資料/media/1498441839910.png)]

Flex佈局的語法規範經過幾年發生了很大的變化,也給Flexbox的使用帶來一定的侷限性,因爲語法規範版本衆多,瀏覽器支持不一致,致使Flexbox佈局使用不多


2、各屬性詳解****

a、flex-direction調整主軸方向(默認爲水平方向)

b、justify-content調整主軸對齊

c、align-items調整側軸對齊

d、flex-wrap控制是否換行

e、align-content堆棧(由flex-wrap產生的獨立行)對齊

f、flex-flow是flex-direction、flex-wrap的簡寫形式

g、flex子項目在主軸的縮放比例,不指定flex屬性,則不參與伸縮分配

h、order控制子項目的排列順序,正序方式排序,從小到大

此知識點重在理解,要明確找出主軸、側軸、方向,各屬性對應的屬性值


過渡(CSS3)

過渡(transition)是CSS3中具有顛覆性的特徵之一,我們可以在不使用 Flash 動畫或 JavaScript 的情況下,當元素從一種樣式變換爲另一種樣式時爲元素添加效果。

在CSS3裏使用transition可以實現補間動畫(過渡效果),並且當前元素只要有“屬性”發生變化時即存在兩種狀態(我們用A和B代指),就可以實現平滑的過渡,爲了方便演示採用hover切換兩種狀態,但是並不僅僅侷限於hover狀態來實現過渡。

語法格式:

transition: 要過渡的屬性  花費時間  運動曲線  何時開始;

屬性 描述 CSS
transition 簡寫屬性,用於在一個屬性中設置四個過渡屬性。 3
transition-property 規定應用過渡的 CSS 屬性的名稱。 3
transition-duration 定義過渡效果花費的時間。默認是 0。 3
transition-timing-function 規定過渡效果的時間曲線。默認是 “ease”。 3
transition-delay 規定過渡效果何時開始。默認是 0。 3

運動曲線示意圖:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-aCoH6AI3-1574137044752)(G:/全棧1期/基礎班/03基礎班第三天CSS3入門及提高/1-教學資料/media/1498445454760.png)]

img {
  width:80px; height: 80px; border:8px solid #ccc; border-radius: 50%;
  transition:transform 0.5s ease-in 0s;
}
img:hover {
  transform:rotate(180deg);
}


2D變形(CSS3)

轉換是CSS3中具有顛覆性的特徵之一,可以實現元素的位移、旋轉、變形、縮放,甚至支持矩陣方式,配合過渡和即將學習的動畫知識,可以取代大量之前只能靠Flash纔可以實現的效果。

變形轉換 transform
  • 移動 translate(x, y)

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-gcjXAU6x-1574137044752)(G:/全棧1期/基礎班/03基礎班第三天CSS3入門及提高/1-教學資料/media/1498443715586.png)]

translate(50px,50px);

使用translate方法來將文字或圖像在水平方向和垂直方向上分別垂直移動50像素。

可以改變元素的位置,x、y可爲負值;

 translate(x,y)水平方向和垂直方向同時移動(也就是X軸和Y軸同時移動)
 translateX(x)僅水平方向移動(X軸移動)
 translateY(Y)僅垂直方向移動(Y軸移動)


縮放 scale(x, y)

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-uCdkbmod-1574137044752)(G:/全棧1期/基礎班/03基礎班第三天CSS3入門及提高/1-教學資料/media/1498444645795.png)]

transform:scale(0.8,1);

可以對元素進行水平和垂直方向的縮放。該語句使用scale方法使該元素在水平方向上縮小了20%,垂直方向上不縮放。

scale(X,Y)使元素水平方向和垂直方向同時縮放(也就是X軸和Y軸同時縮放)
scaleX(x)元素僅水平方向縮放(X軸縮放)
scaleY(y)元素僅垂直方向縮放(Y軸縮放)

scale()的取值默認的值爲1,當值設置爲0.01到0.99之間的任何值,作用使一個元素縮小;而任何大於或等於1.01的值,作用是讓元素放大


旋轉 rotate(deg)

可以對元素進行旋轉,正值爲順時針,負值爲逆時針;

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-4qbM4plx-1574137044753)(G:/全棧1期/基礎班/03基礎班第三天CSS3入門及提高/1-教學資料/media/1498443651293.png)]

transform:rotate(45deg);

  1. 當元素旋轉以後,座標軸也跟着發生的轉變
  2. 調整順序可以解決,把旋轉放到最後
  3. 注意單位是 deg 度數

傾斜 skew(deg, deg)

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-tnuAxBRg-1574137044753)(G:/全棧1期/基礎班/03基礎班第三天CSS3入門及提高/1-教學資料/media/1498443827389.png)]

transform:skew(30deg,0deg);

該實例通過skew方法把元素水平方向上傾斜30度,處置方向保持不變。

可以使元素按一定的角度進行傾斜,可爲負值,第二個參數不寫默認爲0。


transform-origin可以調整元素轉換的原點

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-p1htPcyp-1574137044754)(G:/全棧1期/基礎班/03基礎班第三天CSS3入門及提高/1-教學資料/media/1498443912530.png)]

 div{transform-origin: left top;transform: rotate(45deg); }  /* 改變元素原點到左上角,然後進行順時旋轉45度 */    


3D變形

rotateX() 就是沿着 x 立體旋轉.(翻轉)
img {
  transition:all 0.5s ease 0s;
}
img:hove {

  transform:rotateX(180deg);
}


rotateY()沿着y軸進行旋轉(翻轉)
img {
  transition:all 0.5s ease 0s;
}
img:hove {

  transform:rotateX(180deg);
}


rotateZ()沿着z軸進行旋轉(翻轉)
img {
  transition:all .25s ease-in 0s;
}
img:hover {
  /* transform:rotateX(180deg); */
  /* transform:rotateY(180deg); */
  /* transform:rotateZ(180deg); */
  /* transform:rotateX(45deg) rotateY(180deg) rotateZ(90deg) skew(0,10deg); */
}


透視(perspective)

電腦顯示屏是一個2D平面,圖像之所以具有立體感(3D效果),其實只是一種視覺呈現,通過透視可以實現此目的。

透視可以將一個2D平面,在轉換的過程當中,呈現3D效果。

注:並非任何情況下需要透視效果,根據開發需要進行設置。

perspective有兩種寫法

  1. 作爲一個屬性,設置給父元素,作用於所有3D轉換的子元素
  2. 作爲transform屬性的一個值,做用於元素自身

理解透視距離原理:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-vtSauy5U-1574137044754)(G:/全棧1期/基礎班/03基礎班第三天CSS3入門及提高/1-教學資料/media/1498446715314.png)]

開門案例

body {
}
.door {
  width: 300px;
  height: 300px;
  margin: 100px auto;
  border: 1px solid gray;
  perspective: 1000px;
  background: url('images/dog.gif') no-repeat center/cover;
  position: relative;
}
.door > div {
  box-sizing: border-box;
  border: 1px solid black;
}
.left {
  float: left;
  width: 50%;
  height: 100%;
  background-color: brown;
  transform-origin: left center;
  transition: 1s;
  position: relative;
}
.left::before {
  content: '';
  position: absolute;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  top: 50%;
  right: 0px;
  transform: translateY(-10px);
  border: 1px solid whitesmoke;
}
.right {
  width: 50%;
  height: 100%;
  float: left;
  background-color: brown;
  transform-origin: right center;
  transition: 1s;
  position: relative;
}
.right::before {
  content: '';
  position: absolute;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  top: 50%;
  left: 0px;
  transform: translateY(-10px);
  border: 1px solid whitesmoke;
}
.door:hover .left {
  transform: rotateY(-130deg);
}
.door:hover .right {
  transform: rotateY(130deg);
}


translateX(x)

僅水平方向移動**(X軸移動)

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-GwBcrYmX-1574137044755)(G:/全棧1期/基礎班/03基礎班第三天CSS3入門及提高/1-教學資料/media/1498459697576.png)]
主要目的實現移動效果


translateY(y)

僅垂直方向移動(Y軸移動)
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-JqmCa2xb-1574137044755)(G:/全棧1期/基礎班/03基礎班第三天CSS3入門及提高/1-教學資料/media/1498459770252.png)]


translateZ(z)

transformZ的直觀表現形式就是大小變化,實質是XY平面相對於視點的遠近變化(說遠近就一定會說到離什麼參照物遠或近,在這裏參照物就是perspective屬性)。比如設置了perspective爲200px;那麼transformZ的值越接近200,就是離的越近,看上去也就越大,超過200就看不到了,因爲相當於跑到後腦勺去了,我相信你正常情況下,是看不到自己的後腦勺的。


3D呈現(transform-style)

設置內嵌的元素在 3D 空間如何呈現,這些子元素必須爲轉換原素。

flat:所有子元素在 2D 平面呈現

preserve-3d:保留3D空間

3D元素構建是指某個圖形是由多個元素構成的,可以給這些元素的父元素設置transform-style: preserve-3d來使其變成一個真正的3D圖形。

一般而言,該聲明應用在3D變換的兄弟元素們的父元素上。

翻轉盒子案例(百度錢包)
body {
  margin: 0;
  padding: 0;
  background-color: #B3C04C;

}

.wallet {
  width: 300px;
  height: 300px;
  margin: 50px auto;
  position: relative;
  transform-style: preserve-3d;
  transition: all 0.5s;
}

.wallet::before, .wallet::after {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  display: block;
  width: 100%;
  height: 100%;
  background-image: url(./images/bg.png);
  background-repeat: no-repeat;
}

.wallet::before {
  background-position: right top;
  transform: rotateY(180deg);
}

.wallet::after {
  background-position: left top;
  transform: translateZ(2px);
}

.wallet:hover {
  transform: rotateY(180deg);
}


動畫(CSS3)

動畫是CSS3中具有顛覆性的特徵之一,可通過設置多個節點來精確控制一個或一組動畫,常用來實現複雜的動畫效果。

語法格式:

animation:動畫名稱 動畫時間 運動曲線  何時開始  播放次數  是否反方向;

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-j4JeRaFp-1574137044755)(G:/全棧1期/基礎班/03基礎班第三天CSS3入門及提高/1-教學資料/media/1498461096243.png)]

關於幾個值,除了名字,動畫時間,延時有嚴格順序要求其它隨意r

@keyframes 動畫名稱 {
  from{ 開始位置 }  0%
  to{  結束  }  100%
}

animation-iteration-count:infinite;  無限循環播放
animation-play-state:paused;   暫停動畫"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章