一升酣、示例
1叽唱、主頁
2狸膏、博客詳情頁
3雨效、在線地址
在線地址:入口
Addition:這里使用github-page將自己的靜態(tài)項目免費部署到線上迅涮。
如果你只是做一些簡單的靜態(tài)項目做展示,付出這么大的時間和經(jīng)濟成本去專門購買一臺云服務(wù)器顯然是得不償失的徽龟。github提供了github-page讓用戶可以免費部署自己的靜態(tài)站點叮姑。更多參考:github-page
在本項目的靜態(tài)站點部署時與其他的代碼倉庫,提交同步?jīng)]有太大的區(qū)別(言外之意:還是有點不同的):
第一點:需要將項目目錄名設(shè)置為 ”github用戶名.github.io”
第二點:作為一個靜態(tài)博客站點据悔,需要設(shè)置一個index.html或者default.html传透,作為默認的站點首頁。
Explanation:既然想利用免費的github-page就要根據(jù)別人的規(guī)則极颓。
解釋一:一旦將你的項目名稱設(shè)置為 ”github用戶名.github.io” 之后朱盐,那么github就會自動為你根據(jù)你的醒目名稱轉(zhuǎn)換分配一個域名,也就是“github用戶名.github.io”菠隆,比如該靜態(tài)站點的地址:https://weilanhanf.github.io/兵琳。
解釋二:通常我們在訪問一個url的時候狂秘,如果只有web服務(wù)器的域名,省略了文件名的形式躯肌,比如 “https://weilanhanf.github.io/” 者春,那么服務(wù)器怎么知道要訪問那個文件呢?這個url是以/結(jié)尾的清女,那么說明他就要訪問一個名叫“/”的目錄碧查,由于省略掉了文件名,就 直接訪問index.html或者default.html這樣的文件了校仑,這個設(shè)置根據(jù)服務(wù)器的不同而不同忠售,大多數(shù)情況是這樣。那么下面呢迄沫? ”https://weilanhanf.github.io” 稻扬,直接省略掉“/”,這種寫法也是允許的羊瘩,當(dāng)沒有路徑名的時候泰佳,就代表訪問根目錄下事先設(shè)置的默認文件。
Problems:unsolved
我在使用github-page搭建靜態(tài)站點的時候尘吗,出現(xiàn)小圖標(biāo)不顯示的問題逝她。可能是服務(wù)器沒配置的原因吧(-_-!!!)睬捶,還望大家?guī)兔鉀Q黔宛。
上次阿里云上部署Django項目的時候,后臺xadmin(bootstrap)管理系統(tǒng)擒贸,也有類似小圖標(biāo)的問題臀晃,修改nginx配置文件之后,問題解決介劫。參考鏈接:入口
廢話說多了徽惋,下面步入正題。
4座韵、響應(yīng)后首頁
在點擊menu菜單之后险绘,導(dǎo)航欄垂直排列顯示
二、項目目錄結(jié)構(gòu)
目錄簡介:
index.html:首頁
blog.html:博客詳情頁
img:圖片存儲目錄
css/bootstrap.min.css:目錄下的樣式表文件 bootstrap.min.css 誉碴,里面定義了大量的 CSS 規(guī)則
css/main.css:自定義css樣式宦棺,覆蓋bootstrap源文件
三、引入文件
Bootstrap 是一個前端開發(fā)框架翔烁。其實說白了就是一個樣式表文件(bootstrap.min.css)和一個 javascript 文件(bootstrap.min.js)渺氧,簡單的博客頁面,未使用JavaScript插件蹬屹,在頁面里把它們引入進來后侣背,就可以直接使用里面的 CSS 規(guī)則和各種組件了白华。
這里采用本地引入,也可以使用遠程CDN引入贩耐,有節(jié)省本地網(wǎng)絡(luò)資源的作用弧腥。
BootCDN:鏈接
建立文件,以及引入樣式表和自定義樣式表文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="./css/bootstrap.min.css">
<link rel="stylesheet" href="./css/main.css">
</head>
<body>
</body>
</html>
attention
注意樣式表文件的前后順序潮太,如果不對管搪,會導(dǎo)致頁面無法正常運行。
先引入 bootstrap.min.css (Bootstrap的樣式表文件)
然后引入自己寫的 css 文件(main.css)
這樣才能起到自定義樣式覆蓋bootsrap樣式的作用铡买。
addition
另外如果在前端中需要引入大量javaScirpt文件的時候更鲁,一般將js文件置于html文件的尾部,這樣做的目的是:
在網(wǎng)絡(luò)不暢的時候會先加載出頁面的主體結(jié)構(gòu)奇钞,樣式布局澡为,這樣會給用戶一個頁面的大概感受,而js文件在整體頁面加載出來之后才會加載景埃,使用戶瀏覽此頁面的體驗盡可能最好媒至。
四、布局結(jié)構(gòu)
布局分為幾大部分:
導(dǎo)航欄谷徙,左側(cè)菜單欄拒啰,中間主體博客列表,右側(cè)推薦位完慧,頁尾谋旦。
五、導(dǎo)航欄
1骗随、作用
導(dǎo)航條位于頁面最頂部蛤织,提供整個網(wǎng)站所有頁面的鏈接
2、自定義樣式
在鼠標(biāo)懸停的時候鸿染,導(dǎo)航欄列表的選項,有背景色樣式乞巧,為ul列表下的列表項添加navbar-list屬性涨椒,并在main.css中自定義樣式
.navbar-list li:hover{
color: #555;
background-color: #e7e7e7;
}
在鼠標(biāo)點擊頁面跳轉(zhuǎn)登錄和注冊頁的時候,有背景色樣式绽媒,為ul列表下的列表項添加navbar-right屬性蚕冬,并在main.css中自定義樣式
.navbar-right li:active{
color: #555;
background-color: #e7e7e7;
}
3、代碼
<div class="navbar navbar-default">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="index.html">My Blog</a>
</div>
<div class="col-sm-offset-2">
<ul class="nav navbar-nav navbar-list">
<li><a href="#">全部分類</a></li>
<li><a href="#">語言</a></li>
<li><a href="#">數(shù)據(jù)結(jié)構(gòu)</a></li>
<li><a href="#">網(wǎng)絡(luò)</a></li>
<li><a href="#">操作系統(tǒng)</a></li>
<li><a href="#">算法</a></li>
<li><a href="#">實戰(zhàn)</a></li>
</ul>
</div>
<ul class="nav navbar-nav navbar-right">
<li><a href="#">登陸</a></li>
<li><a href="#">注冊</a></li>
</ul>
</div>
</div>
addition:這里使用默認的導(dǎo)航欄樣式nav-default是辕,導(dǎo)航欄內(nèi)容包含在container中囤热,nav-header中為頁面的logo或者頁面的名稱。為了滿足強迫癥获三,使導(dǎo)航欄菜單列表與頁面博客列表對齊旁蔼,向右推進兩個柵格col-sm-offset-2锨苏。
4、效果示例
六棺聊、左側(cè)菜單
1伞租、前言:柵格結(jié)構(gòu)
如果是自己寫 CSS ,實現(xiàn)這個均等排列的效果限佩?例如下面通過設(shè)置固定寬度/百分比來處理:
.item { float:left, width: 300px; /*或者 width: 33%*/ }
其實不用關(guān)心每一份的寬度是多少像素/百分比葵诈,只關(guān)心能不能自動地平均劃分成多少份,也就是說頁面的劃分是否是成比例的祟同, Bootstrap 的柵格系統(tǒng)布局就是為了實現(xiàn)自動計算每一份的寬度而誕生的作喘。柵格可以理解為一個安全門,它的總長度可以拉長晕城,可以縮短徊都,但是總的間隔數(shù)量是不變的,并且所有間隔的寬度都一樣广辰。** Bootstrap 的柵格系統(tǒng)規(guī)定了每個頁面的寬度被平均劃分為 12 等份**暇矫,不管整個頁面的寬度是 1000像素,還是500像素择吊,都會自動計算每一份(1/12)的寬度是多少李根。通過給柵格布局內(nèi)部的元素指定 class 為 col-md-份數(shù) ,來告訴它的寬度占據(jù)這12份里面的幾份几睛。
更多請參考:Bootstrap中文文檔:柵格結(jié)構(gòu)
2房轿、代碼
<div class="container">
<div class="row">
<div class="col-sm-2">
<div class="list-group side-bar">
<a class="list-group-item active" role="button">隨筆</a>
<a class="list-group-item" role="button">隨筆</a>
<a class="list-group-item" role="button">隨筆</a>
<a class="list-group-item" role="button">隨筆</a>
<a class="list-group-item" role="button">隨筆</a>
<a class="list-group-item" role="button">隨筆</a>
</div>
</div>
</div>
</div>
addition:使頁面內(nèi)容包含在container中,使用柵格結(jié)構(gòu)需要row所森,左側(cè)菜單欄占用兩個柵格col-sm-2囱持。
3、自定義樣式
為菜單選項去除默認邊框焕济,加圓角纷妆,加間距,在選中狀態(tài)下增加背景色晴弃。
在main.css中自定義樣式
.side-bar .list-group-item {
border: 0;
margin-bottom: 5px;
border-radius: 5px;
}
.side-bar .list-group-item .active {
background-color: #337ab7;
}
4掩幢、效果示例
七上鞠、博客列表
1、前言
博客列表頁世曾,通常作為博客詳情頁的導(dǎo)航,根據(jù)每一條列表占據(jù)的大小谴咸,一頁有多少可列表項轮听。列表中包括博客頁的鏈接蕊程,標(biāo)題椒袍,簡介,作者藻茂,熱度,發(fā)布時間等优俘。
2掀序、代碼
<div class="col-sm-7">
<div class="blog-list">
<div class="blog-list-item clearfix">
<div class="col-xs-5">
<img src="image/blog.png">
</div>
<div class="">
<a href="#" class="title">
記錄點滴不恭,記錄成長。用博客記錄技術(shù)與經(jīng)驗的積累换吧,在這里找到志同道合的朋友沾瓦,編程的樂趣。
</a>
<div class="info">
<span class="avatar"><img src="image/v2-2d45613b0fb8cdd36f53c3b31d0c6ee8_hd.jpg"
alt="avatar"></span>
<span>散人</span> |
<span>2.8K</span>
<span class="glyphicon glyphicon-thumbs-up blog-hot" aria-hidden="true"></span> |
<span>5分鐘前</span>
</div>
</div>
</div>
</div>
addition:中間博客列表占用七個柵格col-sm-7风喇,增加clearfix清除浮動魂莫,使列表項正常垂直排列撕蔼。
在博客項每一個列表鲸沮,又使用柵格系統(tǒng)將博客圖片和其他介紹內(nèi)容分開,分別占用col-xs-5 5和col-xs-7 7個位置讼溺,(共5+7=12個怒坯,夠了)。
這里使用Bootstrap的組件视译,一個向上豎起大拇指的手作為熱度圖標(biāo)归敬。
更多請參考:Bootstrap中文文檔:字體圖標(biāo)
3汪茧、自定義樣式
默認的a標(biāo)簽也就是超鏈接,在鼠標(biāo)懸停的時候會出現(xiàn)一條下劃線呀舔,把他設(shè)置為 text-decoration: none;媚赖,并在后邊設(shè)置為懸停時顏色變淺惧磺。
img元素width默認是auto丧失,設(shè)置max-width相當(dāng)于沒設(shè)置width布讹,max-width是控制溢出寬度、保證寬度不溢出白嘁。為avatar下的img元素設(shè)置為內(nèi)聯(lián)絮缅,寬高呼股,邊距彭谁。
因此對于,博客圖片和博客作者頭像则奥,是使用不同的圖片設(shè)置方式读处。
為列表項,設(shè)置內(nèi)邊距井辜,下邊框添加樣式增加美觀度抑胎。第一個元素渐北,和最后一個元素區(qū)別對待赃蛛。
博客簡介需要設(shè)置為塊元素,改變樣式破托,字體大小土砂,字重谜洽,懸停變色等阐虚。
在main.css中自定義樣式
a:hover{
text-decoration: none;
}
img{
display: block;
max-width: 100%;
border-radius: 5px;
}
.avatar img{
display: inline-block;
width: 18px;
height: 18px;
margin-right: 3px;
}
.blog-list-item{
padding-bottom: 15px;
padding-top: 15px;
border-bottom: 1px solid #adadad;
}
.blog-list-item:last-child{
border-bottom: 0;
}
.blog-list-item:first-child{
padding-top: 0;
}
.blog-list-item .title{
display: block;
font-size: 18px;
font-weight: bold;
line-height: 2;
margin-bottom: 15px;
color: black;
}
.blog-list-item .title:hover {
color: #9d9d9d;
}
.blog-list-item .info{
color: #9d9d9d;
}
4实束、效果示例
八咸灿、右側(cè)欄
1避矢、效果示例
2谷异、前言
可以看出整個右側(cè)推薦位共分為三部分:
全局搜索框
廣告位
推薦欄
3、代碼
<div class="col-sm-3">
<div class="search-bar">
<form role="form">
<div class="form-group has-feedback">
<label class="sr-only" for="Search">Search:</label>
<input type="search" class="form-control" placeholder="搜索" id="Search">
<span class="glyphicon glyphicon-search form-control-feedback"></span>
</div>
</form>
</div>
<div class="side-bar-card clearfix">
<div class="col-xs-5">
<img src="image/adver.png">
</div>
<div class="col-xs-7 side-bar-introduction">
<div class="">代碼改變世界</div>
<div class="side-bar-phone">聯(lián)系電話:XXXX</div>
</div>
</div>
<div class="side-bar-card side-bar-recommend clearfix">
<div class="side-bar-title">推薦閱讀</div>
<div class="side-bar-body">
<div class="side-bar-list">
<div class="side-bar-item">
<a href="#" class="side-item-title">淺析Django項目優(yōu)化</a>
<div class="side-item-info">10.4k閱讀 | 五天前</div>
</div>
<div class="side-bar-item">
<a href="#" class="side-item-title">python解釋器</a>
<div class="side-item-info">0.4k閱讀 | 一小時前</div>
</div>
<div class="side-bar-item">
<a href="#" class="side-item-title">web前段優(yōu)化策略</a>
<div class="side-item-info">2.9k閱讀 | 一周前</div>
</div>
<div class="side-bar-item">
<a href="#" class="side-item-title">淺析Django項目優(yōu)化</a>
<div class="side-item-info">1.4k閱讀 | 兩小時前</div>
</div>
<div class="side-bar-item">
<a href="#" class="side-item-title">淺析Django項目優(yōu)化</a>
<div class="side-item-info">4.1k閱讀 | 兩天前</div>
</div>
</div>
</div>
</div>
</div>
addition:在左側(cè)菜單欄與中間博客列表分別使用柵格結(jié)構(gòu)col-sm-2和col-sm-7尺上,因測12-2-7=3,右側(cè)欄的大小占柵格結(jié)構(gòu)的col-sm-3卑吭,整個柵格系統(tǒng)才算完整豆赏。
同樣的掷邦,我們也需要為右側(cè)欄添加clearfix屬性椭赋,清除浮動哪怔。
全局搜索框添加小圖標(biāo)增加美觀和指示作用,label的作用:label標(biāo)簽是用來定義表單控制間的關(guān)系胚委,當(dāng)用戶選擇該標(biāo)簽時篷扩,瀏覽器會自動將焦點轉(zhuǎn)到和標(biāo)簽相關(guān)的表單控件上茉盏。
雖然label內(nèi)部沒有介紹信息鸠姨,但是label元素卻是不可缺少的,這是因為:如果你沒有為每個輸入控件設(shè)置 label 標(biāo)簽连茧,屏幕閱讀器將無法正確識別啸驯。對于內(nèi)聯(lián)表單,可以通過為label 設(shè)置 .sr-only 類將其隱藏徙鱼,但卻不可缺少袱吆。
在廣告位的位置同樣再次使用柵格系統(tǒng)距淫,使得廣告照片col-xs-5和廣告其他簡介信息col-xs-7分開榕暇。
更多請參考:Bootstrap中文文檔:表單
4拐揭、自定義樣式
為右側(cè)廣告位和推薦閱讀增加backgound,修圓角家肯。調(diào)整邊距位置讨衣。
當(dāng)鼠標(biāo)懸停推薦列表項時式镐,背景色加深與整體推薦列表形成對比娘汞,層次分明你弦,更加美觀。
在main.css中自定義樣式
.side-bar-card{
background: rgba(0,0,0,.06);
padding: 15px 0;
border-radius: 5px;
}
.side-bar-card .side-bar-introduction{
padding-left: 5px;
line-height: 1.8;
color: #9d9d9d;
font-size: 15px;
}
.side-bar-card .side-bar-phone{
line-height: 1.5;
font-size: 13px;
}
.side-bar-recommend{
margin-top: 10px;
}
.side-bar-card .side-bar-title{
padding-left: 15px;
padding-bottom: 15px;
}
.side-bar-recommend .side-bar-list .side-bar-item{
padding: 15px 15px;
}
.side-bar-recommend .side-bar-list .side-bar-item:hover{
padding: 15px 15px;
background-color: rgba(0,0,0, .09);
}
.side-bar-recommend .side-bar-list .side-item-title{
color: black;
}
.side-bar-recommend .side-bar-list .side-item-title:hover{
color: #9d9d9d;
}
.side-bar-recommend .side-bar-list .side-item-info{
color: #9d9d9d;
font-size: 12px;
}
九、頁尾
1烹俗、前言
這部分沒什么特別的內(nèi)容,使用 HTML5 的新增標(biāo)簽 <footer> ,使之更“語義化”兔仰,也可以使用Bootstrap的頁尾類斋陪。
2、代碼
這部分代碼缔赠,不像左側(cè)菜單嗤堰,博客列表以及右側(cè)欄那樣需要包含container中
<div class="modal-footer">
<address class="text-center">
<p>關(guān)于博客園 | 聯(lián)系我們 | 廣告服務(wù) | ?2004-2018博客</p>
<div href="#">first.last@example.com</div>
</address>
</div>
3踢匣、自定義樣式
讓博客列表的最后一個元素與頁尾離得跟遠一些离唬,增加一點外邊距。
在main.css中自定義樣式
.modal-footer{
margin-top: 30px;
}
4戚哎、效果示例
十型凳、源碼
上述部分如有整理不全請參照源碼甘畅。
完整源碼地址:https://github.com/weilanhanf/weilanhanf.github.io
十一疏唾、鏈接
博客詳情頁及響應(yīng)式設(shè)計鏈接:Bootstrap 實戰(zhàn)之響應(yīng)式個人博客 (二)