css基本知識 我們先看一個小例子: 我們可以看到我們在div中加了style,裡面有background-color,height等屬性,這樣就使的原本什麼都沒有的div添加了背景色高度等。 css的編寫 在標簽上設置style屬性:width,height,background....... 寫 ...
css基本知識
我們先看一個小例子:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div style="background-color:#2459a2;height: 48px;">1</div> <div style="background-color:red;">2</div> <div style="background-color:green;">3</div> </body> </html>
我們可以看到我們在div中加了style,裡面有background-color,height等屬性,這樣就使的原本什麼都沒有的div添加了背景色高度等。
css的編寫
- 在標簽上設置style屬性:width,height,background.......
- 寫在head裡面,寫一個<style>標簽中寫樣式:
<head>
<style>
#i1{
background-color:red;
height:48px
}
</style>
</head>
- 單獨創建一個.css格式的文件,在.css文件中寫入樣式,在html文件中的head標簽中引入該.css文件:
<link rel="stylesheet" href="common.css" />
css中的註釋:/**/
選擇器使用css
1.標簽選擇器:
div{background-color:red; }
<div > </div>
2.class選擇器:
.bd{background-color:red; }
<div class='bd'> </div>
3.id選擇器:
#idselect{background-color:red; }
<div id='idselect' > </div>
4.關聯選擇器(空格)
#idselect p{background-color:red; }
<div id='idselect' > <p> </p> </div>
5.組合選擇器:(逗號)
input,div,p{ background-color:red; }
6.屬性選擇器:
input[type='text']{ width:100px; height:200px; }
css中的優先順序
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .c1{ background-color: red; color: white; } .c2{ font-size: 58px; #color:black; } </style> </head> <body> <div class="c1 c2">asdfas</div> </body> </html>
上面我們設置了一個div有兩個class名稱,然後先設置了一個color:white,顯示的效果如下:
下麵我們在.c2的css中把color:black的註釋去掉,顯示的效果如下:
我們再在<div>標簽中添加:style="color:blue",那麼顯示的效果如下:
這就涉及到了css樣式的優先順序:(就近原則)
style--->c2----c1(這裡c2,c1的優先順序是看在css中誰的樣式寫在下麵,如果上面head標簽的style標簽中兩個位置互換,那麼就是c1的優先順序大於c2)
常用的css中的樣式
1.邊框
預設4個邊都加上:
border:1px solid/dotted red (1像素,實線/虛線,紅色):
只加左邊和右邊:
border-left-right:1px solid/dotted red
2.height,width,line-height,color,font-size,font-weight:
height,width:高度,寬度
height:48px;width:200px or height:48px;width:80%(可以用具體的值也可以用百分比)
text-align:center,水平方向居中
line-height行高:
如果我們想要把文字垂直居中就可以用這個屬性(行高像素==height像素),即height:48px,line-height:48px,則字體就居中了。
font-size字體大小:font-size:12px;
font-weight字體的樣式:100-900,bold(加粗),bolder(更粗),inherit,initial,lighter,normal,unset
color字體顏色;
3.float屬性:浮動
如果我們寫了2個div,那這2個div就會每個各占一行,如果我們想讓一個div在左邊占20%,一個div在右邊80%,想要兩個div在一行對接起來,那就需要用到float
首先看看我們不用float的效果:
<div style="background-color: red;width:20%;">div1</div> <div style="background-color: green;width:80%">div2</div>
如果我們讓這兩個div都向左浮動:
<div style="background-color: red;width:20%;float:left;">div1</div> <div style="background-color: green;width:80%;float:left">div2</div>
兩個就重合在一起,並且一個站20%,一個占80%
如果我改成div1占20%往左浮動,div2占60%往右浮動:那麼中間就會空出20%
<div style="background-color: red;width:20%;float:left;">div1</div> <div style="background-color: green;width:60%;float:right">div2</div>
現在我們寫一個盒子,裡面有一些div:
<div style="width: 300px; border: 1px solid red;"> <div style="width:96px;height:30px;border:1px solid green;float:left"></div> <div style="width:96px;height:30px;border:1px solid green;float:left"></div> <div style="width:96px;height:30px;border:1px solid green;float:left"></div> <div style="width:96px;height:30px;border:1px solid green;float:left"></div> <div style="width:96px;height:30px;border:1px solid green;float:left"></div> <div style="width:96px;height:30px;border:1px solid green;float:left"></div> <div style="width:96px;height:30px;border:1px solid green;float:left"></div> </div>
我們可以發現用了float我們就可以做到類似很多前端頁面一塊一塊的樣式,我們最外面的div的高度是隨著裡面小div不斷的增多而增多的。
但是有一個問題,我們可以看到上面有一個紅色的線,他是外層div的邊框,為什麼父div的邊框沒有了呢,只有一個了呢?這個就是使用float之後會產生的問題。
解決方法:
在父div中的最後加上這麼一段:<div style="clear:both;"></div>
這樣,父div的邊框就顯現了出來
4.display
首先我們看一段:
<div style="background-color: red;">div1</div> <span style="background-color: green;">span1</span>
現在我們想要讓塊級標簽變成一個行內標簽:display:inline
<div style="background-color: red;display:inline;">div1</div> <span style="background-color: green;">span1</span>
我們想要讓span這個行內標簽變成塊級標簽:display:block;
********
行內標簽:無法設置高度,寬度,padding,margin
塊級標簽:可以設置高度,寬度,padding,margin
<span style="background-color: red;width:200px;height:48px;">span1</span> <a style="background-color: red;">chaolianjei</a>
我們可以發現一點效果都沒有
display:inline-block;
具有inline,預設自己有多少占多少;
具有block,可以設置高度,寬度,padding,margin
<span style="background-color: red;width:200px;height:48px;display: inline-block;">span1</span> <a style="background-color: red;">chaolianjei</a>
加了display:inline-block;之後,span就可以設置寬高了:
display:none;讓標簽消失:
5.padding margin(0 auto)內邊距,外邊距:
margin:
margin:0 auto;上下為0,左右居中
6.position:
- fixed---->固定在頁面的某個位置,滾輪滾動,位置也不會變
- absolute---->絕對定位,單用它,滾輪滾動時,位置會改變,要和relative一起使用
- relative
fixed:
我們先看一串代碼:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div style="width: 50px;height:50px;background-color: black;color:white">返回頂部</div> <div style="height: 5000px;background-color: #dddddd"></div> </body> </html>
現在我們希望的是 “返回頂部” 這個div 固定在瀏覽器的右下角
<div style="width: 50px;height:50px;background-color: black;color:white; position:fixed;bottom:20px;right:20px;" >返回頂部</div>
我在style中添加了
position:fixed;bottom:20px;right:20px;
這樣我們就把那個div固定在右下角了。
我們再看一個例子:有的網站,它的菜單欄是一直在瀏覽器的上面的,即使是滾動條滾動,頭部的菜單欄也不會變,這個我們應該怎麼做呢:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .pg-header{ height:48px; background-color: black; color: #dddddd; position:fixed; top:0; right:0; left: 0; } .pg-body{ background-color: #dddddd; height:5000px; margin-top:50px ; } </style> </head> <body> <div class="pg-header">頭部</div> <div class="pg-body">內容</div> </body> </html>
其實只需要加上上面色的代碼就可以了,下麵的margin-top是為了讓pg-body的能夠往下來一點,顯示出全部內容
relative+absolute:
我現在有3個div:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div style="position: relative;height:200px;width:400px;border: 1px solid red;margin:0 auto;text-align: center;">div1</div> <div style="position: relative;height:200px;width:400px;border: 1px solid red;margin:0 auto;text-align: center;">div2</div> <div style="position: relative;height:200px;width:400px;border: 1px solid red;margin:0 auto;text-align: center;">div3</div> </body> </html>
我想要在div1的左下角放一個黑色的小方框, div2的右下角放一個黑色的小方框,div3的左上角放一個黑色的小方框,應該怎麼做 :
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div style="position: relative;height:200px;width:400px;border: 1px solid red;margin:0 auto;text-align: center;"> div1 <div style="width:50px;height:50px;background-color: black;position:absolute;left:0;bottom:0"></div> </div> <div style="position: relative;height:200px;width:400px;border: 1px solid red;margin:0 auto;text-align: center;"> div2 <div style="width:50px;height:50px;background-color: black;position:absolute;right:0;bottom:0"></div> </div> <div style="position: relative;height:200px;width:400px;border: 1px solid red;margin:0 auto;text-align: center;"> div3 <div style="width:50px;height:50px;background-color: black;position:absolute;left:0;top:0"></div> </div> </body> </html>
只要relative 和 absolute 相配合,然後設置top,left,right,bottom的值就可以了,這個值可以是正數也可以是負數
還有一個場景:我們點一個按鈕,然後就會跳出一個小視窗,這個時候視窗以外的東西就沒有辦法進行操作了,如:我點擊了大模態框,之後跳出了large model,但是灰色的地方是沒有辦法進行操作的
這就是一個典型的三層模式:本身文本是一層,灰色的遮罩是一層,彈出的框是一層。那我們怎麼實現這個呢?
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div style="width:400px;height:100px;background-color: white; position: fixed;top:50%;left: 50%; margin-top: -50px;margin-left:-200px; z-index:10;"></div> <div style="position: fixed;background-color: black;top:0;bottom:0;right:0;left: 0; opacity: 0.6;z-index: 9;"></div> <div style="height:5000px;background-color: green;"></div> </body> </html>
效果如圖所示:下麵有一個green的div,然後有一個black的div,只是設置了透明度,最上面有一個居中的白色div
分析:首先我們先說兩個新的屬性:
opcity:0.6;設置透明度,值為0-1
z-index:9,設置優先順序,值越高優先順序越大
我們先實現兩個div,一個是綠色的,一個是黑色的。這個很簡單。下麵要再加上第三層。最關鍵的就是這上面兩個屬性,如果透明屬性沒有的話,在做兩層的時候,黑色的就會把綠色徹底覆蓋住,如果沒有優先順序屬性的話,那麼在做第三個div的時候就會不知道誰覆蓋了誰。
這裡我們還要記錄的是居中方法:
position: fixed;top:50%;left: 50%;
margin-top: -50px;margin-left:-200px;
設置50%,然後用margin返回寬高的一半,這樣就能夠讓一個div居中顯示
7.overflow
我們設置了一個div的寬度和高度,現在想要在這個div中放入一個圖片,那圖片有自己的高度和寬度。如果直接發放進去就會超出div的範圍顯示,那我們怎麼辦呢?
在style中加入overflow屬性:
- hidden:超出的部分隱藏
- auto:超出的部分會給滾動條
8.hover
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .pg-header{ position: fixed; top:0; right:0; left:0; height:48px; background-color: #2459a2; line-height:48px; } .pg-body{ margin-top:50px; } .w{ width:980px; margin:0 auto; } .pg-header .menu{ display: inline-block; padding:0 10px; color:white; } /*當滑鼠移動到當前標簽的時候,以下css屬性才會生效*/ .pg-header .menu:hover{ background-color: blue; } </style> </head> <body> <div class="pg-header"> <div class="w"> <a class="logo">logo</a> <a class="menu">全部</a> <a class="menu">42區</a> <a class="menu">段子</a> <a class="menu">1024</a> </div> </div> <div class="pg-body"> <div class="w"></div> </div> </body> </html>
hover當滑鼠移動到超鏈接的時候,就會對hover的css里的屬性生效
9.background
background-image:url('image/4.jpg'):背景是一個圖片,如果這個div比圖片的尺寸還要大的話,圖片就會一直重覆著放
應用場景:漸變色的背景,我們只需要一個很窄的圖片,就可以利用這個屬性,讓整個背景都是這個漸變色的圖片
background-repeat:no-repeat/repeat-x/repeat-y:改屬性設置圖片是否要重覆,水平重覆還是垂直重覆
background-position:10px 10px 選取一張圖上的某一個位置進行顯示
應用場景:網站有的時候用一張圖上存儲了很多的圖標,要用哪個圖標就可以選哪個坐標
頁面佈局
一、主站佈局:
<div class="pg-header"> <div style="width:980px;margin:0 auto;"> 內容自動居中 </div> </div> <div class="pg-content"></div> <div class="pg-footer"></div>
二、後臺管理佈局
同樣都是三個部分,頭部,中間內容,和尾部:
我們先看看中間的變化:
一類是中間內容的菜單和內容都不動,右邊內容多的時候出現滾動條
我們用position:fixed做的話應該怎麼做呢:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> body{ margin:0 auto; } .left{ float:left; } .right{ float:right; } .pg-header{ height:48px; background-color: #2459a2; color:white; } .pg-content .menu{ position: fixed; top:48px; left:0; bottom:0; width:200px; background-color: #dddddd; } .pg-content .content{ position: fixed; top:48px; bottom: 0; left:200px; right:0; background-color:purple; overflow: auto; } </style> </head> <body> <div class="pg-header"></div