CSS基礎筆記

CSS(Cascading Style Sheets),層疊樣式表。


基本格式

選擇器 {
    屬性:值;
}

CSS注釋

/*  注釋內容  */

引入樣式表

行內樣式表(內聯樣式)

通過標簽的style屬性設置元素樣式

<標簽名 style="屬性:值;屬性:值;">內容</標簽名>
內部樣式表(內嵌式)

將CSS代碼集中寫在head標簽內,用style標簽定義

<head>
    <style type="text/css">  <!-- type在html5中可省略 -->
        選擇器 {屬性:值;屬性:值;}
    </style>
</head>
外部樣式表(外鏈式)

將CSS代碼放在后綴為css的外部樣式表文件中,在HTML的head標簽中,用link標簽鏈接外部樣式表文件

<head>
    <link href="url地址" type="text/css" rel="stylesheet" />
</head>

選擇器

標簽選擇器(元素選擇器)

使用HTML標簽名稱作為選擇器

類選擇器

使用"."(英文句號)進行標識,后面跟著類名,如: .classname

標簽調用時添加屬性class="類名"

注意:

  • HTML使用多個類選擇器時,顯示效果與類名先后順序無關,而與CSS書寫順序有關
  • 不建議使用”_"下劃線命名
  • 不建議純數字和中文命名
  • 可參考《Web前端開發規范手冊》
id選擇器

使用“#“標識,后面緊跟id名

  • W3C標準規定,同一個頁面內,不允許有相同id的對象,但允許有相同class的對象
通配符選擇器

用”*“表示,能匹配頁面中所有的元素

偽類選擇器

鏈接偽類選擇器:

  • :link 未訪問的鏈接

  • :visited 已訪問的鏈接

  • :hover 鼠標移動到鏈接上時

  • :active 選定的鏈接

    注意,書寫時順序盡量不要顛倒

結構(位置)偽類選擇器(CSS3):

  • :first-child 屬于其父元素的第一個子元素
  • :last-child 屬于其父元素的最后一個子元素
  • :nth-child(n) 指定屬于其父元素的第n個子元素,n可以是數字、關鍵詞、公式
  • :nth-last-child(n) 指定屬于其父元素的倒數第n個子元素

目標偽類選擇器:

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

復合選擇器

交集選擇器

更精確地定義

標簽選擇器.類選擇器 {屬性:值;}
并集選擇器

定義共同擁有的屬性

選擇器,選擇器 {屬性:值;}
后代選擇器

包含深層全部

外層 內層 {屬性:值;}
子元素選擇器

只選擇子元素而不包含更深層的

父元素 > 子元素 {屬性:值;}

屬性選擇器

選擇器[屬性] {屬性:值;}
選擇器[屬性=值] {屬性:值;}  /* 值完全相同的 */
選擇器[屬性*=值] {屬性:值;}  /* 任意位置有該值的 */
選擇器[屬性^=值] {屬性:值;}  /* 起始位置有該值的 */
選擇器[屬性$=值] {屬性:值;}  /* 結束位置有該值的 */

偽元素選擇器

  • ::first-letter 文本的第一個字或詞
  • ::first-line 文本第一行
  • ::selection 選中文本時的樣式
  • ::before 元素內部開始位置創建一個元素并選擇
  • ::after 元素內部結束位置創建一個元素并選擇

標簽顯示模式

塊元素(block-level)

如<h1>~<h6>、<p>、<div>、<ul>、<ol>、<li>等

  • 總是從新行開始
  • 寬度默認是容器的100%
  • 高度、行高、外邊距及內邊距都可以控制
  • 可以容納內聯元素和其他塊元素
行內元素(inline-level)

如<a>、<strong>、<b>、<em>、<i><del>、<s>、<ins>、<u>、<span>等

  • 和相鄰元素在一行
  • 高、寬無效、水平方向的padding和margin可以設置,垂直方向無效
  • 默認寬度為內容寬度
  • 只能容納文本或其他行內元素
行內塊元素(inline-block)

如<img />、<input />、<td>

  • 和相鄰元素在一行
  • 高、寬、外邊距、內邊距都可以設置
  • 默認寬度為內容寬度
標簽顯示模式切換

display屬性:

  • block(行內轉塊)
  • inline(塊轉行內)
  • inline-block(塊、行內轉行內塊)

字體樣式屬性

