Bootstrap實戰 - 響應式佈局

一、介紹

響應式佈局就是一個網站能夠兼容多個終端,而不是爲每個終端做一個特定的版本。這個概念是爲解決移動互聯網瀏覽而誕生的。

導航欄與輪播在大部分網站的頭部佔很高的比重,特別是導航欄,扮演着網站地圖的角色。

在響應式佈局中,要求導航欄能夠根據終端屏幕大小顯示不同的樣式。

二、知識點

2.1 導航欄

官方解釋:導航條是在您的應用或網站中作爲導航頁頭的響應式基礎組件。它們在移動設備上可以摺疊(並且可開可關),且在視口(viewport)寬度增加時逐漸變爲水平展開模式。

2.1.1 基礎導航欄

使用 Bootstrap 之前,習慣用 <ul> + <li> 來構造一個導航欄。

<!--代碼部分-->
<style>
.navigation-past{
    list-style: none;
}
.navigation-past>li{
    float: left;
    padding: 8px;
}
.navigation-past>li>a{
    text-decoration: none;
    color: #000;
}
.active-past{
    background: #E7E7E7;
}
</style>
<ul class="navigation-past">
	   <!--選中-->
    <li class="active-past"><a href="#">Navigation First</a></li>
    <li><a href="#">Navigation Second</a></li>
    <li><a href="#">Navigation Third</a></li>
    <li><a href="#">Navigation Fourth</a></li>
    <li><a href="#">Navigation Fifth</a></li>
</ul>

效果圖:

使用 Bootstrap 的話,便是在熟悉的這個構造上加上一些修飾即可。首先在 <ul> 外面套一層 <div>,並加上樣式 navbar navbar-default;然後給裏面的 <ul> 加上樣式 nav navbar-nav;最後,給選中的部分加上樣式 active。一個最基本的 Bootstrap 導航便完成了。

<!--代碼部分-->
<div class="navbar navbar-default" role="navigation">
    <ul class="nav navbar-nav">
        <li class="active"><a href="#">Navigation First</a></li>
        <li><a href="#">Navigation Second</a></li>
        <li><a href="#">Navigation Third</a></li>
        <li><a href="#">Navigation Fourth</a></li>
        <li><a href="#">Navigation Fifth</a></li>
    </ul>
</div>

效果圖:

這裏在最外層加了一個 role="navigation" 的屬性,這裏是 HTML5 的標籤屬性,目的是讓標籤語義化,方便屏幕閱讀器對其進行識別,同時也是爲了方便特殊人羣瀏覽。

2.1.2 進階的導航欄

在瀏覽一些官方網站時,首先映入眼簾的是左上角鮮明的公司 LOGO 和誇張的輪播 ,Bootstrap 在導航中預留了 LOGO 的位置。使用方法是在外層 <div> 裏面加一個樣式 navbar-header<div>,這個 <div> 內再加一個樣式 navbar-brand<a> 元素。

<!--代碼部分-->
<div class="navbar navbar-default" role="navigation">
			<div class="navbar-header">
						<a href="#" class="navbar-brand">LOGO</a>
			</div>
    <ul class="nav navbar-nav">
        <li class="active"><a href="#">Navigation First</a></li>
        <li><a href="#">Navigation Second</a></li>
        <li><a href="#">Navigation Third</a></li>
        <li><a href="#">Navigation Fourth</a></li>
        <li><a href="#">Navigation Fifth</a></li>
    </ul>
</div>

效果圖:

有的時候一級導航是不夠的,需要搭配二級導航展示更多的內容。使用方法:首先在需要加二級導航的 <li> 元素中添加樣式 dropdown<a> 元素中添加樣式 dropdown-toggle 和屬性 data-toggle="dropdown";然後在 <li> 裏面 <a> 下面在放一個 <ul> + <li> 組合,<ul> 標籤添加樣式 dropdown-menu

<!--代碼部分-->
<div class="navbar navbar-default" role="navigation">
			<div class="navbar-header">
						<a href="#" class="navbar-brand">LOGO</a>
			</div>
    <ul class="nav navbar-nav">
        <li class="active"><a href="#">Navigation First</a></li>
        <li><a href="#">Navigation Second</a></li>
        <li><a href="#">Navigation Third</a></li>
        <li><a href="#">Navigation Fourth</a></li>
        <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
                Navigation Fifth
                <ul class="dropdown-menu">
                    <li><a href="#">Sub-Navigation First</a></li>
                    <li><a href="#">Sub-Navigation Second</a></li>
                    <li><a href="#">Sub-Navigation Third</a></li>
                </ul>
            </a>
        </li>
    </ul>
</div>

效果圖:

這裏又出現新的屬性 aria-haspopup="true" aria-expanded="false",同樣的,這也是 HTML5 新加的屬性,這裏引用 Segmentfault 社區姜中秋的回答。

aria-haspopup: true 表示點擊的時候會出現菜單或是浮動元素;false 表示沒有 pop-up 效果。aria-expanded: 表示展開狀態。默認爲 undefined, 表示當前展開狀態未知。其它可選值:true 表示元素是展開的;false 表示元素不是展開的。

平常所見到的下拉框一般都有一個向下的箭頭符號 ▼,同樣的,在 Bootstrap 中也支持這一效果,只不過需要引入她自帶的字體庫 Glyphicons 字體圖標。

官方介紹:Bootstrap 包括 250 多個來自 Glyphicon Halflings 的字體圖標。Glyphicons Halflings 一般是收費的,但是他們的作者允許 Bootstrap 免費使用。爲了表示感謝,希望你在使用時儘量爲Glyphicons添加一個 友情鏈接

使用方法:新建一個 <span> 元素,然後在裏面加上樣式 glyphicon glyphicon-triangle-bottom

Glyphicons 字體圖標使用示例:

<!--代碼部分-->
<li class="dropdown">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
        Navigation Fifth <span class="glyphicon glyphicon-triangle-bottom" aria-hidden="true"></span>
        <ul class="dropdown-menu">
            <li><a href="#">Sub-Navigation First</a></li>
            <li><a href="#">Sub-Navigation Second</a></li>
            <li><a href="#">Sub-Navigation Third</a></li>
        </ul>
    </a>
</li>

效果圖:

注意:

  • Glyphicons 字體圖標和文本之間添加一個空格,不然會影響樣式(padding)的正確顯示。
  • 服務器需要正確添加相應的 MIME 類型,否則加載字體會報 404 錯誤。

另外這裏的箭頭也可以使用 Bootstrap 自帶的樣式 caret 來實現,這裏的箭頭是用 CSS 實現了,使用方法:<span class="caret"></span>

2.1.3 響應式導航欄

在手機端瀏覽網站的時候常看到幾個橫線(≡)組成的導航向導,Bootstrap 作爲一個移動設備優先也是支持這樣的需求的,響應式導航的使用的方法比較固定,首先在導航標題 <div class="navbar-header"> 內加上一段固定寫法的代碼;然後在需要在小屏時摺疊的 <ul> 元素外包一層樣式 collapse navbar-collapse<div> 元素,並給這個元素加上任意名稱的 ID,例如:id="navigation-collapse";最後在響應式按鈕 <button> 元素上加上 data-target 屬性指向要摺疊的內容 id,例如:data-target="#navigation-collapse"

<!--代碼部分-->
<div class="navbar navbar-default" role="navigation">
    <div class="navbar-header">
						<!--以下爲固定寫法,用到的時候複製粘貼即可-->
        <button class="navbar-toggle" type="button" data-toggle="collapse" data-target="#navigation-collapse">
          <span class="sr-only">Toggle Navigation</span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
        <a href="#" class="navbar-brand">LOGO</a>
    </div>
    <div class="collapse navbar-collapse" id="navigation-collapse">
        <ul class="nav navbar-nav">
            <li class="active"><a href="#">Navigation First</a></li>
            <li><a href="#">Navigation Second</a></li>
            <li><a href="#">Navigation Third</a></li>
            <li><a href="#">Navigation Fourth</a></li>
            <li class="dropdown">
                <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
                    Navigation Fifth <span class="caret"></span>
                    <ul class="dropdown-menu">
                        <li><a href="#">Sub-Navigation First</a></li>
                        <li><a href="#">Sub-Navigation Second</a></li>
                        <li><a href="#">Sub-Navigation Third</a></li>
                    </ul>
                </a>
            </li>
        </ul>
    </div>
</div>

效果圖:

2.2 輪播

圖片輪播是網站的重要組成部分之一,常用來放活動廣告或企業宣傳圖,有時也叫做“幻燈片”,Bootstrap 中的輪播效果是由 JavaScript 插件 Carousel 來實現的。

2.2.1 基礎輪播

輪播的使用方法也是相對固定的,特殊場景按需求修改即可。需要注意的是需要給最外層 <div> 元素加上一個 id,並在小圓點出指向這個 id

<!--代碼部分-->
<div id="my-banner" class="carousel">
    <!--放置小圓點,點擊可以切換輪播-->
    <ol class="carousel-indicators">
        <!--加上樣式active表示默認顯示的輪播,data-slide-to="0"屬性表示顯示輪播的順序-->
        <li data-target="#my-banner" data-slide-to="0" class="active"></li>
        <li data-target="#my-banner" data-slide-to="1"></li>
    </ol>
    <!--這裏放置輪播顯示的圖片-->
    <div class="carousel-inner">
        <!--加上樣式active表示默認顯示的圖片-->
        <div class="item active">
            <img src="http://www.mazey.net/img/upload/image/20170712/b1.jpg" alt="輪播">
        </div>
        <div class="item">
            <img src="http://www.mazey.net/img/upload/image/20170712/b2.jpg" alt="輪播">
        </div>
    </div>
