如果本文章對你有用,可搜索關注本人的微信公眾號:爬界,上面會及時推送最近的博客文章,大家一起進步哦 !
如果想要更好的閱讀體驗,可以進入 爬界博客網站 閱讀最新內容,網站地址:https://blog.climbtw.com,
本文主要涉及了 CSS介紹,基礎樣式,盒模型,定位機制,BFC,選擇器,CSS3 等內容,
文章目錄
- 1 介紹
- 1.1 CSS 基礎語法
- 2 CSS 基礎樣式
- 2.1 px,em,rem 單位的說明
- 2.2 CSS 字體(常用屬性 5個)
- 2.3 CSS 文本(常用屬性 14個)
- 2.4 CSS 背景(常用屬性 8個)
- 2.5 CSS 輪廓(常用屬性 4個)
- 2.6 CSS 鏈接:4 種狀態
- 2.7 CSS 串列:修改 表項標志(常用屬性 4個)
- 2.8 CSS 表格(常用屬性 5個)
- 3 CSS 盒模型(Box Model),外邊距塌陷(常用屬性 4個)
- 3.1 關于 水平,垂直居中 的小結
- 3.1.1 元素 顯示模式 轉換(常用屬性 2個)
- 3.2 盒模型 屬性(常用屬性 2個)
- 4 CSS 定位機制
- 4.1 CSS 浮動
- 4.1.1 清除浮動
- 4.2 CSS 定位
- 5 BFC(Block formatting context)塊級格式化背景關系
- 5.1 單行文本,多行文本 溢位隱藏 的處理方法
- 6 CSS 選擇器
- 6.1 基本選擇器
- 6.2 復合選擇器
- 6.3 滑鼠經過,給元素添加 透明蒙層(偽元素選擇器的 應用)
- 7 CSS 三大特性
- 7.1 CSS 權重的計算規則
- 8 其他屬性補充
- 8.1 CSS 尺寸
- 8.2 其他屬性
- 9 精靈圖技術
- 10 滑動門技術
- 11 CSS3 新特性
- 11.1 CSS3 字體:使用自定義字體
- 11.2 CSS3 文本:文本陰影,自動換行模式,多列顯示
- 11.2.1 多列顯示
- 11.3 CSS3 背景:尺寸,區域
- 11.4 CSS3 邊框:圓角,邊框陰影,盒模型型別
- 11.5 CSS3 過渡
- 11.6 CSS3 2D 變換
- 11.7 CSS3 3D 變換
- 11.7.1 旋轉輪播圖:3D 變換 示例
- 11.8 CSS3 影片
- 11.8.1 影片組 的設定
- 11.9 CSS3 顯示模式 flex:伸縮布局模式(Flex布局)
- 12 瀏覽器 屬性前綴
1 介紹
參考檔案:W3school 官網 的 CSS 參考手冊,
CSS:Cascading Style Sheets,層疊樣式表,- 層疊樣式表 的優先級:高到低
!important樣式- 行內樣式 / 行內樣式
- 內部樣式表
- 外部樣式表
- 瀏覽器預設設定
1.1 CSS 基礎語法
CSS 規則:
選擇器+一條 或 多條宣告,
CSS 注釋:/*…*/
舉例:
p { color: red; font-size: 14px; } p { color: #ff0000; } p { color: #f00; } p { color: rgb(255, 0, 0); } p { color: rgb(100%, 0%, 0%); } p { color: rgba(255, 0, 0, 0); } p { font-family: 'sans serif'; } /* 如果值為若干單詞,則要給 值 加 引號 */ p { /* 可讀性 */ text-align: center; color: black; font-family: arial; }
注意的是:
- 最后一條規則是不需要加
分號的,因為分號在英語中是一個分隔符號,不是結束符號,然而,大多數有經驗的設計師會在每條宣告的末尾都加上尾隨分號,這么做的好處是,當你從現有的規則中增減宣告時,會盡可能地減少出錯的可能性,- 子元素從父元素
繼承屬性,但是它并不總是按此方式作業,
2 CSS 基礎樣式
2.1 px,em,rem 單位的說明
| 單位 | 說明 |
|---|---|
px | 虛擬像素的 相對單位,相對的是 設備像素,單位 pt,當 設備像素比 DPR=1 時,1px = 1pt, |
em | 虛擬像素的 相對單位,相對的是 當前元素 或 父元素 文本的大小, |
rem | 虛擬像素的 相對單位,相對的是 根元素 文本的大小, |
2.2 CSS 字體(常用屬性 5個)
CSS 字體 常用屬性 包括 5個:
font,font-style,font-weight,font-size,font-family
通用字體模板:
body {
/*
Mac下默認 英文字體: 'Helvetica Neue', Helvetica (蘋果生態中最常用的西文字體, Helvetica Neue為 Helvetica 的改善版本)
Win下默認 英文字體: Arial (Win上默認的無襯線西文字體)
Mac下默認 中文字體: 'PingFang SC' (蘋方)
Win下默認 中文字體: 'Hiragino Sans GB', 'Heiti SC', 'Microsoft YaHei' (冬青黑體, 黑體-簡, 微軟雅黑)
Linux 下默認最佳簡體中文字體: 'WenQuanYi Micro Hei' (文泉驛微米黑)
最后備選字體: sans-serif (無襯線體)
*/
font-family: 'Helvetica Neue', Helvetica, Arial, 'PingFang SC',
'Hiragino Sans GB', 'Heiti SC', 'Microsoft YaHei', 'WenQuanYi Micro Hei', sans-serif;
/* 瀏覽器最小字體大小為: 16px */
font-size: 16px;
}
相關屬性:
| 屬性 | 描述 | 屬性值 | 說明 |
|---|---|---|---|
font | 設定字體樣式,用于綜合寫法 | font: font-style font-weight font-size font-family; | 用的不多, |
font-style | 字體風格 | 1. normal:默認值,標準的字體風格, 2. italic:斜體,是一種風格,不是簡單的傾斜, 3. oblique:標準風格的 簡單 傾斜,4. inherit:從父元素 繼承, | - |
font-weight | 字體粗細 | 1. lighter:細體, 2. normal:默認值,等同 font-weight: 400;,3. bold:粗體, 4. bolder:更粗,等同 font-weight: 700;,5. number: 100~900之間的 整百數值,表示 由細到粗 的程度,6. inherit:從父元素 繼承, | - |
font-size | 字體大小 | 1. 像素大小,不允許負值, 2. 百分比:相對 父元素 字體尺寸, 3. xx-small:超小, 4. x-small:更小, 5. small:小, 6. medium:默認值,正常大小, 7. large:大, 8. x-large:更大, 9. xx-large:超大, 10. smaller:比父元素小, 11. larger:比父元素大, 12. inherit:從父元素 繼承, | - |
font-family | 字體系列 | 通過字體系列組合,見 開頭的 通用字體模板, | 1. 多種 字體 之間使用 英文逗號 隔開,2. 英文字體名 要位于 中文字體名 之前,3. 中文字體名,或 英文字體中如果存在空格,都需要加 引號,我使用的 單引號,區別于 HTML, 3. 中文字體名 可以使用對應的 英文 表示,也可以使用中文 的 \ + Unicode 編碼 來表示(需要加引號),如: 微軟雅黑 = 'Microsoft YaHei' = '\5FAE\8F6F\96C5\9ED1'黑體 = SimHei = '\9ED1\4F53'宋體 = SimSun = '\5B8B\4F53' |
2.3 CSS 文本(常用屬性 14個)
CSS 文本 常用屬性 包括 14個:
- 普通屬性 12個:
color,line-height,white-space,letter-spacing,word-spacing,direction,unicode-bidi,text-indent,text-align,vertical-align,text-transform,text-decoration,- CSS3 屬性 2個:
text-shadow,word-break
相關屬性:
| 屬性 | 描述 | 屬性值 | 說明 |
|---|---|---|---|
color | 文本顏色 | 1. 內置顏色名:color: red;2. 十六進制: color: #FF0000;3. rgb: color: rgb(255, 0, 0);4. rgba: color: rgba(255, 0, 0, 0.5);5. inherit:從父元素 繼承, | - |
line-height | 文本行高 | 1. normal:默認值,采用合理的值, 2. 像素大小,不允許負值, 3. 百分比:相對當前字體尺寸, 4. number:相對當前字體尺寸的 倍數, 5. inherit:從父元素 繼承, | - |
white-space | 文本的 空格,換行 等 空白符 的處理方式 | 1. normal:默認值,忽略所有空白符, 但是文本超出區域是 會自動換行的,2. nowrap:忽略所有空白符,但是文本超出區域 不會自動換行,可以使用 <br /> 換行,3. pre:保留所有空白符,但是文本超出區域 不會自動換行,4. pre-wrap:保留所有空白符, 但是文本超出區域 會自動換行,5. pre-line:保留 換行符,忽略 空格,但是文本超出區域 會自動換行,6. inherit:從父元素 繼承, | - |
letter-spacing | 字母間隔 | 1. normal:默認值,等同 letter-spacing: 02. 像素大小,允許負值, 3. inherit:從父元素 繼承, | - |
word-spacing | 單詞間隔 | 同上, | - |
direction | 文本方向(CSS處理) | 1. ltr:默認值,從左到右, 2. rtl:從右到左, 3. inherit:從父元素 繼承, | 1. 對 塊級元素 直接生效, 2. 對 行內元素,只有當 unicode-bidi設定為 embed,或 bidi-override 時,才會應用, |
unicode-bidi | 文本方向(Unicode 處理) | 1. normal:默認值,不允許 行內元素 的 direction 屬性,2. embed:完全按照 direction 屬性,3. bidi-override:完全按照 direction 屬性, | 只用這樣理解就行, |
text-indent | 縮進文本 | 1. 像素大小,默認 0,可繼承,允許負值,2. 百分比:相對父元素的寬度, | 對 行內標簽 無效,可以使用 左內/外邊距 代替, |
text-align | 文本水平對齊 | 1. left:默認值,左對齊, 2. right:右對齊, 3. center:居中對齊, 4. justify:兩端對齊, 5. inherit:從父元素 繼承, | - |
vertical-align | 行內元素 基線對齊方式 | 1. bottom:按元素 底部 對齊,2. baseline:默認值,按元素 基線 對齊,3. middle:按元素 中線 對齊,4. top:按元素 頂部 對齊, | 1. 在表格中,這個屬性會設定 單元格內容 的 垂直對齊方式,2. 通常用來,特別是 行內塊元素,圖片,表格,表單,文本域,和 文本 之間的 垂直對齊方式, |
text-transform | 改變文本大小寫 | 1. none:默認值,不做任何改動, 2. uppercase:全大寫, 3. lowercase:全小寫, 4. capitalize:每個單詞 首字母大寫, 5. inherit:從父元素 繼承, | - |
text-decoration | 文本修飾 | 1. none:默認值,標準的文本, 2. underline:下劃線, 3. overline:上劃線, 4. line-through:中劃線, 5. blink:閃爍, 6. inherit:從父元素 繼承, | 可以同時設定多個值,用 空格 分隔,如:h2 { text-decoration: underline overline; } |
text-shadow | 文本陰影,CSS3 屬性 | 陰影x軸距離 陰影y軸距離 陰影模糊距離 陰影顏色凹下效果: text-shadow: 1px 1px 1px #FFF, -1px -1px 1px #000;凸起效果: text-shadow: 1px 1px 1px #000, -1px -1px 1px #FFF; | 1. x,y 軸的距離 是 必需設定的,一般 陰影模糊距離 設定和 x,y差不多就行,陰影顏色 可以使用 rgba 來設定 透明度,2. 可以設定多個陰影,用 逗號 隔開, |
word-break | 文本自動換行的 規則,CSS3 屬性 | 1. normal:瀏覽器默認換行規則, 2. break-all:默認值,允許在單詞內換行, 3. keep-all:不允許拆開單詞換行(不包括 連字單詞 - ), | - |
2.4 CSS 背景(常用屬性 8個)
CSS 背景 常用屬性 包括 8個:
- 普通屬性 6個:
background,background-color,background-image,background-repeat,background-attachment,background-position- CSS3 屬性 2個:
background-size,background-origin
需要注意的是:
背景只會出現在內容區域上,
相關屬性:所有背景屬性都不能 繼承,
| 屬性 | 描述 | 屬性值 | 說明 |
|---|---|---|---|
background | 設定背景樣式,用于綜合寫法 | background:background-color background-image background-repeat background-attachment background-position; | 1. 支持 多背景設定,用 逗號 隔開,如果有 重疊部分,按順序,前面的 會覆寫 后面的,2. 用的不多, |
background-color | 背景顏色 | 1. 內置顏色名:background-color: red;2. 十六進制: background-color: #FF0000;3. rgb: background-color: rgb(255, 0, 0);4. rgba: background-color: rgba(255, 0, 0, 0.5);5. transparent:透明色, | - |
background-image | 背景影像 | 1. none:默認值,不顯示背景影像, 2. url('URL'):URL 是影像的路徑, | - |
background-repeat | 背景影像 重復方式 | 1. repeat:默認值,x,y 軸同時重復, 2. repeat-x:x 軸重復, 3. repeat-y:y 軸重復, 4. no-repeat:不重復, | - |
background-attachment | 背景影像 固定方式 | 1. scroll:默認值,隨頁面一起滾動, 2. fixed:頁面滾動時,影像不滾動, | - |
background-position | 背景影像 定位 | 1. xpx/em/rem ypx//em/rem**:背景影像 左上角 的坐標位置,2. x% y%:背景影像 左上角 的百分比位置,相對于父元素的寬和高,上面2種方式,如果您僅規定了一個值,另一個值將是 50%,3. 位置關鍵詞:如果您僅規定了一個關鍵詞,那么第二個值將是 center,left top:左上, left bottom:左下, right bottom:右下, right top:右上, top center:上中, left center:左中, bottom center:下中, right center:右中, center center:中央, | - |
background-size | 背景 寬高,CSS3 屬性 | 1. width, height:寬高大小,或 百分比 (相對影像本身寬高),如果只改變 寬高 中的一個值,則影像不會 失真,2. cover:鋪滿區域,溢位部分隱藏, 3. contain:最大化顯示 完整 影像, | - |
background-origin | 背景 位于元素的 區域,CSS3 屬性 | 1. content-box:默認值,背景位于 內容 區域,2. padding-box:背景位于 內邊框 + 內容 區域,3. border-box:背景位于 邊框 + 內邊框 + 內容 區域, | - |
2.5 CSS 輪廓(常用屬性 4個)
CSS 輪廓 常用屬性 包括 4個:
outline,outline-color,outline-style,outline-width
相關屬性:
| 屬性 | 描述 | 屬性值 | 說明 |
|---|---|---|---|
outline | 設定輪廓樣式,用于綜合寫法 | outline: outline-color outline-style outline-width; | 用的不多, |
outline-color | 輪廓顏色 | 1. 內置顏色名:outline-color: red;2. 十六進制: outline-color: #FF0000;3. rgb: outline-color: rgb(255, 0, 0);4. rgba: outline-color: rgba(255, 0, 0, 0.5);5. invert:默認值,元素背景色的 反轉色,6. inherit:從父元素 繼承, | 1. 前提是已經設定了 outline-style 屬性,才會生效,2. 輪廓線 不會占據空間,也不一定是矩形, |
outline-style | 輪廓樣式 | 1. none:默認值,無輪廓, 2. solid:實線, 3. dashed:虛線, 4. dotted:點狀, 5. double:雙線, 6. inset:3D 凹邊, 7. outset:3D 凸邊, 8. groove:3D 凹槽, 9. ridge:3D 凸槽, 10. inherit:從父元素 繼承, | - |
outline-width | 輪廓寬度 | 1. 像素大小, 2. thin:細, 3. medium:默認值,中等, 4. thick:粗, 5. inherit:從父元素 繼承, | 1. 前提是已經設定了 outline-style 屬性,才會生效, |
2.6 CSS 鏈接:4 種狀態
鏈接的 4 種狀態,也稱
偽類選擇器:
- a
:link:未被訪問的鏈接,默認顏色為藍色,- a
:visited:用戶已訪問的鏈接,默認顏色為紫色,- a
:hover:滑鼠指標位于鏈接的上方,默認顏色為紅色,且帶有下劃線修飾,- a
:active:鏈接被點擊的時刻,
需要注意的是:
- 如果同時設定鏈接
多個狀態的樣式,則:
- a
:hover必須位于 a:link和 a:visited之后,- a:
active必須位于 a:hover之后,
相關屬性:
| 屬性 | 描述 | 屬性值 | 說明 |
|---|---|---|---|
| color | 控制鏈接的 文本顏色 | - | - |
| text-decoration | 控制鏈接的 下劃線 | - | - |
| font | 控制鏈接的 字體 | - | - |
| background | 控制鏈接的 背景 | - | - |
2.7 CSS 串列:修改 表項標志(常用屬性 4個)
無序串列
<ul>,有序串列<ol>,它們的表項標志屬性 是list-style,
CSS 串列 常用屬性 包括 4個:
list-style,list-style-image,list-style-type,list-style-position
相關屬性:
| 屬性 | 描述 | 屬性值 | 說明 |
|---|---|---|---|
list-style | 設定 表項標志 樣式,用于綜合寫法 | list-style: list-style-image list-style-type list-style-position; | - |
list-style-image | 表項標記 的影像 | 1. none:默認值,不顯示影像, 2. url('URL'):URL 是影像的路徑, | - |
list-style-type | 表項標記 的型別 | 1. none:無標記, 2. disc:默認值,實圓心,3. circle:空圓心,4. square:實心方塊,5. decimal:數字,6. decimal-leading-zero:0 開頭的數字 (01, 02, 03…)7. lower-alpha:小寫英文字母,8. upper-alpha:大寫英文字母,9. lower-roman:小寫羅馬數字 (i, ii, iii, iv, v…)10. upper-roman:大寫羅馬數字 (I, II, III, IV, V…) | - |
list-style-position | 表項標記 的位置 | 1. outside:默認值,位于文本的左方,外側,2. inside:位于文本的左方, 內側, | - |
2.8 CSS 表格(常用屬性 5個)
表格默認是 沒有邊框 的,
CSS 表格 常用屬性 包括 5個:
border-collapse,border-spacing,empty-cells,caption-side,table-layout
相關屬性:
| 屬性 | 描述 | 屬性值 | 說明 |
|---|---|---|---|
| border | 控制表格的 邊框 | - | - |
border-collapse | 控制表格的 邊框是否合一 | 1. separate:默認值,邊框會分開, 2. collapse:邊框會合并為一個單一的邊框, | - |
border-spacing | 控制 單元格邊框 間距 | 1. x ,y:x 表示水平間距,y表示垂直間距, | 1. border-collapse 為 separate 時,才生效, |
empty-cells | 是否顯示 空白單元格 | 1. show:默認,會在 空單元格 周圍繪制 邊框,2. hide:不顯示 空白單元格, | 1. border-collapse 為 separate 時,才生效, |
caption-side | 設定表格標題 <caption> 出現的位置 | 1. top:默認,定位在表格之上, 2. bottom:定位在表格之下, | - |
table-layout | 列寬 的計算模式 | 1. automatic:默認值,自動表格布局,列寬度由單元格內容設定,2. fixed: 固定表格布局,水平布局 僅取決于 表格寬度、列寬度、表格邊框寬度、單元格間距,而與單元格的內容無關, | - |
| width | 控制表格的 寬度 | - | - |
| height | 控制表格的 高度 | - | - |
| text-align | 單元格內容的 水平對齊方式 | - | - |
| vertical-align | 單元格內容的 垂直對齊方式 | 單元格內容 垂直居中:vertical-align: middle; | - |
| padding | 單元格的 內邊距 | - | - |
3 CSS 盒模型(Box Model),外邊距塌陷(常用屬性 4個)
CSS 盒模型:把 HTML 頁面中的元素看作是一個矩形的盒子,每個矩形都由元素的內容,內邊距(padding),邊框(border),外邊距(margin)4 個部分組成,
常用盒模型 屬性 4個:
- 常用屬性 3個:
border,padding,margin- CSS3 屬性 1個:
border-radius
需要注意的幾點:
在 CSS 中,
width和height指的是內容區域的寬度和高度,
增加內邊距、邊框和外邊距不會影響內容區域的尺寸,但是會增加元素框的總尺寸,行內元素:
內邊距不會影響行高的計算,左右正常,左右 auto 不會居中,
外邊距的上下無效,左右正常不會合并,左右 auto 不會居中,
舉例:如果一個行內元素,既有內邊距,又有背景,則在 視覺上 會延伸到其他行,與其他內容重疊,塊級元素:
內邊距正常,左右 auto 不會居中,
外邊距,左右 auto 會居中,在垂直方向上會合并,即外邊距塌陷,合并規則:
- 如果是
上下相鄰:則 垂直外邊距 會取較大值,- 如果是
內外相鄰:如果父元素沒有邊框或內邊距,則會發生外邊距合并,垂直外邊距 會取較大值,并作用于父元素上,子元素會緊貼父元素的邊緣,
外邊距塌陷解決方法:
- 給父元素
設定邊框,或添加內邊距,- 觸發 父元素的
BFC(塊級格式化背景關系),如給父元素 添加屬性overflow: auto;,浮動元素:
外邊距不會合并,盒模型屬性 使用優先級:
width>padding>margin
覆寫 瀏覽器默認的盒模型樣式:
* {
margin: 0;
padding: 0;
}
相關屬性:
| 屬性 | 描述 | 屬性值 | 說明 |
|---|---|---|---|
border | 元素的邊框樣式,用于綜合寫法, | border: border-width border-style border-color; | 1. 用的較多, 2. 和輪廓屬性 outline的區別:輪廓是 不占據空間的,且輪廓沒有透明屬性值 transparent,另外注意 它們 綜合寫法 的順序 是不同的, |
| border-width | 元素的邊框 寬度 | 1. 像素大小, 2. thin:細, 3. medium:默認值,中等, 4. thick:粗, | 1. 可以同時用 4個 值,單獨設定 上右下左 的邊框寬度,如果省略 下或左 的值,則它們會默認等于 上或右 的值, |
| border-style | 元素的邊框 樣式 | 1. none:默認值,無邊框, 2. hidden:無邊框,但應用于 表格時,可以解決邊框沖突,3. solid:實線, 4. dashed:虛線, 5. dotted:點狀, 6. double:雙線, 7. inset:3D 凹邊, 8. outset:3D 凸邊, 9. groove:3D 凹槽, 10. ridge:3D 凸槽, | 同上,也可以設定 4 個值, |
| border-color | 元素的邊框 顏色 | 1. 內置顏色名:border-color: red;2. 十六進制: border-color: #FF0000;3. rgb: border-color: rgb(255, 0, 0);4. rgba: border-color: rgba(255, 0, 0, 0.5);5. transparent:透明色, | 同上,也可以設定 4 個值, |
| 無 | 4組 邊框 單獨設定 屬性組, | 上邊框: border-top border-top-width border-top-style border-top-color 右邊框: border-right border-right-width border-right-style border-right-color 下邊框: border-bottom border-bottom-width border-bottom-style border-bottom-color 左邊框: border-left border-left-width border-left-style border-top-color | - |
border-radius | 元素邊框圓角 半徑長度,CSS3 屬性 | 1. 像素大小,一般設定為 元素高度 的一半,2. 百分比:控制圓角的 形狀, | - |
padding | 元素的 內邊距 | 1. 像素大小,不允許負值, 2. 百分比:相對于 父元素 的寬度, 3. auto:自動計算內邊距, 不會居中, | 同上上,也可以設定 4 個值, |
| 無 | 4個 內邊距 單獨設定 屬性, | padding-top padding-right padding-bottom padding-left | - |
margin | 元素的 外邊距 | 1. 像素大小,允許負值,2. 百分比:相對于 父元素 的寬度, 3. auto:自動計算外邊距, 塊級元素 會居中, | 同上上,也可以設定 4 個值, |
| 無 | 4個 外邊距 單獨設定 屬性, | margin-top margin-right margin-bottom margin-left | - |
width | 元素的寬 | - | - |
height | 元素的高 | - | - |
3.1 關于 水平,垂直居中 的小結
元素的 顯示模式,可以通過屬性
display進行自由轉換,
| 居中 | 方法 |
|---|---|
| 文本居中 | 1. 行內元素:高度不能設定,寬度是根據 內容自適應的,不存在居中問題,padding 可以控制 左右內邊距,line-height 可以控制文本的行高,從而實作在 行高內 的 垂直居中,2. 行內塊元素:可以設定寬高度, text-align: center; 可以控制 子元素 的文本居中, 3. 塊級元素: text-align: center; 可以控制 子元素 的文本居中, |
| 元素居中 | 1. 行內元素:不能控制外邊距,無法實作 元素居中, 2. 行內塊元素:不能控制外邊距,也無法實作 元素居中, 3. 塊級元素: margin:0 auto; 可以實作 元素的 水平居中,display: table-cell; vertical-align: middle;:給父元素設定,讓子元素實作 垂直居中,display: table-cell; vertical-align: middle; text-align: center;:給父元素設定,讓子元素實作 垂直水平居中,position: absolute; left: 50%; transform: translateX(-50%);:絕對定位,實作元素的 水平居中,position: absolute; top: 50%; transform: translateY(-50%);:絕對定位,實作元素的 垂直居中,position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);:絕對定位,實作元素的 水平垂直居中, |
3.1.1 元素 顯示模式 轉換(常用屬性 2個)
常用 顯示模式 轉換屬性 2個:
display,visibility,
元素的 3 種 顯示模式:
| 顯示模式 | 特征 | 標簽舉例 |
|---|---|---|
行內元素 | 1. 在一行內顯示,不可以進行寬高的數值設定, 2. 完全靠內容撐開寬高, | <span>,<a>,<label> 等, |
塊級元素 | 1. 獨自占領一行,可以進行寬高的數值的設定, 2. 如果不給寬度,塊級元素就默認為瀏覽器的 100% 寬度, | <hr />,<div>,<h1>…<h6>,<p> 等, |
行內塊元素 | 1. 能和其他元素待在一行,能設定寬高, | <img />,<th>,<td>,<form>,<input />,<textarea> 等, |
顯示模式 屬性:
| 屬性 | 描述 | 屬性值 | 說明 |
|---|---|---|---|
display | 控制元素的 顯示模式 | 1. inline:默認值,行內元素,2. block:塊級元素,3. inline-block:行內塊元素,4. flex:伸縮布局模式,給 父元素 設定,子元素 設定 flex: number;,實作 伸縮布局,5. none:元素不會被顯示,也 不會占據空間, | - |
visibility | 規定元素 是否可見 | 1. visible:默認值,元素可見,2. hidden:元素不會被顯示,但是 會占據空間,3. collapse:在表格使用時,用于隱藏一行或一列,不會占據位置, | - |
3.2 盒模型 屬性(常用屬性 2個)
常用的 盒模型屬性 2個:
- CSS3 新增 2個:
box-sizing,box-shadow
| 屬性 | 描述 | 屬性值 | 說明 |
|---|---|---|---|
box-shadow | 盒子陰影 | 陰影x軸距離 陰影y軸距離 陰影模糊距離 陰影顏色 內外陰影 | 1. 內外陰影 屬性值: outset:默認值,外部陰影, inset:內部陰影, 2. 類似屬性:控制文本陰影的 text-shadow, |
box-sizing | 盒模型的 模式 | 1. content-box:默認值,width,height 只包括 內容區域,2. border-box:width,height 包括 內容區域,內邊距,邊框, | - |
4 CSS 定位機制
CSS的 定位機制 有 3 種:
標準流,浮動,定位,
浮動和定位都會讓元素的顯示模式轉換為行內塊模式,
4.1 CSS 浮動
浮動:脫離標準流,浮動元素可以向左或向右移動,直到它的外邊緣碰到父元素邊緣或另一個浮動元素的邊緣為止,
需要注意的是:
- 浮動會找離它最近的
父元素對齊,但是不會超出父元素的內容區域,相鄰浮動的兩個元素之間是沒有距離的,而相鄰 的兩個行內塊元素之間是有距離的,而且不好清除,- 浮動排列規則:
前面的元素永遠在上方
- 如果第一個元素不浮動,第二個元素浮動,則第二個元素會在第一個元素的
下面進行浮動,- 如果第一個元素浮動,第二元素不浮動,則第一個元素會在第二個元素的
上面進行浮動,- 浮動元素下方的
文本會圍繞浮動元素 進行顯示,如果想要取消文本圍繞效果,則給文本設定清除浮動屬性clear,讓其左右不允許出現浮動元素即可,
| 屬性 | 描述 | 屬性值 | 說明 |
|---|---|---|---|
| float | 控制元素的 浮動 | 1. none:默認值,不浮動, 2. left:左浮動, 3. right:右浮動, | - |
4.1.1 清除浮動
清除浮動:讓 塊級元素 的 左右 不允許出現浮動元素,
清除浮動的應用:
- 讓浮動元素
下方的文本,不再圍繞浮動元素 顯示,
解決思路:在文本元素上添加 清除浮動屬性 即可,- 避免
沒有設定高度的父元素,因為子元素的浮動,而導致高度為 0的問題,
解決思路:在浮動元素的下面添加一個 塊級空標簽,然后設定 清除浮動屬性 即可,
具體解決方案:
- 直接在
HTML 頁面中添加 塊級空標簽:
缺點是:添加無意義的標簽,結構化較差,<div style="clear: both;"></div>- 通過 CSS 的
偽元素選擇器,在父元素的尾部添加塊級空標簽:.father:after { content: ''; display: block; clear: both; }- 觸發 父元素的
BFC(塊級格式化背景關系),如給父元素 添加屬性overflow: auto;,
| 屬性 | 描述 | 屬性值 | 說明 |
|---|---|---|---|
| clear | 清除 塊級元素 左右 的浮動元素 | 1. none:默認值,允許左右兩側出現浮動, 2. both:不允許 左右兩側 出現浮動,3. left:不允許 左側 出現浮動,4. right:不允許 右側 出現浮動, | - |
4.2 CSS 定位
定位:脫離標準流,讓元素具體定位到某一個位置,
需要注意的幾點:
- 當子元素需要設定 絕對定位
absolute時,一般會給父元素設定 相對定位relative,防止 子元素 脫離 父元素,
| 屬性 | 描述 | 屬性值 | 說明 |
|---|---|---|---|
positon | 元素 定位型別 | 1. static:默認值,不定位, 2. relative:相對定位,相對元素本身, 原來的空間仍占據,3. absolute:絕對定位,相對于第一個 非 static 定位的 父元素,原來的空間會洗掉,如果沒有,則相對于根元素, 4. fixed:絕對定位,相對于 瀏覽器可視區域 進行定位, | - |
top | 與 上方 的距離, | 1. 像素大小,允許負值, 2. 百分比:相對于 父元素的寬高, | - |
right | 與 右方 的距離, | - | - |
bottom | 與 下方 的距離, | - | - |
left | 與 左方 的距離, | - | - |
z-index | 元素的 堆疊順序 | 1. auto:默認值,與父元素相等, 2. number:數字越大,越在上方, 允許負值,**z-index 只在 定位元素 上奏效,一般用于 絕對定位 position:absolute; | - |
5 BFC(Block formatting context)塊級格式化背景關系
元素的 BFC 特性:使元素 成為一個獨立的渲染區域,區域內的操作 不會影響外部的元素,
應用場景:
- 觸發父元素的 BFC 特性,解決父元素無邊框 或 內邊距時,同子元素產生的
外邊距塌陷問題,- 觸發父元素的 BFC 特性,解決子元素浮動,父元素高度為 0 的問題,
BFC 特性的
特點:
- 在 BFC區域 / 父元素 中:
- 子元素的
外邊距是相對于父元素的邊緣而言的,無論父元素有無邊框或內邊距,(即不存在外邊距塌陷)- 父元素的高度計算,會包括 浮動 和 定位的 子元素的高度,
- 在 BFC區域 / 父元素 外:
- 父元素的 外邊距 與 相鄰元素的 外邊距 不會發生重疊,(即
BFC區域的外邊距不會發生重疊)- 父元素 不會與
相鄰浮動元素發生重疊,
BFC 特性的
觸發規則:
前提條件:元素的顯示模式必須為,block,table,list-item之一,觸發條件:給元素 添加下列屬性之一
overflow屬性不為visible,float屬性不為none,position屬性為absolute或fixed,display屬性為inline-block,table-cell,table-caption,flex,inline-flex,
相關屬性:
| 屬性 | 描述 | 屬性值 | 說明 |
|---|---|---|---|
white-space | 文本顯示方式 | 1. normal:默認值,默認處理方式, 2. nowarp:強制在同一行內顯示文本,直到文本結束 或 遇到 <br />, | - |
overflow | 當內容溢位時的 處理方式 | 1. visible:默認值,內容不會被修剪,會呈現在元素框之外, 2. hidden:內容會被修剪,并且其余內容是不可見的,3. auto: 內容會被修剪,但是瀏覽器會顯示滾動條以便查看其余的內容, | - |
text-overflow | 溢位文本的 處理方式 | 1. ellipsis:使用 ... 代替溢位文本,2. clip:溢位文本直接被修剪, 注意: text-overflow 需要配合 white-space 和 overflow 一起使用,才會生效, | - |
5.1 單行文本,多行文本 溢位隱藏 的處理方法
單行文本溢位隱藏:
div {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
多行文本溢位隱藏:
div {
height: 30px;
overflow: hidden;
position: relative;
}
div:after {
content: "...";
position: absolute;
right: 0;
bottom: 0;
padding: 0px 10px;
background-color: #FFF; /* 默認背景顏色為 透明 */
}
6 CSS 選擇器
前面 提到的
選擇器有:CSS 鏈接的偽類選擇器,和 清除浮動的偽元素選擇器,
6.1 基本選擇器
- 標簽選擇器:
標簽名,可表示多個標簽 - 類選擇器:
.類名,可表示多個標簽 - id 選擇器:
#id - 通配符選擇器:
*,表示所有標簽 - 偽類選擇器:
- 鏈接 偽類選擇器:
a:link:未被訪問的鏈接,默認顏色為藍色,
a:visited:用戶已訪問的鏈接,默認顏色為紫色,
a:hover:滑鼠指標位于鏈接的上方,默認顏色為紅色,且帶有下劃線修飾,
a:active:鏈接被點擊的時刻, - 位置 偽類選擇器:
:first-child:選取父元素的首個子元素,
:last-child:選取父元素的最后一個子元素,
:nth-child(n):匹配父元素的第 n 個子元素,n 的值包括:數字,even(偶數),odd(奇數),帶 n 的運算式(n 取值 0,1…)
:nth-last-child(n):同上,但是從最后一個子元素開始計數, - 目標 偽類選擇器:單獨使用
:target:選取當前活躍的元素,如,被選中的錨, - 其他 偽類選擇器:
:focus:獲得鍵盤焦點的元素,
- 鏈接 偽類選擇器:
- 偽元素選擇器:
E:first-letter:選取文本的第一個單詞 或 字,
E:first-line:選取文本的第一行,
E:selection:可以指定被選中文本的樣式,
E:before:在元素內部的開始位置創建一個元素,該元素為行內元素,必須結合content屬性使用,
content 屬性指定元素的內容,盡量不要為空,防止舊版本瀏覽器有空隙,如 Firefox 7.0 之前的版本會生成 空格,
E:after:同上,在元素內部的結束位置創建一個元素,
注意:新版本瀏覽器里
偽元素選擇器的識別符號為::,舊版本為:,新版本瀏覽器遇到:會自動轉換成::,
為了兼容性,統一使用:,
6.2 復合選擇器
- 多類選擇器:
類名.類名,表示同時含有多個類名的標簽,可表示多個標簽 - 交集選擇器:
標簽名.類名,可表示多個標簽 - 并集選擇器:
選擇器,選擇器,可表示多個標簽 - 后代選擇器:
選擇器 選擇器,可表示多個標簽 - 子元素選擇器:
選擇器 > 選擇器,可表示多個標簽 - 兄弟選擇器:
選擇器 + 選擇器,選擇相鄰 的標簽,,可表示多個標簽 - 屬性選擇器:
標簽名[屬性=屬性值],可表示多個標簽
示例:
E[attr]:存在attr屬性的元素,
E[attr=val]:屬性值等于val 的元素,
E[attr*=val]:屬性值包含val 字符并且在任意位置的元素,
E[attr^=val]:屬性值包含val 字符并且在開始位置的元素,
E[attr$=val]:屬性值包含val 字符并且在結束位置的元素,
6.3 滑鼠經過,給元素添加 透明蒙層(偽元素選擇器的 應用)
#div {
width: 300px;
height: 300px;
border: 1px solid red;
display: table-cell;
vertical-align: middle;
text-align: center;
position: relative;
}
#div:hover:after {
content: "蒙層的文本內容";
display: block;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
background-color: rgba(255, 255, 255, 0.8);
}
7 CSS 三大特性
CSS 三大特性:
層疊性,繼承性,優先級,
層疊性:如果出現樣式沖突,按照CSS 書寫順序,以最后的樣式為準,
繼承性:子標簽 會繼承 父標簽的某些樣式,如字號,文本顏色等文字類的屬性,
優先級:當2個 或 多個 規則同時應用到一個元素上時,需要考慮權重問題,
7.1 CSS 權重的計算規則
需要注意的問題:
- 繼承樣式的權重為 0,
行內樣式的權重大于所有的選擇器,!important命令表示最大的優先級,- 權重相同時,采取
層疊性,
計算規則:
用一個
四位的數串來表示權重,每個數代表一個級別,從左到右,級別依次降低,級別之間不存在進位,
最后的權重值由每個選擇器的貢獻值疊加得到,
| 選擇器 | 貢獻值 |
|---|---|
繼承 和 * | 0,0,0,0 |
每個元素選擇器 | 0,0,0,1 |
每個 類,偽類,偽元素 等 | 0,0,1,0 |
每個 id | 0,1,0,0 |
每個 行內樣式 | 1,0,0,0 |
每個 !important | 無窮大 |
8 其他屬性補充
8.1 CSS 尺寸
| 屬性 | 描述 | 屬性值 | 說明 |
|---|---|---|---|
width | 元素寬度 | - | - |
height | 元素高度 | - | - |
max-width | 最大寬度 | - | - |
min-width | 最小寬度 | - | - |
max-height | 最大高度 | - | - |
min-height | 最小寬度 | - | - |
8.2 其他屬性
| 屬性 | 描述 | 屬性值 | 說明 |
|---|---|---|---|
cursor | 滑鼠樣式 | 1. default:默認值,默認樣式, 2. pointer / hand:小手,( hand,因為火狐不支持) 3. move:移動, 4. text:文本, | - |
opacity | 元素的 透明度,CSS3 | 1. number:從 0.0 (完全透明)到 1.0(完全不透明), | - |
resize | 是否可由用戶調整元素的尺寸 | 1. none:用戶無法調整元素的尺寸,2. both:用戶可調整元素的 高度和寬度,3. horizontal:用戶可調整元素的 寬度,4. vertical:用戶可調整元素的 高度, | - |
9 精靈圖技術
本質:將一個頁面涉及到的所有零星
背景影像集中到一張大圖中去,然后將大圖用于 網頁,當用戶訪問該頁面時,只需向服務器發送一次請求,
使用:直接使用background-position等屬性來精確定位需要的背景部分即可,
10 滑動門技術
目的:使
各種特殊形狀的背景能夠自適應元素中文本內容的多少,而自由的拉伸滑動,
關鍵技術:一張寬度足夠長的背景圖,同時設定在鏈接和鏈接文本的背景上,一左一右拉伸,
<li>
<a href="#">
<span>導航欄內容</span>
</a>
<li>
a {
display: inline-block;
height: 33px;
background: url(images/ao.png) no-repeat;
color: #FFF;
text-decoration: none;
line-height: 33px;
}
a span {
display: inline-block;
height: 33px;
background: url(images/ao.png) no-repeat right;
}
11 CSS3 新特性
11.1 CSS3 字體:使用自定義字體
@font-face {
font-family: myFirstFont;
src: url('Sansation_Light.ttf'),
url('Sansation_Light.eot'); /* IE9+ */
}
div {
font-family:myFirstFont;
}
11.2 CSS3 文本:文本陰影,自動換行模式,多列顯示
相關屬性
text-shadow,word-wrap在CSS 文本中已經歸納,
11.2.1 多列顯示
| 屬性 | 描述 | 屬性值 | 說明 |
|---|---|---|---|
| column-count | 元素內文本 被分隔的 列數 | - | - |
| column-gap | 列之間的 間隔 | - | - |
| column-rule | 列之間的 分割邊框 樣式 | 同 border 一樣設定, | - |
11.3 CSS3 背景:尺寸,區域
相關屬性
background-size,background-origin在CSS 背景中已經歸納,
11.4 CSS3 邊框:圓角,邊框陰影,盒模型型別
相關屬性
border-radius,box-shadow,box-sizing在CSS 盒模型中已經歸納,
11.5 CSS3 過渡
需要注意的是:
- 過渡屬性 要寫在
需要過渡的元素里, 而不是元素變化后的樣式里,- 支持
多組過渡屬性,用逗號分隔,
| 屬性 | 描述 | 屬性值 | 說明 |
|---|---|---|---|
transition | 給 元素本身 添加 過渡屬性 | transition: 要過渡的屬性 過渡總時間 運動曲線 開始時間;1. 要過渡的屬性:寫屬性名,如果所有屬性都需要過渡變換,則寫 all,2. 過渡總時間:默認是 0s, 3. 運動曲線: ease:默認值,逐漸慢下來,linear:勻速,ease-in:加速,ease-out:減速,ease-in-out:先加速,再減速,4. 開始時間:默認是 0s, | - |
transition-property | 要過渡的屬性 | 是上面的屬性分解 | - |
transition-duration | 過渡總時間 | - | - |
transition-timing-function | 運動曲線 | - | - |
transition-delay | 開始時間 | - | - |
11.6 CSS3 2D 變換
多組變形,用空格隔開,
| 屬性 | 描述 | 屬性值 | 說明 |
|---|---|---|---|
transform | 變換總屬性 | 1. 位移:像素大小,百分比(相對自身寬高)translateX(x):水平移動,translateY(y):垂直移動,translate(x, y):水平垂直移動,2. 旋轉:正值為順時針,負值為逆時針, rotate(deg):平面旋轉度數,單位 deg,3. 縮放:自身寬高的 倍數,默認為 1, scaleX(x):x 方向 縮放倍數,scaleY(y):y 方向 縮放倍數,scale(x, y):x,y 方向 縮放倍數,4. 傾斜: skew(deg,deg):水平垂直方向 翻轉的度數, | - |
transform-origin | 設定 2D 變換的 原點 | 1. xpx/em/rem ypx//em/rem**:原點 的坐標位置,2. 位置關鍵詞:如果您僅規定了一個關鍵詞,那么第二個值將是 center,left top:左上, left bottom:左下, right bottom:右下, right top:右上, top center:上中, left center:左中, bottom center:下中, right center:右中, center center:中央, | - |
11.7 CSS3 3D 變換
多組變形,用空格隔開,
| 屬性 | 描述 | 屬性值 | 說明 |
|---|---|---|---|
transform | 變換總屬性 | 1. 位移:像素大小,百分比(相對自身寬高)translateX(x):水平移動,translateY(y):垂直移動,translateZ(z):前后移動,直觀表現形式就是 大小變化,這里參照物就是 視點 perspective 屬性,超過視點距離就看不到了,因為相當于跑到后腦勺去了,translate3d(x, y, z):z 只能設定 長度值,2. 旋轉:正值為順時針,負值為逆時針, rotateX(deg):沿 x 軸 旋轉度數,單位 deg,rotateY(deg):沿 y 軸 旋轉度數,單位 deg,rotateZ(deg):沿 z 軸 旋轉度數,單位 deg, | - |
transform-style | 變換的顯示模式 | 1. flat:默認值,以 2D 模式 顯示變換, 2. preserve-3d:以 3D 模式 顯示變換, | - |
perspective | 視距,即 視點 距離 螢屏 的距離 | 一般設定在父元素上,作用于 所有子元素上, 如: body { perspective: 1000px; } | - |
backface-visibility | 元素背向螢屏時,是否可見 | 1. visible:默認值,可見, 2. hidden:不可見, | - |
11.7.1 旋轉輪播圖:3D 變換 示例
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<title>測驗</title>
<style>
body {
perspective: 1000px;
}
section {
width: 300px;
height: 200px;
margin: 100px auto;
background: url(h.png) no-repeat;
background-size: cover;
position: relative;
transform-style: preserve-3d;
transition: all 5s linear;
}
section:hover {
transform: rotateY(360deg);
}
section div {
width: 100%;
height: 100%;
background: url(h.png) no-repeat;
background-size: cover;
position: absolute;
top: 0;
left: 0;
}
section div:nth-child(1) {
transform: rotateY(0deg) translateZ(400px);
}
section div:nth-child(2) {
transform: rotateY(60deg) translateZ(400px);
}
section div:nth-child(3) {
transform: rotateY(120deg) translateZ(400px);
}
section div:nth-child(4) {
transform: rotateY(180deg) translateZ(400px);
}
section div:nth-child(5) {
transform: rotateY(240deg) translateZ(400px);
}
section div:nth-child(6) {
transform: rotateY(300deg) translateZ(400px);
}
</style>
</head>
<body>
<section>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</section>
</body>
</html>
11.8 CSS3 影片
| 屬性 | 描述 | 屬性值 | 說明 |
|---|---|---|---|
animation | 給 元素本身 添加 影片組 | animation: 影片名稱 影片總時間 運動曲線 開始時間 播放次數 是否輪流反向播放;1. 影片名稱:一組 設定好的影片 的名稱,影片組的設定方法 見下,2. 影片總時間:默認是 0s, 3. 運動曲線: ease:默認值,逐漸慢下來,linear:勻速,ease-in:加速,ease-out:減速,ease-in-out:先加速,再減速,4. 開始時間:默認是 0s, 5. 播放次數:默認值為 1, 6. 是否反向播放: normal:默認值,影片正常播放,alternate:影片 輪流反向 播放, | - |
animation-name | 影片名稱 | 是上面的屬性分解 | - |
animation-duration | 影片總時間 | - | - |
animation-timing-function | 運動曲線 | - | - |
animation-delay | 開始時間 | - | - |
animation-iteration-count | 播放次數 | - | - |
animation-direction | 是否輪流反向播放 | - | - |
11.8.1 影片組 的設定
@keyframes 影片名稱 {
from {
// 變換操作
}
to {
// 變換操作
}
}
/* 或 */
@keyframes 影片名稱 {
0% {
// 變換操作
}
50% {
// 變換操作
}
100% {
// 變換操作
}
}
11.9 CSS3 顯示模式 flex:伸縮布局模式(Flex布局)
Flex布局 核心:父元素設定
display: flex;,子元素設定所占份數flex:1;,如果不設定,則不參與伸縮分配,
注意:Flex 布局的 語法規范 發生了很多變化,瀏覽器支持不一致,所以使用的不多,
父元素 部分相關屬性:
| 屬性 | 描述 | 屬性值 | 說明 |
|---|---|---|---|
display: flex; | 開啟 Flex 布局 | - | - |
flex-flow | Flex 布局屬性,綜合寫法 | flex-flow: flex-direction flex-wrap; | - |
| flex-direction | 調整 主軸方向 | 1. row:默認值,橫向, 2. column:縱向, | - |
| flex-wrap | 子元素的 換行模式 | 1. nowrap:默認值,不換行,收縮顯示, 2. wrap:必要時進行換行, 2. wrap-reverse:必要時進行換行,相反方向, | - |
justify-content | 子元素的 水平對齊方式 | 1. flex-start:默認值,左對齊, 2. flex-end:右對齊, 3. center:居中對齊, 4. space-between:平均分布,左右的子元素 貼近父元素,5. space-around:平均分布,每個子元素 四周都有 相同的空隙, | - |
子元素 相關屬性:
| 屬性 | 描述 | 屬性值 | 說明 |
|---|---|---|---|
| min-width | - | - | - |
| max-width | - | - | - |
12 瀏覽器 屬性前綴
解決某些
屬性的兼容性問題,
| 瀏覽器 屬性前綴 | 瀏覽器 |
|---|---|
-webkit- | Chrome, Safari, Android |
-ms- | IE, Edge |
-moz- | Firefox |
-o- | Opera |
-khtml- | Konqueror |
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/319645.html
標籤:其他
上一篇:程式員的未來
下一篇:0-test,起源