font-size:字號
單位 說明
em 相對于當前對象內文本的字體尺寸
px 像素
絕對長度單位 說明
in 英寸
cm 厘米
mm 毫米
pt
font-family:字體
font-weight:字體粗細

可用值normal(400)、700(bold)、bolder、lighter、數字

font-style:字體風格

可用值normal(默認值)、italic(傾斜)、oblique(傾斜)

font:綜合設置字體樣式
選擇器 {font: font-style font-weight font-size/lin-height font-family;)
  • 使用font屬性時,值的順序不能更換,中間用空格隔開
  • 不需要設置的可以省略,但必須保留font-size和font-family,否則font屬性不起作用
常用技巧:
  • 現在網頁普遍使用14px+
  • 盡量使用偶數字號,ie6等老式瀏覽器對奇數會有bug
  • 盡量使用系統默認字體,當瀏覽器不支持第一個字體時會嘗試下一個字體
  • 當不支持字體的中文寫法時,可用英文寫法或者unicode寫法

外觀樣式

color:顏色
  1. 預設顏色,如red、blue、pink
  2. 十六進制,如#DDDDDD
  3. RGB形式,rgb(255,255,255)或rgb(100%,0,0)
  4. 顏色透明,rgba()
line-height:行間距

常用單位有像素px,相對值em,百分比%

text-align:水平對齊方式

常用值:left(默認),center,right

text-indent:首行縮進

建議使用單位em

letter-spacing:字間距
word-spaing:單詞間距
text-shadow:文字陰影

水平距離 垂直距離 模糊距離 顏色

  • 前兩個參數必須有,后兩個參數有默認值
text-decoration: 裝飾效果

none \ underline \ overline \ line-through

背景樣式

  • background-color: 背景顏色
  • background-image: 背景圖片,url(url地址)
  • background-repect: 是否平鋪,repeat-x \ repeat-y \ repeat \ no-repeat \ round \ space,默認repeat
  • background-attachment: 固定還是滾動,fixed \ scroll,默認scroll
  • background-position: 位置,top \ center \ bottom \ left \ center \ right \ 百分比 \ 長度值,默認top left
  • background: 背景顏色 背景圖片 平鋪 滾動 位置 ,順序無規定
  • rgba顏色可設置透明
  • background-size: 設置尺寸,寬高 \ cover \ contain
  • 多背景圖片,一個元素可以設置多重背景圖,每組background用 , 分隔,前面的背景圖層次較高

