今日概要:css
一、僞類選擇器html
二、選擇器優先級python
三、vertical-align屬性css3
四、backgroud屬性瀏覽器
五、邊框border屬性bash
六、display屬性ide
七、padding,margine(見12節css)佈局
八、float半脫離文檔流(見12節css)post
九、clear清除浮動測試
十、postion定位
十一、列表屬性
anchor僞類:專用於控制連接的顯示效果(hover重點)
hover操做標籤必須是懸浮標籤的子元素: .box:hover .div1{}
''' a:link(沒有接觸過的連接),用於定義了連接的常規狀態。 a:hover(鼠標放在連接上的狀態),用於產生視覺效果。 a:visited(訪問過的連接),用於閱讀文章,能清楚的判斷已經訪問過的連接。 a:active(在連接上按下鼠標時的狀態),用於表現鼠標按下時的連接狀態。 僞類選擇器 : 僞類指的是標籤的不一樣狀態: a ==> 點過狀態 沒有點過的狀態 鼠標懸浮狀態 激活狀態 a:link {color: #FF0000} /* 未訪問的連接 */ a:visited {color: #00FF00} /* 已訪問的連接 */ a:hover {color: #FF00FF} /* 鼠標移動到連接上 */ a:active {color: #0000FF} /* 選定的連接 */ 格式: 標籤:僞類名稱{ css代碼; } '''
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> /*鼠標放在的狀態*/ a:hover{ color: red; } /*沒有接觸過的連接*/ a:link{ color: gold; } /*在連接上按下鼠標時的狀態*/ a:active{ color: greenyellow; } /*訪問過的連接*/ a:visited{ color: deeppink; } </style> </head> <body> <a href="#" >超連接</a> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .d1{ border: 1px solid red; width: 500px; height: 500px; } .d2{ background-color: greenyellow; width: 200px; height: 500px; } .d3{ background-color: red; width: 200px; height: 150px; display: none; } .d4{ background-color: #9a9a9a; width: 200px; height: 150px; } .d2:hover .d3{ display: block; } </style> </head> <body> <div class="d1"> <div class="d2"> <div class="d3">123</div> <div class="d4">456</div> </div> </div> </body> </html>
before after僞類 : 測試階段經過css在一個標籤前或者後面添加一段內容
:before p:before 在每一個<p>元素以前插入內容 :after p:after 在每一個<p>元素以後插入內容 例:p:before{content:"hello";color:red;display: block;}
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> #c1:after{ content: "hello"; display: block; color: red; } </style> </head> <body> <div id="c1"> <p>PPP</p> </div> </body> </html>
效果:
css的繼承:
繼承是CSS的一個主要特徵,它是依賴於祖先-後代的關係的。繼承是一種機制,它容許樣式不只能夠應用於某個特定的元素,還能夠應用於它的後代。例如一個BODY定義了的顏色值也會應用到段落的文本中。
body{color:red;} <p>helloyuan</p>
這段文字都繼承了由body {color:red;}樣式定義的顏色。然而CSS繼承性的權重是很是低的,是比普通元素的權重還要低的0。
p{color:green}
發現只須要給加個顏色值就能覆蓋掉它繼承的樣式顏色。因而可知:任何顯示申明的規則均可以覆蓋其繼承樣式。
此外,繼承是CSS重要的一部分,咱們甚至不用去考慮它爲何可以這樣,但CSS繼承也是有限制的。有一些屬性不能被繼承,如:border, margin, padding, background等。
css的優先級:
所謂CSS優先級,便是指CSS樣式在瀏覽器中被解析的前後順序。
樣式表中的特殊性描述了不一樣規則的相對權重,它的基本規則是:
1 內聯樣式表的權值最高 style=""------------1000;
2 統計選擇符中的ID屬性個數。 #id --------------100
3 統計選擇符中的CLASS屬性個數。 .class -------------10
4 統計選擇符中的HTML標籤名個數。 p ---------------1
按這些規則將數字符串逐位相加,就獲得最終的權重,而後在比較取捨時按照從左到右的順序逐位比較。
1、文內的樣式優先級爲1,0,0,0,因此始終高於外部定義。 2、有!important聲明的規則高於一切。 3、若是!important聲明衝突,則比較優先權。 4、若是優先權同樣,則按照在源碼中出現的順序決定,後來者居上。 5、由繼承而獲得的樣式沒有specificity的計算,它低於一切其它規則(好比全局選擇符*定義的規則)。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> /* 標籤選擇器:1; class選擇器:10; id選擇器:100; 內嵌:1000 */ p{ color: red; } #id1{ color: green; } .p1{ color: yellow; } #d2{ color: red; } .outer .div2{ color: blue; } .outer .div2 p{ color: darkgreen; } .div2 .p1{ color: yellow; } .new{ color: darkolivegreen; } body{ color: gold; } /*相同優先級按順序*/ .div2 .p1{ color: green; } .outer .p1{ color: red; } .new p{ color: green!important; } </style> </head> <body> <p class="p1" id="id1">I am P</p> <div class="outer"> <div class="div1" id="d1">DIV1</div> <div class="div2" id="d2"> <p class="p1" id="p1">PPP</p> </div> </div> <div class="new"> newDIV <p style="color: aqua">new P</p> </div> </body> </html>
vertical-align是垂直方向移動,當水平居中以後,能夠用vertical-align進行垂直方向上的微調
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> a{ text-decoration:none ; } /*負數向上調,正數向下調*/ a img{ vertical-align: -5px; } </style> </head> <body> <a href=""> <img src="http://dig.chouti.com/images/logo.png" alt=""> <span>XYZW3</span> </a> </body> </html>
top 對內容進行上對齊
middle 對內容進行居中對齊(默認)
bottom 對內容進行下對齊
baseline 與基線對齊
屬性介紹:
background-color: cornflowerblue background-image: url('1.jpg'); background-repeat: no-repeat;(repeat:平鋪滿) background-position: right top(20px 20px);
放一塊兒寫,在css3中不強調順序
background: url("meinv.png") no-repeat 100px 200px;
屬性介紹:
border-style: solid; 線的格式,solid爲實線,dashed爲虛線 border-color: chartreuse; 線的顏色 border-width: 20px; 線的寬度
簡寫:
簡寫:border: 30px rebeccapurple solid;
邊框-單獨設置邊框
border-top-style:dotted; border-right-style:solid; border-bottom-style:dotted; border-left-style:none;
none
block
inline
none屬性(隱藏某個元素的屬性)
p{display:none;}
注意與visibility:hidden的區別:
visibility:hidden能夠隱藏某個元素,但隱藏的元素仍需佔用與未隱藏以前同樣的空間。也就是說,該元素雖然被隱藏了,但仍然會影響佈局。
display:none能夠隱藏某個元素,且隱藏的元素不會佔用任何空間。也就是說,該元素不但被隱藏了,並且該元素本來佔用的空間也會從頁面佈局中消失。
block(內聯標籤設置爲塊級標籤)
span {display:block;}
注意:一個內聯元素設置爲display:block是不容許有它內部的嵌套塊元素。
inline(塊級標籤設置爲內聯標籤)
li {display:inline;}
inline-block
display:inline-block可作列表佈局,其中的相似於圖片間的間隙小bug能夠經過以下設置解決:
內聯標籤設置display=inline-block就具備塊標籤的屬性(設置長寬),同時具有內聯標籤(不獨佔一行)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .c1{ width: 200px; height: 200px; background-color: wheat; /*display: none;*/ } .c2{ width: 200px; height: 200px; background-color: green; /*display: none;*/ } .block1{ display: inline; background-color: gold; } .inline1{ display: block; background-color: aqua; } .head{ width: 100%; height: 40px; background-color: gold; } .head a{ width: 40px; height: 30px; background-color: red; display: inline-block; } .head span{ width: 40px; height: 30px; background-color: green; display: inline-block; margin-left: -8px; } </style> </head> <body> <div class="c1"></div> <div class="c2"></div> <div class="block1">BLOCK</div> <span class="inline1">INLINE</span> <span>111</span> <div class="head"> <a href="">333</a> <span>111</span> <span>222</span> </div> </body> </html>
一、static
static 默認值,無定位,不能看成絕對定位的參照物,而且設置標籤對象的left、top等值是不起做用的的。
二、position: relative/absolute
relative: 相對定位。
相對定位是相對於該元素在文檔流中的原始位置,即以本身原始位置爲參照物。有趣的是,即便設定了元素的相對定位以及偏移值,元素還佔有着原來的位置,即佔據文檔流空間。對象遵循正常文檔流,但將依據top,right,bottom,left等屬性在正常文檔流中偏移位置。而其層疊經過z-index屬性定義。
注意:position:relative的一個主要用法:方便絕對定位元素找到參照物。
定義:設置爲絕對定位的元素框從文檔流徹底刪除,並相對於最近的已定位祖先元素定位,若是元素沒有已定位的祖先元素,那麼它的位置相對於最初的包含塊(即body元素)。元素原先在正常文檔流中所佔的空間會關閉,就好像該元素原來不存在同樣。元素定位後生成一個塊級框,而不論原來它在正常流中生成何種類型的框。
重點:若是父級設置了position屬性,例如position:relative;,那麼子元素就會以父級的左上角爲原始點進行定位。這樣能很好的解決自適應網站的標籤偏離問題,即父級爲自適應的,那我子元素就設置position:absolute;父元素設置position:relative;,而後Top、Right、Bottom、Left用百分比寬度表示。
另外,對象脫離正常文檔流,使用top,right,bottom,left等屬性進行絕對定位。而其層疊經過z-index屬性定義。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> *{ margin: 0; } .item1{ width: 100px; height: 100px; background-color: wheat; } .item2{ width: 100px; height: 100px; background-color: green; /*position: relative;*/ position: absolute; top: 100px; left: 100px; } .item3{ width: 100px; height: 100px; background-color: red; } .box{ border: red 1px solid; /*position: relative;*/ } </style> </head> <body> <div class="item1"></div> <div class="box"> <div class="item2"></div> <div class="item3"></div> </div> </body> </html>
總結:參照物用相對定位,子元素用絕對定位,而且保證相對定位參照物不會偏移便可。
三、position: fixed
fixed:對象脫離正常文檔流,使用top,right,bottom,left等屬性以窗口爲參考點進行定位,當出現滾動條時,對象不會隨着滾動。而其層疊經過z-index屬性 定義。 注意點: 一個元素若設置了 position:absolute | fixed; 則該元素就不能設置float。這是一個常識性的知識點,由於這是兩個不一樣的流,一個是浮動流,另外一個是「定位流」。可是 relative 卻能夠。由於它本來所佔的空間仍然佔據文檔流。
在理論上,被設置爲fixed的元素會被定位於瀏覽器窗口的一個指定座標,不論窗口是否滾動,它都會固定在這個位置。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> *{ margin: 0; } .c1{ background-color: #7cbe56; height: 2000px; width: 100%; } .c2{ width: 150px; height: 100px; text-align: center; line-height: 100px; background-color: #DDDDDD; color: black; position: fixed; bottom: 20px; right: 10px; } </style> </head> <body> <div class="c1"></div> <div class="c2">返回頂部</div> </body> </html>
<!DOCTYPE html> <html> <head> <title>fortest</title> <style> div.parent{ width: 500px; height: 300px; background: #ccc; } div.son{ width: 100%; height: 200px; background: green; } </style> </head> <body> <div class="parent"> <div class="son"></div> </div> </body> </html>
這時,子元素設置爲了父元素width的100%,那麼子元素的寬度也是500px;
可是若是咱們把子元素的width去掉以後,就會發現子元素仍是等於父元素的width。也就是說,對於塊級元素,子元素的寬度默認爲父元素的100%。
當咱們給子元素添加padding和margin時,能夠發現寬度width是父元素的寬度減去子元素的margin值和padding值。
毫無疑問,若是去掉子元素的height,就會發先子元素的高度爲0,故height是不會爲100%的,通常咱們都是經過添加內容(子元素)將父元素撐起來。
(2)父:塊級元素 子:內聯元素
若是內聯元素是不可替換元素(除img,input之外的通常元素),元素是沒有辦法設置寬度的,也就談不上100%的問題了。 即內聯元素必須依靠其內部的內容才能撐開。
若是內聯元素是可替換元素(img,input,自己能夠設置長和寬),無論怎麼設置父元素的寬度和高度,而不設置img的寬和高時,img老是表現爲其原始的寬和高。
<!DOCTYPE html> <html> <head> <title>...</title> <style> div.parent{ width: 500px; height: 300px; background: #ccc; } img{ height: 100px; background: green; } </style> </head> <body> <div class="parent"> <img class="son" src="s1.jpg"></img> </div> </body> </html>
由此咱們能夠發現,雖然沒有設置寬度,可是表如今瀏覽器上爲160px,它並無繼承父元素的100%獲得500px,而是根據既定的高度來等比例縮小寬度。 一樣, 若是隻設置width,那麼height也會等比例改變。 若是咱們把img的width設置爲100%,就能夠發現其寬度這時就和父元素的寬度一致了。而咱們通常的作法時,首先肯定img的父元素的寬度和高度,而後再將img的寬度和高度設置位100%,這樣,圖片就能鋪滿父元素了。
<a style="overflow: hidden;"><img src="mv.png" alt="美女" style="width: 100%;height: 100%;border-radius:50% "></a> 經過子標籤將父標籤內容鋪滿