</div>

效果圖:

2.2.2 進階的輪播

一個完整的輪播應具有自動播放、點擊切換、懸浮停止、外加說明文字功能,別擔心,這些 Bootstrap 通通都有!

2.2.2.1 自動播發

最外層 <div> 元素添加屬性 data-ride="carousel" 和樣式 slide(使輪播播放更平滑),如:<div id="my-banner" class="carousel slide" data-ride="carousel">。此時輪播的自動播放時間爲 5 秒(默認),如想改變此值設置屬性 data-interval="你想要的值",如我想要 3 秒(3000 ms)輪播一次則設置 data-interval="3000"。另外輪播是默認懸浮停止播放的(data-pause="hover"),如想禁止懸浮播放設置屬性 data-pause="false" 即可。

2.2.2.2 添加文字

在輪播圖片 <img> 元素下面添加樣式 carousel-caption<div>,裏面存放文字便可正確顯示在輪播上面。

<!--代碼部分-->
<div class="carousel-caption">
    <h5>夜裏總是下雨</h5>
</div>
2.2.2.3 點擊切換

在輪播圖片下面放置兩個 <a> 元素,href 指向輪播 id,添加屬性 data-slide="prev/next 向前/向後"

<!--代碼部分-->
<!--<a>元素的href指向輪播id-->
<a class="left carousel-control" href="#my-banner" data-slide="prev" role="button">
    <span class="glyphicon glyphicon-chevron-left"></span>
</a>
<a class="right carousel-control" href="#my-banner"  data-slide="next" role="button">
    <span class="glyphicon glyphicon-chevron-right"></span>
</a>

輪播代碼示例:

<!--代碼部分-->
<div id="my-banner" class="carousel slide" data-ride="carousel" data-interval="3000" data-pause="false">
    <!--放置小圓點,點擊可以切換輪播-->
    <ol class="carousel-indicators">
        <!--加上樣式active表示默認顯示的輪播,data-slide-to="0"屬性表示顯示輪播的順序-->
        <li data-target="#my-banner" data-slide-to="0" class="active"></li>
        <li data-target="#my-banner" data-slide-to="1"></li>
    </ol>
    <!--這裏放置輪播顯示的圖片-->
    <div class="carousel-inner">
        <!--加上樣式active表示默認顯示的圖片-->
        <div class="item active">
            <img src="http://www.mazey.net/img/upload/image/20170712/b1.jpg" alt="輪播">
            <div class="carousel-caption">
                <h5>夜裏總是下雨</h5>
            </div>
        </div>
        <div class="item">
            <img src="http://www.mazey.net/img/upload/image/20170712/b2.jpg" alt="輪播">
            <div class="carousel-caption">
                <h5>後除提醒君の世界</h5>
            </div>
        </div>
    </div>
    <!--<a>元素的href指向輪播id-->
    <a class="left carousel-control" href="#my-banner" data-slide="prev" role="button">
        <span class="glyphicon glyphicon-chevron-left"></span>
    </a>
    <a class="right carousel-control" href="#my-banner"  data-slide="next" role="button">
        <span class="glyphicon glyphicon-chevron-right"></span>
    </a>
</div>

效果圖:

三、實戰

試着組合柵格系統 + 導航欄 + 輪播佈局一個響應式頁面。

電腦端效果圖:

移動端效果圖:

其實實現這樣一個效果很簡單,首先看一下柵格參數如何在多種屏幕設備上工作的。

在新聞和資訊的盒子上同時加上樣式 col-xs-*col-sm-*col-md-*,小屏時(屏幕寬度 < 992px)col-xs-*col-sm-* 生效,col-md-* 失效;大屏時(屏幕寬度 ≥ 992px)col-md-* 生效,col-xs-*col-sm-* 失效。例如:<div class="col-xs-12 col-sm-12 col-md-6">新聞</div><div class="col-xs-12 col-sm-12 col-md-6">資訊</div>

演示地址:https://mazey.cn/bootstrap-blueprints/lesson-second-navigation/index.html,源碼地址:https://github.com/mazeyqian/bootstrap-blueprints/tree/master/lesson-second-navigation

版權聲明

本博客所有的原創文章,作者皆保留版權。轉載必須包含本聲明,保持本文完整,並以超鏈接形式註明作者後除和本文原始地址:https://blog.mazey.net/2575.html

(完)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章