天天看點

前端css基礎知識點

css通常稱為css樣式表或層疊樣式表(級聯樣式表),

主要用于設定html頁面中的文本内容(字型、大小、對齊方式等)、圖檔的外形(寬高、邊框樣式、邊距等)以及版面的布局等外觀顯示樣式。

css以html為基礎,提供了豐富的功能,如字型、顔色、背景的控制及整體排版等,而且還可以針對不同的浏覽器設定不同的樣式。

css規則由兩個主要部分構成:選擇器以及一條或多條聲明。

每條聲明由一個屬性和一個值組成。屬性(property)是設定的樣式屬性,每個屬性有一個值,屬性和值被冒号分開。

選擇器通常是需要改變樣式的html元素。

注意:

如果定義不止一個聲明則需要用分号将每個聲明分開。例如:p{text-align:center;color:red}

如果值為若幹單詞,則要給值加引号: 例如:p {font-family: "sans serif";}

選擇器的分組

繼承及其問題:根據 css,子元素從父元素繼承屬性。

css 建立樣式表分為三種情況:

内部樣式表

行内式(内聯樣式)

外部樣式表(外鍊式)

樣式優先級:内聯樣式>内部樣式>外部樣式

三種樣式表差別:

id 選擇器可以為标有特定 id 的 html 元素指定特定的樣式,id 屬性和身份證一樣具有唯一性。

html元素以 id 屬性來設定 id 選擇器,css 中 id 選擇器以 "#" 來定義。

注意: id 屬性不能以數字開頭。

class 選擇器用于描述一組元素的樣式,也叫做類選擇器。

class 可以在多個元素中使用,并且一個元素也可以指定多個類名。

在 css 中,類選擇器以一個點 "." 号來定義。

同樣的類名的第一個字元也不能使用數字。

相同點:

都可以應用于任何元素

不同點:

id 選擇器隻能在文檔中使用一次,而類選擇器可以使用多次。

可以使用類選擇器詞清單方法為一個元素同時設定多個樣式(也就是一個元素可以制定多個類名),而id隻能指定一個。

最常見的css選擇器就是元素選擇器,也就是标簽選擇器,也就是在html中元素的最基本的選擇器。

标簽選擇器最大的優點是能快速為頁面中同類型的标簽統一樣式,同時這也是他的缺點,不能設計差異化樣式。

background 屬性用于定義 html 元素的背景。

定義元素背景效果的 css 屬性有五種:

background-color 背景顔色 background-image 背景圖像 background-repeat 背景圖像設定水準或垂直平鋪或不平鋪 background-position 背景圖像設定定位 background-attachment 背景圖像設定固定或滾動

背景屬性簡寫:

css文本格式主要分為:文本顔色(color)、文本對齊方式、文本修飾、文本陰影、文本縮進、文本間距、字間距、文本空白處理、文本轉換。

文本對齊方式:text-align屬性有四個值:left,center,right,justify(兩端對齊)。屬性預設值為auto。

文本修飾:text-decoration 屬性用來設定或删除文本的修飾。

主要是用來删除超連結的下劃線,也可以使用其他值來設定文本的修飾。

text-decoration:overline, 設定文本上劃線。

text-decoration:line-through, 設定文本中間劃線。

text-decoration:underline, 設定文本下劃線。

文本陰影:text-shadow: x y shadow color;

其中 x 是水準陰影的偏移值,

y 是垂直陰影的偏移值,

shadow 用于指定陰影的模糊值,即模糊效果的作用距離,不允許負值。

color 指定陰影的顔色。該屬性有兩個作用,産生陰影和模糊主體。

文本縮進:用來指定文本的首行縮進,允許為負值,如果值是負數,第一行則向左縮進。

css表示為:text-indent:2em,em 是相對文字大小的機關,1em 就是1個文字大小,2em 就是兩個文字大小。

文本間距:行高,也就是文本行的高度。例如:line-height:22px;

字間距:letter-spacing 和 word-spacing 這兩個屬性都可用來增加或減少文本間的空白,即字間距。

不同的是:

letter-spacing 屬性設定字元間距,而 word-spacing 屬性設定單詞間距。

word-spacing 屬性對中文無效,是以在設定中文的字間距時請使用 letter-spacing 屬性。

letter-spacing 和 text-align:justify 是兩個沖突的屬性,不能同時使用;

text-align:justify 是設定内容根據寬度自動調整字間距,使各行的長度恰好相等,實作文本兩端對齊效果,

而 letter-spacing 是指定一個固定的字間距。

文本空白處理:white-space 屬性指定元素内的空白如何處理,預設值為 normal 空白會被浏覽器忽略。

該屬性還有4個值:

nowrap 文本不會換行,禁止換行,文本會在同一行上繼續,直到遇到<br/> 标簽為止。

pre 空白會被浏覽器保留,這種方式類似 html 中的 <pre> 标簽,用于定義預格式文本。

pre-wrap 指定保留白白符序列,但是正常地進行換行。

pre-line 指定合并空白符序列,但是保留換行符,并允許自動換行。

文本轉換:text-transform 屬性控制文本中的字母。

是用來指定在一個文本中的大寫和小寫字母,可用于将所有字句變成大寫或小寫字母,或每個單詞的首字母大寫。

text-transform:capitalize; 定義文本中的每個單詞以大寫字母開頭。

text-transform:uppercase; 定義文本僅有大寫字母。

text-transform:lowercase; 定義文本僅有小寫字母。

font 屬性可用于設定文本字型,定義樣式,如加粗,大小等,屬于複合屬性,也叫做簡寫屬性。

簡寫順序:

font-style(字型樣式) --> font-variant(字型變形) --> font-weight(字型加粗) --> font-size(字型大小)/line-height --> font-family(設定文本字型)

注意,font-size 和 font-family 的值是必需的,否則無效。

(1)是絕對或相對大小,可以使用px、em、%和em組合來設定。

使用px設定:通過像素設定文本大小是設定的整個頁面。

使用em設定:1em等于目前的字型尺寸,比如設定的預設字型是12px,是以1em的預設大小就是12px。像素轉換em:px/12 = em

使用%和em組合設定:在所有浏覽器的解決方案中,設定 <body> 元素的預設字型大小是 100%,可以顯示相同的文本大小,并允許所有浏覽器縮放文本的大小。

(2)font-style 屬性主要用于指定斜體文字。

屬性有三個值:

normal正常顯示文本

italic 定義斜體

oblique 定義傾斜的文字

連結的四種狀态是:

a:link - 正常,未通路過的連結。

a:visited - 已通路過的連結。

a:hover - 當滑鼠滑動到連結上時。

a:active - 連結被點選的那一刻。

作用:1 設定不同的清單項标記 2 設定清單項标記為圖像

修改清單項标記使用 list-style-type,使用圖像作為标記可以利用 list-style-image 屬性完成。

無序清單經常用來做導航欄菜單,通常都需要隐藏無序清單項的标記,那麼就使用 list-style-type:none,表示無标記。

list-style-type 屬性的預設值為 disc 實心圓,即小黑點。

除了無标記還可以修改标記,例如circle空心圓,square實心方塊。

有序清單項标記預設使用數字樣式顯示,即 list-style-type:decimal。

要指定清單項标記的圖像,可以使用 list-style-image 屬性,隻需要簡單地設定一個 url() 值,就可以将圖像作為标記類型。

清單屬性簡寫:list-style:list-style-type,list-style-position,list-style-image;

表格邊框: border

表格寬度和高度:width 和 height 

表格對齊:text-align 和 vertical-align

表格内邊距:tr,td的padding設定

分組選擇器,例如:

嵌套選擇器,例如:

通配符選擇器

屬性選擇器:屬性選擇器使用[attr],例如:把所有帶有 title 屬性的元素的字型設定為紅色

屬性和值選擇器:屬性選擇器使用[attr=value]

屬性和多個值的選擇器:使用有兩種情況:屬性值用空格分隔使用<code>:[attr~=value]</code>

屬性值用連字元分隔則使用<code>:[attr|=value]</code>

例如:把包含 title='hello' 的元素的字型設定為綠色,使用 ~ 分隔屬性和值

表單樣式:屬性選擇器在為不帶有 class 或 id 的表單設定樣式時特别有用。例如:

後代選則器:又稱為包含選擇器,以空格分隔,子元素選擇器隻能選擇作為某元素子元素的元素。

子元素選擇器:子元素選擇器隻能選擇作為某元素子元素的元素,以 &gt; 分隔,子元素選擇器隻能選擇作為某元素子元素的元素。

相鄰兄弟選擇器:可選擇緊接在另一進制素後的元素,且二者有相同父元素,以 + 分隔。

普通相鄰兄弟選擇器:選取所有指定元素的相鄰兄弟元素,以 ~ 分隔。

選擇器組合:多種選擇器可以結合起來使用。

css 僞類是用來向一些選擇器添加特殊的效果。

在浏覽器中,連結的不同狀态都可以以不同的方式顯示:

注意: 在 css 定義中,a:hover 必須被置于 a:link 和 a:visited 之後,

a:active 必須被置于 a:hover 之後,才是有效的。

選擇作為任何元素的第一個子元素 p。選擇器使用 p:first-child。

選擇所有 p 元素中的第一個子元素 b。選擇器使用 p&gt;b:first-child。