CSS書寫規范

  1. 選擇器與 { 之間包含空格
  2. 屬性名與 : 之間不包含空格,: 與值之間包含空格
  3. 包含多個選擇器時,每個選擇器獨占一行
  4. 選擇器嵌套層級盡量不大于3級
  5. 每個屬性定義另起一行
  6. 屬性定義以 ; 結尾
  7. 更詳細的看規范手冊

CSS三大特性

層疊性
  • 出現樣式沖突時,按書寫順序,以最后的樣式為準
繼承性
  • 子標簽會繼承父標簽的某些樣式,如字體、字號、顏色、行距等與文字類有關的
  • 不繼承的有:邊框、外邊距、內邊距、背景、定位、元素高等與塊有關的
特殊性

specificity用一個四位的數字串(0,0,0,0)表示,左面最大,一級大于一級,數位之間沒有進制

  • 元素(標簽) (0,0,0,1)
  • 類、偽類、屬性 (0,0,1,0)
  • ID (0,1,0,0)
  • 行內樣式 (1,0,0,0)
  • !important +∞ 屬性:值!important;
  • 繼承的權重為0
  • 權重相同時按順序,最后的為準

盒子模型

border:邊框
  • border: border-width border-style border-color

  • border-width: 邊框寬度

  • border-style:

    常用屬性值:none(無,默認)、solid(單實線)、dashed(虛線)、dotted(點線)、double(雙實線)

  • border-collapse: collapse 邊框合并

  • border-radius: 圓角半徑

padding: 內邊距
margin: 外邊距
  • 寬度屬性width和高度屬性height僅適用于塊元素,對行內元素無效(除img和input)
  • 外邊框會合并
  • 沒有給定寬高時,padding不會影響盒子大小

CS3盒子模型

box-sizing: 指定盒模型
  • content-box 默認值,盒子大小為width+padding+border
  • border-box 盒子大小為width,即width包含padding和border
box-shadow: 盒子陰影
  • h-shadow v-shadow blur spread color inset
  • 水平位置(必需) 垂直位置(必需) 模糊距離 陰影尺寸 顏色 外部陰影(outset)轉為內部陰影

浮動

普通流(標準流或文檔流)

上到下,左到右,塊元素占一行

float: 浮動

left right none(默認)

  • 浮動會使元素具有行內塊特性
clear: 清除浮動

left right both 不允許左側、右側、左右側有浮動元素

  1. 額外標簽法:在浮動元素末尾添加一個空標簽包含clear:both;

  2. 父級元素添加overflow屬性方法:在父級元素添加overflow: hidden;或值為auto\scroll都可以

  3. 使用after偽元素:

    .類名:after {  /* 一般類名為clearfix */
        content: ".";
        display: block;
        height: 0;
        visibility: hidden;
        clear: both;
    }
    .類名 {*zoom: 1;}  /* IE6、7專用 */
    
  4. before和after雙偽元素:

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

版心

指網頁中主題內容所在的區域

布局流程

  1. 確定頁面的版心
  2. 分析行模塊和列模塊
  3. 制作HTML和CSS
  4. CSS初始化

定位

  • 定位模式:static、relative、absolute、fixed
  • 邊偏移:top、bottom、left、right
static(靜態定位)
relative(相對定位)

相對在文檔流的位置定位,在文檔流中的位置保留

absolute(絕對定位)

相對最近的已定位父元素定位,所有父元素沒定位時,以body定位,不保留原位置

fixed(固定定位)

相對瀏覽器定位,不保留原位置

  • 固定定位沒有內容時,需要指定寬高
  • 居中,例如:left: 50%; margin-left: 半寬;
  • 行內元素添加絕對定位、固定定位、浮動后,會自動轉換為行內塊模式

疊放次序(z-index)

  • 默認值為0,取值越大,越居上,可以為負數
  • 值相等時,按書寫順序,后來居上
  • 只有相對定位、絕對定位、固定定位有此屬性

元素的顯示和隱藏

display: 顯示
  • none 隱藏,不保留位置
visibility : 可見性
  • visible 可見
  • hidden 隱藏,保留位置
overflow: 溢出
  • visible 默認
  • auto 超出就顯示滾動條
  • scroll 一直顯示滾動條
  • hidden 超出部分隱藏

CSS用戶界面樣式

cursor: 鼠標樣式

default、pointer、move、text等

outline: 輪廓
  • outline-width outline-style outline-color
  • 去除輪廓線,outline: 0;
resize:
  • 防止拖拽文本域,resize: none;
vertical-align: 垂直對齊
  • baseline、top、middel、bottom
  • 對塊元素無效,對行內元素或行內塊元素有效
  • 常用于圖片、表單、文字的對齊
  • 去除圖片底側縫隙

溢出的文字隱藏

work-break: 自動換行
  • normal break-all(允許在單詞內換行) keep-all(只能在半角空格或連字符處換行)
  • 主要處理英文單詞
white-space: 文本顯示方式
  • normal nowrap(強制同一行內顯示所有文本)
text-overflow: 文字溢出
  • clip ellipsis(溢出時顯示省略標記...)
  • 前提是設置了強制一行內顯示

CSS精靈技術(sprite)

本質就是將一些背景圖像整合到一張大圖中,通過background-position定位

字體圖標

  1. UI人員設計字體圖標效果圖(svg)
  2. 前端人員上傳生成并下載兼容性字體文件包
  3. 引入字體文件包到HTML頁面

滑動門

利用sprite技術和padding實現

  1. 外框顯示左門,用padding-left撐開背景
  2. 內框顯示左門以右所有,用padding-right撐開背景

過渡

transition: 屬性 時間 運動曲線 延遲;

  • transition-property 可用all指定所有屬性
  • transition-duration 默認0
  • transition-timing-function ease(默認)、linear、ease-in、ease-out、ease-in-out
  • transition-delay 默認0

2D轉換

transform: 方法
  • translate()方法 位移,長度或百分比(按自身)
  • rotate()方法 旋轉,角度deg
  • scale()方法 縮放或放大
  • skew()方法 翻轉
  • matrix()方法
transform-origin: 調整元素轉換變形的原點

3D轉換

transform: 方法
  • translate3d()方法
  • rotate()方法
perspective: 透視,視距長度
backface-visibility: 元素不面向屏幕時是否可見,hidden

動畫

animation: 動畫名稱 時間 運動曲線 何時開始 播放次數 是否反向
  • animation-name: 引用@keyframes動畫的名稱
  • animation-duration: 完成一個周期的時間,默認0
  • animation-timing-function: 運動曲線,默認ease
  • animation-delay: 延遲開始,默認0
  • animation-iteration-count: 播放次數,默認1,無限次為infinite
  • animation-direction: 是否反向,normal(默認)、reverse(反向)、alternate(先正常再反向)、alternate-reverse
  • animation-play-state: 運行狀態,默認running,暫停為paused
  • animation-fill-mode:
定義動畫
@keyframes 動畫名稱 {
    from {屬性:值}  /* 0% */
    to {屬性:值}  /* 100% */
}
或
@keyframes 動畫名稱 {
    0% {屬性:值}
    14% {屬性:值}
    100% {屬性:值}
}

伸縮布局(CSS3)

  • display: flex; 設置為伸縮布局模式
  • flex: 份數;
  • max-width\min-width:
  • flex-direction: 指定排列方式,默認水平方向row,垂直方向column
justify-content: 調整主軸對齊
  • flex-start 默認值,位于容器開頭
  • flex-end
  • center 居中
  • space-between 元素之間空白填充
  • space-around 元素前后空白填充
align-items: 調整側軸對齊
  • stretch 默認值,子元素沒高度時,拉伸使適用父容器
  • flex-start、flex-end、center
flex-wrap: 控制是否換行,當子元素寬度多于容器
  • nowrap 默認值
  • wrap
  • wrap-reverse
align-content : 垂直對齊
  • stretch 默認值
  • flex-start、flex-end、center、space-between、space-around
order: 子元素排列順序,整數值

BFC(塊級格式化上下文)

一個隔離的獨立容器

觸發BUFC:
  • float屬性不為none
  • position為absolute或fixed
  • display為inline-block、table-cell、table-caption、inline-flex
  • overflow不為visible(沒有副作用)
BFC特性:
  1. 盒子從頂端開始垂直地接個排列
  2. 盒子垂直方向距離由margin決定,同一個BFC的相鄰盒子margin會重疊
  3. BFC中每個盒子的margin-left(或margin-right)會觸碰到容器的border-left(border-right)
  4. BFC的區域不會與浮動盒子產生交集,而是緊貼浮動邊緣
  5. 計算BFC的高度時,會檢測浮動的盒子高度
BFC用途:
  1. 清除元素內部浮動(利用特性5)
  2. 使用不同的BFC,解決外邊距合并問題(利用特性1、特性2)
  3. 制作右側自適應的盒子(利用特性4)

瀏覽器前綴

  • -webkit- Chrome、Safari、Android Browser
  • -moz- Firefox
  • -o- Opera
  • -ms- Internet Explorer、Edge
  • -khtml- Konqueror

W3C統一驗證工具

http://validator.w3.org/unic.com/

CSS壓縮工具

站長之家:http://tool.chinaz.com/Tools/CssFormat.aspx

CSS Rest類庫

normalize.css 用于初始化css文件
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,739評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,634評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,653評論 0 377
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,063評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,835評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,235評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,315評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,459評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,000評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,819評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,004評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,560評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,257評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,676評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,937評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,717評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,003評論 2 374

推薦閱讀更多精彩內容

  • CSS 指層疊樣式表(Cascading Style Sheets),是一種用來為結構化文檔(如 HTML 文檔或...
    神齊閱讀 2,110評論 0 14
  • HTML 5 HTML5概述 因特網上的信息是以網頁的形式展示給用戶的,因此網頁是網絡信息傳遞的載體。網頁文件是用...
    阿啊阿吖丁閱讀 4,002評論 0 0
  • 選擇qi:是表達式 標簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    love2013閱讀 2,325評論 0 11
  • 引入 外部樣式表 內部樣式表 內嵌樣式 此方式不利于后期維護,較少使用此方法。 語法 選擇器屬性聲明=屬性名:屬性...
    小豸閱讀 1,222評論 0 51
  • css筆記總結 1.CSS 規則由兩個主要的部分構成:選擇器,以及一條或多條聲明。 選擇器通常是您需要改變樣式的 ...
    一生有你_c480閱讀 474評論 1 1