p{
color: red;
}
h1{
color: red;
}
複製代碼
#p1{
font-size: 20px;
}
複製代碼
.p2{
color: red;
}
.hello{
font-size: 50px;
}
複製代碼
#p1 , .p2 , h1{
background-color: yellow;
}
複製代碼
*{
color: red;
}
複製代碼
span.p3{
background-color: yellow;
}
複製代碼
#d1 span{
color: greenyellow;
}
複製代碼
div > span{
background-color: yellow;
}
複製代碼
Tips: 父元素:直接包含子元素的元素
子元素:直接被父元素包含的元素
祖先元素:直接或間接包含後代元素的元素,父元素也是祖先元素
後代元素:直接或間接被祖先元素包含的元素,子元素也是後代元素
兄弟元素:擁有相同父元素的元素叫作兄弟元素css
僞類專門用來表示元素的一種的特殊的狀態,好比:訪問過的超連接,好比普通的超連接,好比獲取焦點的文本框
當咱們須要爲處在這些特殊狀態的元素設置樣式時,就可使用僞類api
a:link{color: yellowgreen;}
複製代碼
瀏覽器是經過歷史記錄來判斷一個連接是否訪問過,因爲涉及到用戶的隱私問題,因此使用visited僞類只能設置字體的顏色瀏覽器
這個僞類在火狐中須要採用另外一種方式編寫::-moz-selection兼容火狐的佈局
p::-moz-selection{background-color: orange;}
複製代碼
兼容大部分瀏覽器的字體
p::selection{background-color: orange;}
複製代碼
使用僞元素來表示元素中的一些特殊的位置.spa
通常before和after都須要結合content這個樣式一塊兒使用, 經過content能夠向before或after的位置添加一些內容
:aftercode
body > p:first-child{background-color: yellow;}p:last-child{background-color: yellow;}
複製代碼
該選擇器後邊能夠指定一個參數,指定要選中第幾個子元素
even 表示偶數位置的子元素
odd 表示奇數位置的子元素orm
p:nth-child(odd){background-color: yellow;}
複製代碼
:first-of-type
,:last-of-type
,:nth-of-type
,:first-child
這些很是的相似,只不過child,是在全部的子元素中排列而type,是在當前類型的子元素中排列繼承
p:first-of-type{background-color: yellow;}
複製代碼
爲挨着的兄弟元素添加樣式,其中 + 表示後一個,而 ~ 則表示前一個ip
span ~ p{
background-color: yellow;
}
span + p{
background-color: yellow;
}
複製代碼
像兒子能夠繼承父親的遺產同樣,在CSS中,祖先元素上的樣式,也會被他的後代元素所繼承,利用繼承,能夠將一些基本的樣式設置給祖先元素,這樣全部的後代元素將會自動繼承這些樣式。可是並非全部的樣式都會被子元素所繼承,好比:背景相關的樣式
都不會被繼承 邊框相關的樣式
定位相關
的
優先級的規則:
像素是咱們在網頁中使用的最多的一個單位,一個像素就至關於咱們屏幕中的一個小點,咱們的屏幕實際上就是由這些像素點構成的可是這些像素點,是不能直接看見。不一樣顯示器一個像素的大小也不相同,顯示效果越好越清晰,像素就越小,反之像素越大。
也能夠將單位設置爲一個百分比的形式,這樣瀏覽器將會根據其父元素的樣式來計算該值使用百分比的好處是,當父元素的屬性值發生變化時,子元素也會按照比例發生改變在咱們建立一個自適應的頁面時,常用百分比做爲單位
em和百分比相似,它是相對於當前元素的字體大小來計算的 1em = 1font-size 使用em時,當字體大小發生改變時,em也會隨之改變當設置字體相關的樣式時,常常會使用em
在CSS並無爲咱們提供一個直接設置行間距的方式, 咱們只能經過設置行高來間接的設置行間距,行高越大行間距越大 使用line-height來設置行高 行高相似於咱們上學單線本,單線本是一行一行,線與線之間的距離就是行高, 網頁中的文字實際上也是寫在一個看不見的線中的,而文字會默認在行高中垂直居中顯示。
行間距 = 行高 - 字體大小
經過設置line-height能夠間接的設置行高,
能夠接收的值:
1.直接就收一個大小
2.能夠指定一個百分數,則會相對於字體去計算行高
3.能夠直接傳一個數值,則行高會設置字體大小相應的倍數
p{
line-height: 200%;
line-height: 20px;
line-height: 2;
}
複製代碼
對於單行文原本說,能夠將行高設置爲和父元素的高度一致, 這樣能夠是單行文本在父元素中垂直居中
可選值:
可選值:
超連接會默認添加下劃線,也就是超連接的text-decoration的默認值是underline若是須要去除超連接的下劃線則須要將該樣式設置爲none
實際上就是設置詞與詞之間空格的大小
可選值:
當給它指定一個正值時,會自動向右側縮進指定的像素 若是爲它指定一個負值,則會向左移動指定的像素, 經過這種方式能夠將一些不想顯示的文字隱藏起來 這個值通常都會使用em做爲單位
使用width來設置盒子內容區的寬度,使用height來設置盒子內容區的高度。**width和height只是設置的盒子內容區的大小,而不是盒子的整個大小,盒子可見框的大小由內容區,內邊距和邊框共同決定。 內聯元素不能設置 height 和 width ,若是非要設置必須修改 display 。
要爲一個元素設置邊框必須指定三個樣式
使用border-width能夠分別指定四個邊框的寬度若是在border-width指定了四個值,則四個值會分別設置給 上 右 下 左,按照順時針的方向設置的
若是指定三個值,則三個值會分別設置給 上 左右 下
若是指定兩個值,則兩個值會分別設置給 上下 左右
若是指定一個值,則四邊全都是該值
和寬度同樣,color也提供四個方向的樣式,能夠分別指定顏色
指的是盒子的內容區與盒子邊框之間的距離* 一共有四個方向的內邊距,內邊距會影響盒子的可見框的大小,元素的背景會延伸到內邊距.
外邊距指的是當前盒子與其餘盒子之間的距離,他不會影響可見框的大小,而是會影響到盒子的位置。因爲頁面中的元素都是靠左靠上擺放的,因此注意當咱們設置上和左外邊距時,會致使盒子自身的位置發生改變。_
margin還能夠設置爲auto,auto通常只設置給水平方向的margin若是隻指定,左外邊距或右外邊距的margin爲auto則會將外邊距設置爲最大值垂直方向外邊距若是設置爲auto,則外邊距默認就是0若是將left和right同時設置爲auto,則會將兩側的外邊距設置爲相同的值,就可使元素自動在父元素中居中,因此咱們常常將左右外邊距設置爲auto。
垂直外邊距的重疊在網頁中相鄰垂直方向的外邊距會發生外邊距的重疊所謂的外邊距重疊指兄弟元素之間的相鄰外邊距會取最大值而不是取和.
若是父子元素的垂直外邊 距相鄰 **了,則子元素的外邊距會設置給父元素.
注意:內聯元素是不支持垂直方向的外邊距的,其餘的都和塊級元素相同。
將一個內聯元素變成塊元素, 經過display樣式能夠修改元素的類型
可選值:
能夠用來設置元素的隱藏和顯示的狀態
可選值:
子元素默認是存在於父元素的內容區中,
理論上講子元素的最大能夠等於父元素內容區大小
若是子元素的大小超過了父元素的內容區,則超過的大小會在父元素之外的位置顯
超出父元素的內容,咱們稱爲溢出的內容
父元素默認是將溢出內容,在父元素外邊顯示,
經過overflow能夠設置父元素如何處理溢出內容:
可選值:
- visible,默認值,不會對溢出內容作處理,元素會顯示
- hidden, 溢出的內容,會被修剪,不會顯示
- scroll, 會爲父元素添加滾動條,經過拖動滾動條該屬性不論內容是否溢出,都會添加水平
- auto,會根據需求自動添加滾動條,須要水平就添加水平須要垂直就添加垂直都不須要就都不加
文檔流文檔流處在網頁的最底層,它表示的是一個頁面中的位置,咱們所建立的元素默認都處在文檔流中
元素在文檔流中的特色
1.塊元素在文檔流中會獨佔一行,塊元素會自上向下排列。
2.塊元素在文檔流中默認寬度是父元素的100%
3.塊元素在文檔流中的高度默認被內容撐開
1.內聯元素在文檔流中只佔自身的大小,會默認從左向右排列,若是一行中不足以容納全部的內聯元素,則換到下一行,繼續自左向右。
2.在文檔流中,內聯元素的寬度和高度默認都被內容撐開
塊元素在文檔流中默認垂直排列, 若是但願塊元素在頁面中水平排列,可使塊元素脫離文檔流使用float來使元素浮動,從而脫離文檔流
可選值:
當爲一個元素設置浮動之後(float屬性是一個非none的值), 元素會當即脫離文檔流,元素脫離文檔流之後,它下邊的元素會當即向上移動 元素浮動之後,會盡可能向頁面的左上或右上漂浮, 直到遇到父元素的邊框或者其餘的浮動元素
若是浮動元素上邊是一個沒有浮動的塊元素,則浮動元素不會超過塊元素。
浮動的元素不會超過他上邊的兄弟元素,最多最多一邊齊。
浮動的元素不會蓋住文字,文字會自動環繞在浮動元素的周圍
在文檔流中,子元素的寬度默認佔父元素的所有當元素設置浮動之後,會徹底脫離文檔流.塊元素脫離文檔流之後,高度和寬度都被內容撐開
開啓span的浮動內聯元素脫離文檔流之後會變成塊元素
在文檔流中,父元素的高度默認是被子元素撐開的,也就是子元素多高,父元素就多高。可是當爲子元素設置浮動之後,子元素會徹底脫離文檔流,此時將會致使子元素沒法撐起父元素的高度,致使父元素的高度塌陷。因爲父元素的高度塌陷了,則父元素下的全部元素都會向上移動,這樣將會致使頁面佈局混亂。
因此在開發中必定要避免出現高度塌陷的問題,咱們能夠將父元素的高度寫死,以免塌陷的問題出現,可是一旦高度寫死,父元素的高度將不能自動適應子元素的高度,因此這種方案是不推薦使用的。
根據W3C的標準,在頁面中元素都一個隱含的屬性叫作Block Formatting Context簡稱BFC,該屬性能夠設置打開或者關閉,默認是關閉的。當開啓元素的BFC之後,元素將會具備以下的特性:
1.父元素的垂直外邊距不會和子元素重疊
2.開啓BFC的元素不會被浮動元素所覆蓋
3.開啓BFC的元素能夠包含浮動的子元素
如何開啓元素的BFC
1.設置元素浮動使用這種方式開啓,雖然能夠撐開父元素,可是會致使父元素的寬度丟失並且使用這種方式也會致使下邊的元素上移,不能解決問題。這是由於開啓浮動的會計元素寬高都是默認被撐起來的,除非自動設置寬高。
2.設置元素絕對定位
3.設置元素爲inline-block能夠解決問題,可是會致使寬度丟失,不推薦使用這種方式
4.將元素的overflow設置爲一個非visible的值
**推薦方式:將overflow設置爲hidden是反作用最小的開啓BFC的方式。 **
是在IE6及如下的瀏覽器中並不支持BFC,因此使用這種方式不能兼容IE6。在IE6中雖然沒有BFC,可是具備另外一個隱含的屬性叫作hasLayout,該屬性的做用和BFC相似,所在IE6瀏覽器能夠經過開hasLayout來解決該問題開啓方式不少,咱們直接使用一種反作用最小的:直接將元素的zoom設置爲1便可
.parent{
zoom:1;
overflow: hidden;
}
複製代碼
能夠直接在高度塌陷的父元素的最後,添加一個空白的div, 而後在對其進行清除浮動, 因爲這個div並無受到浮動元素的影響,因此他應該處在原來的元素在的時候的位置這樣就至關於原來的元素還在,因此是能夠撐開父元素的高度的,這樣能夠經過這個空白的div來撐開父元素的 基本沒有反作用使用這種方式雖然能夠解決問題,可是會在頁面中添加多餘的結構。
.clear{
clear: both;
}
複製代碼
經過after僞類,選中父元素的後邊能夠經過after僞類向元素的最後添加一個空白的塊元素,而後對其清除浮動,這樣作和添加一個div的原理同樣,能夠達到一個相同的效果,並且不會在頁面中添加多餘的div,這是咱們最推薦使用的方式,幾乎沒有反作用。
.clearfix:after{
/*添加一個內容*/
content: "";
/*轉換爲一個塊元素*/
display: block;
/*清除兩側的浮動*/
clear: both;
}
複製代碼
.clearfix:before,
.clearfix:after{
content: "";
display: table;
clear: both;
}
.clearfix{
zoom: 1;
}
複製代碼
通過修改後的clearfix是一個多功能的,既能夠解決高度塌陷,又能夠確保父元素和子元素的垂直外邊距不會重疊。子元素和父元素相鄰的垂直外邊距會發生重疊,子元素的外邊距會傳遞給父元素 使用空的table標籤能夠隔離父子元素的外邊距,阻止外邊距的重疊
因爲受到box1浮動的影響,box2總體向上移動了100px
咱們有時但願清除掉其餘元素浮動對當前元素產生的影響,這時可使用
clear能夠用來清除其餘浮動元素對當前元素的影響
可選值:
none,默認值,不清除浮動
left,清除左側浮動元素對當前元素的影響
right,清除右側浮動元素對當前元素的影響
both,清除兩側浮動元素對當前元素的影響清除對他影響最大的那個元素的浮動
定位指的就是將指定的元素擺放到頁面的任意位置 經過定位能夠任意的擺放元素 經過position屬性來設置元素的定位
可選值:
當開啓了元素的定位(position屬性值是一個非static的值)時, 能夠經過left right top bottom四個屬性來設置元素的偏移量
一般偏移量只須要使用兩個就能夠對一個元素進行定位, 通常選擇水平方向的一個偏移量和垂直方向的偏移量來爲一個元素進行定位
當元素的position屬性設置爲relative時,則開啓了元素的相對定位
當position屬性值設置爲absolute時,則開啓了元素的絕對定位
絕對定位:
當元素的position屬性設置fixed時,則開啓了元素的固定定位 固定定位也是一種絕對定位,它的大部分特色都和絕對定位同樣 不一樣的是: 固定定位永遠都會相對於瀏覽器窗口進行定位 固定定位會固定在瀏覽器窗口某個位置,不會隨滾動條滾動IE6不支持固定定位.