CSS頁(yè)面布局是web前端開發(fā)的最基本的技能,本文將介紹一些常見的布局方法,涉及到盒子布局,column布局,flex布局等內(nèi)容。本文中,你可以看到一些水平垂直居中的方法,左側(cè)固定寬度,右側(cè)自適應(yīng)的一些方法。如果你有更多關(guān)于布局方面的技巧,歡迎留言交流。一、神奇的居中 經(jīng)常看到有一些面試題問如何實(shí)現(xiàn)水平垂直居中,還要求用多種方法。唉唉唉!下面介紹一下我所知道的實(shí)現(xiàn)居中的方法。(1)父元素relative;子元素absolute,top:50%;left:50%;margin-left:-自己寬度的一半;margin-right:-自己高度的一半。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>水平垂直居中2</title> <style type="text/css"> .container{ width: 100%; height: 500px; background: red; position: relative; } .child{ width: 300px; height: 300px; background: blue; position: absolute; left: 50%; margin-left: -150px; top: 50%; margin-top: -150px; } </style> </head> <body> <div> <div></div> </div> </body> </html>
這種方法需要知道子元素的寬高。
(2)父元素:relative;子元素:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>水平垂直居中3</title> <style type="text/css"> .container{ background: red; width: 100%; height: 500px; position: relative; } .child{ background: blue; width: 300px; height: 300px; position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); } </style> </head> <body> <div> <div></div> </div> </body> </html>
此法跟上面的相似,但是用到了transform,好處是不需要知道子元素的寬高,兼容性方面我查了一下,看著辦吧。
(3)父元素:display: flex;justify-content: center;align-items: center;
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>水平垂直居中1</title> <style type="text/css"> .container{ width: 100%; height: 400px; background: red; display: flex; justify-content: center; align-items: center; } .child{ width: 300px; height: 300px; background: blue; } </style> </head> <body> <div> <div></div> </div> </body> </html>
這種方法看起來(lái)有些高大上,根本不用理會(huì)子元素。
(4)水平居中的方法,父元素:text-align:center
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>水平垂直居中4</title> <style type="text/css"> .container{ background: red; width: 100%; height: 500px; text-align: center; } .child{ background: blue; width: 300px; height: 300px; margin: auto; } </style> </head> <body> <div> <div></div> </div> </body> </html>
如果子元素里的文字不要水平居中的話,那么用此法將遇到不少麻煩。(5)水平居中方法,子元素:margin:0 auto;這個(gè)好說(shuō),不上代碼了好了,關(guān)于居中問題就說(shuō)這么多,如果你還有更好的方法,請(qǐng)告訴我。
二、左側(cè)固定寬度,右側(cè)自適應(yīng)這是一個(gè)比較常見的需求,下面介紹幾種實(shí)現(xiàn)方法。 (1)左邊定寬,左浮動(dòng),右邊不指定寬。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>做固定,右邊自適應(yīng)</title> <style type="text/css"> body{ margin: 0; } .aside{ background: red; width:200px; height: 500px; float: left; } .main { background: blue; height: 500px; } </style> </head> <body> <div> 我是左邊的 </div> <div> 我是主體 我是主體 我是主體 我是主體 我是主體 </div> </body> </html>
做實(shí)驗(yàn)時(shí)無(wú)意發(fā)現(xiàn)了這種方法,意外之喜。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>左側(cè)固定右側(cè)自適應(yīng)</title> <style type="text/css"> .container { padding-left: 200px; width: 100%; position: relative; } .left{ position: absolute; left: 0; right: 0; background: red; height: 500px; width: 200px; } .right{ background: blue; width: 100%; height: 500px; } </style> </head> <body> <div> <div>zuobian</div> <div> 新華社俄羅斯喀山3月23日電(記者 魏良磊)中俄執(zhí)政黨對(duì)話機(jī)制第六次會(huì)議和第五屆中俄政黨論壇23日在俄羅斯喀山舉行。和俄羅斯聯(lián)邦總統(tǒng)普京分別致賀信。 </div> </div> </body> </html>
注意了,absolute是脫離文檔流的。.right的100%是相對(duì)于父容器的內(nèi)容寬度的,不是整個(gè)寬度。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>左邊固定,右邊自適應(yīng)</title> <style type="text/css"> .container{ display: flex; } .left{ width: 200px; height: 500px; background: red; } .right{ background: blue; height: 500px; flex: 1; } </style> </head> <body> <div> <div>zuobian</div> <div> 新華社俄羅斯喀山3月23日電(記者 魏良磊)中俄執(zhí)政黨對(duì)話機(jī)制第六次會(huì)議和第五屆中俄政黨論壇23日在俄羅斯喀山舉行。和俄羅斯聯(lián)邦總統(tǒng)普京分別致賀信。 </div> </div> </body> </html>
彈性盒子很強(qiáng),有木有。但是有的是要加前綴的,哪些要加自己查去,有一次做實(shí)驗(yàn),電腦樣式正確,手機(jī)就是不對(duì),搞了好半天。
(4)父:display:table;左右:display:table-cell;左:定寬。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>左邊固定,右邊自適應(yīng)</title> <style type="text/css"> .container{ display: table; } .left{ width: 200px; height: 500px; background: red; display: table-cell; } .right{ background: blue; height: 500px; display: table-cell; } </style> </head> <body> <div> <div>zuobian</div> <div> 新華社俄羅斯喀山3月23日電(記者 魏良磊)中俄執(zhí)政黨對(duì)話機(jī)制第六次會(huì)議和第五屆中俄政黨論壇23日在俄羅斯喀山舉行。羅斯聯(lián)邦總統(tǒng)普京分別致賀信。 </div> </div> </body> </html>
據(jù)說(shuō)這是一種古老的方法,我咋不知道呢?可能我比較年輕吧!
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com