簡單的一個頁面佈局,頭部、左側菜單欄,右側內容,頭部和菜單欄固定位置,內容部分若是很長就會出現滾動條css
兩種方法能實現,其實兩種差異只有一個屬性不同。html
1.1 使用position:fixedweb
1.先定義三個div標籤瀏覽器
<body> <div class="pg_header"></div> <div class="pg_content"></div> <div class="pg_footer"></div> </body>
2.設定頭部樣式,高48px,背景色藍色 佈局
<style> body{ margin: 0 auto; } .pg_header{ height: 48px; background-color: #2459a2; color: white; } </style>
頂部出現一個藍色長條網站
3.在pg_content裏劃分出兩個區域,一個左側菜單欄,一個右側內容區google
通常會要求左側菜單欄能固定位置,一直顯示在左側,高度就是整個瀏覽器高度 spa
# 先增長兩個div標籤 <div class="pg_content"> <div class="menu"></div> <div class="content"></div> </div> # 爲menu設置樣式 .pg_content .menu{ position: fixed; top: 50px; left: 0; bottom: 0; width: 200px; background-color: #dddddd; }
左側增長一個灰色長條:設計
4.一樣咱們想要右側的內容區也能像菜單欄同樣,固定位置、並佔據整個右側位置。而且在內容過長時,會出現滾動條(overflow實現) htm
.pg_content .content{ position: fixed; top: 50px; right: 0; bottom: 0; left: 202px; background-color: darkturquoise; overflow: auto; }
當內容很長時,會出現滾動條:
1.2 使用position:absolute
第二種方法相比第一種方法,只需將position:fixed改成position:absolute
再爲content增長一個最小寬度的屬性,當瀏覽器縮小時,小於必定寬度是,就會出現橫滾動條,能夠防止頁面內容佈局錯亂,可是這樣header也須要修改一下,加了最小寬度之後,header在有橫滾動條時寬度沒法滿屏
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Page_layout2</title> <style> body{ margin: 0 auto; } .pg_header{ position: fixed; top: 0; width: 100%; height: 48px; background-color: #2459a2; color: white; } .pg_content .menu{ position: absolute; top: 50px; left: 0; bottom: 0; width: 200px; background-color: #dddddd; } .pg_content .content{ position: absolute; top: 50px; right: 0; bottom: 0; left: 202px; background-color: darkturquoise; overflow: auto; min-width: 980px; } </style> </head> <body> <div class="pg_header"></div> <div class="pg_content"> <div class="menu"></div> <div class="content"> </div> </div> <div class="pg_footer"></div> </body> </html>
總體效果和上一個差很少:
2.1 頭部左側增長logo
(1)首先定義兩個常常用到的float css樣式
.left{ float: left; } .right{ float: right; }
(2)在header下定義一個div
# 定義div <div class="pg_header"> <div class="logo left"> <a href="https://www.google.com" target="_blank"> <img src="images/logo.png"> </a> </div> </div> # css樣式 .pg_header .logo{ height: 48px; width: 200px; text-align: center; color: white; } .pg_header .logo a img{ height: 48px; width: 50px; }
增長了logo:
2.2 header右側增長登入信息
(1)頭像
右側我的信息其實只要一個頭像,鼠標移到頭像上時,會有信息框出現
# 在header中定義一個div標籤 <div class="pg_header"> <div class="person_info right"> <img src="images/head.jpg"> </div> </div> # 添加person_info的css樣式 .pg_header .person_info{ position: relative; height: 48px; width: 160px; } .pg_header .person_info img{ border: 0; height: 48px; width: 50px; /*使用border-radius能夠定義邊框的圓角程度*/ border-radius: 50%; }
出現頭像:
(2)增長一個div,用於顯示信息和操做,其位置相對於peron_info固定
# 在person_info下增長一個div <div class="info"> <a>個人信息</a> <a>註銷</a> <a>修改密碼</a> <a>修改頭像</a> </div> # 爲其設置css樣式 .pg_header .person_info .info{ position: absolute; width: 150px; background-color: cornflowerblue; top: 50px; z-index: 20; } .pg_header .person_info .info a{ display: block; color: white; }
這樣完成後仍是不行,由於看不到這個標籤,咱們須要對pg_header也增長一個z-index屬性,設置值爲10
(3)默認狀況下是看不到info這個標籤的,因此還須要對info的css樣式增長display:none屬性
.pg_header .person_info .info{ position: absolute; width: 150px; background-color: cornflowerblue; top: 50px; z-index: 20; display: none; }
(4)顯示info標籤
增長了display:none後,信息標籤默認看不到,如今的需求是鼠標移到person_info這個div標籤時,info標籤顯示
# 增長一個css樣式就能實現 .pg_header .person_info:hover .info{ display: block; } # hover就是爲元素增長樣式的,上面的意思就是當鼠標移到person_info這個標籤時,就將info標籤的display設置爲block
鼠標移到頭像出就顯示信息:
2.3 插入圖標
頭部信息中一般還有郵件和提醒服務存在,也就是插入一下圖標,登入後提示一下信息須要處理。
須要的圖標能夠在https://fontawesome.com中去下載,並放到本身的項目中。
(1)尋找圖標
在下載圖標的網站上尋找須要的圖標
點擊相應的圖標,拷貝
(2)增長郵件和鈴鐺的圖標
# 引用css樣式 <link rel="stylesheet" href="fontawesome-free-5.1.0-web/css/all.css"> # 在pg_header下增長兩個div標籤(person_info div以後) <div class="icons right"> <i class="far fa-bell"></i> </div> <div class="icons right"> <i class="far fa-envelope"></i> </div> # 增長css樣式 .pg_header .icons{ line-height: 48px; padding: 0 20px 0 5px; } .pg_header .icons:hover{ background-color: cornflowerblue; }
效果:
(3)增長消息數量顯示
若是有3封郵件,就在郵件旁邊顯示數字3
# 郵件圖標的div下增長一個span標籤 <div class="icons right"> <i class="far fa-envelope"></i> <span>3</span> </div> # 爲span 添加css樣式 .pg_header .icons span{ padding: 1px 5px; line-height: 1px; border-radius: 50%; background-color: red; font-size: 12px; }
效果:
完整html:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Page_layout2</title> <link rel="stylesheet" href="fontawesome-free-5.1.0-web/css/all.css"> <style> body{ margin: 0 auto; } .left{ float: left; } .right{ float: right; } .pg_header{ position: fixed; top: 0; width: 100%; height: 48px; background-color: #2459a2; color: white; z-index: 10; } .pg_header .logo{ height: 48px; width: 200px; text-align: center; color: white; } .pg_header .logo a img{ height: 48px; width: 50px; } .pg_header .person_info{ position: relative; height: 48px; width: 160px; /*text-align: center;*/ } .pg_header .person_info img{ border: 0; height: 48px; width: 50px; /*使用border-radius能夠定義邊框的圓角程度*/ border-radius: 50%; } .pg_header .person_info .info{ position: absolute; width: 150px; background-color: cornflowerblue; top: 50px; z-index: 20; display: none; } .pg_header .person_info .info a{ display: block; color: white; } .pg_header .person_info:hover .info{ display: block; } .pg_header .icons{ line-height: 48px; padding: 0 20px 0 5px; } .pg_header .icons:hover{ background-color: cornflowerblue; } .pg_header .icons span{ padding: 1px 5px; line-height: 1px; border-radius: 50%; background-color: red; font-size: 12px; } .pg_content .menu{ position: absolute; top: 50px; left: 0; bottom: 0; width: 200px; background-color: #dddddd; } .pg_content .content{ position: absolute; top: 50px; right: 0; bottom: 0; left: 202px; background-color: darkturquoise; overflow: auto; min-width: 980px; z-index: 8; } </style> </head> <body> <div class="pg_header"> <div class="logo left"> <a href="https://www.google.com" target="_blank"> <img src="images/logo.png"> </a> </div> <div class="person_info right"> <img src="images/head.jpg"> <div class="info"> <a>個人信息</a> <a>註銷</a> <a>修改密碼</a> <a>修改頭像</a> </div> </div> <div class="icons right"> <i class="far fa-bell"></i> </div> <div class="icons right"> <i class="far fa-envelope"></i> <span>3</span> </div> </div> <div class="pg_content"> <div class="menu"></div> <div class="content"> </div> </div> <div class="pg_footer"></div> </body> </html>