選擇所有作為第一個子元素 p 中的所有 b 元素。選擇器使用 p:first-child b。

使用 :lang 僞類可以為不同的語言定義特殊的規則:

css 僞元素是用來為一些選擇器添加特殊的效果。

css 類也可以使用僞元素:選擇器.class:僞元素{attr:value;}

content 屬性與 :before 及 :after 僞元素配合使用,來插入生成内容,該屬性用于定義元素之前或之後放置的生成内容。

content 的内容一般可以為四種:

content:none 該值是預設值,不插入内容。

content:"string" 插入文本。

content:attr(屬性) 插入标簽屬性值。

content:url(路徑) 使用指定的絕對或相對位址插入一個外部資源,可以是圖像,音頻,視訊或浏覽器支援的其他任何資源。

塊級元素(block-level):每個塊元素通常都會獨自占據一整行或多整行,

可以對其設定寬度、高度、對齊等屬性,常用于網頁布局和網頁結構的搭建。

常見的塊元素有&lt;h1&gt;~&lt;h6&gt;、&lt;p&gt;、&lt;div&gt;、&lt;ul&gt;、&lt;ol&gt;、&lt;li&gt;等,其中&lt;div&gt;标簽是最典型的塊元素。

總是從新行開始

高度,行高,外邊距以及内邊距都是可以控制的

寬度預設是容器的100%

可以容納内聯元素和其他塊元素

行内元素(inline-level):不占有獨立的區域,僅僅靠自身的字型大小和圖像尺寸來支撐結構,

一般不可以設定高度,寬度,對齊等屬性,常用于控制頁面中文本的樣式。

和相鄰行内元素在一行上。

高、寬無效,但水準方向的padding和margin可以設定,垂直方向的無效。

預設寬度就是它本身内容的寬度。

行内元素隻能容納文本或則其他行内元素。(a特殊)

隻有文字才能組成段落,是以p裡面不能放塊級元素,同理還有這些标簽h1,h2,h3,h4,h5,h6,dt,

它們都是文字類塊級标簽,裡面不能放其他塊級元素。

連結裡面不能再放連結。

在行内元素中有幾個特殊的标簽——&lt;img /&gt;、&lt;input /&gt;、&lt;td&gt;,

可以對它們設定寬高和對齊屬性,有些資料可能會稱它們為行内塊元素。

和相鄰行内元素(行内塊)在一行上,但是之間會有空白縫隙。

高度,行高、外邊距以及内邊距都可以控制。

css層疊性:是指多種css樣式的疊加。

css繼承性:是指書寫css樣式表時,子标簽會繼承父标簽的某些樣式,如文本顔色和字号。

想要設定一個可繼承的屬性,隻需将它應用于父元素即可。簡單了解就是: 子承父業。

css優先級:定義css樣式時,經常出現兩個或更多規則應用在同一進制素上,這時就會出現優先級的問題。

使用了 !important聲明的規則。

考慮權重時,需要注意的一些點:

繼承樣式的權重為0。

行内樣式優先。

權重相同時,css遵循就近原則。

盒子模型:就是把html頁面中的元素看作是一個矩形的盒子,也就是一個盛裝内容的容器。

每個矩形都由元素的内容、内邊距(padding)、邊框(border)和外邊距(margin)組成。

盒子邊框(border)

1 外邊距實作盒子居中

滿足兩個條件:

必須是塊級元素。

盒子必須指定了寬度(width)

然後給元素左右的外邊距都設定為auto。

2 文字盒子居中

文字水準居中是 text-align: center

盒子水準居中 左右margin 改為 auto

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

width &gt; padding &gt; margin 

原因:

margin 會有外邊距合并 還有 ie6下面margin 加倍的bug,是以最後使用。

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

width   沒有問題,我們經常使用寬度剩餘法 高度剩餘法來做。

浮動:是指設定了浮動屬性的元素會脫離标準普通流的控制,移動到其父元素中指定位置的過程。

文法:選擇器{float:屬性值;} 屬性值可以是left,right,both,none。

目的:為了讓多個塊級元素同一行上顯示。

-static:自動定位(預設定位方式),所謂靜态位置就是各個元素在html文檔流中預設的位置。

relative:相對定位,相對定位是将元素相對于它在标準流中的位置進行定位

absolute:絕對定位,相對于其上一個已經定位的父元素進行定位

fixed:固定定位,相對于浏覽器視窗進行定位。它的特點在于它的元素跟父親沒有任何關系,隻認浏覽器;

完全脫标,不占有位置,不随着滾動條滾動。

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

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

後面數字一定不能加機關。

隻有相對定位,絕對定位,固定定位有此屬性,其餘标準流,浮動,靜态定位都無此屬性,亦不可指定此屬性