《深入理解bootstrap》、: CSS組件

來源:互聯網
上載者:User
bootstrap三大核心之二。

包括glyphicon表徵圖,下拉式功能表(dropdown),按鈕組(button group)....等等。

一. 表徵圖字型

bootstrap3提供了200多個免費表徵圖字型。認為它是一個字。

arial-hidden="true"

.sr-only(唯讀)

1. 引入方法:


i標籤是已經廢棄了的html斜體標籤。用span也可以。使用時必須基於glyphicon glyphicon-xxx兩個類的樣式。

2. 實現機制:

(1)雪碧技術:允許無損放大,減少圖片大小,減少網頁的請求次數。

把網頁的背景圖片整合到一張圖片中,利用背景定位顯示出來。

定位的是做上點座標,右邊為x軸負方向,左邊為y軸正方向。

background:url(路徑) no-repeat 0 0;

(2)@font-face,緩衝自伺服器,字型特性(如可設定顏色)。CSS3的線上字型引入寫法是:

在CSS的最上面:匯入第三方字型表徵圖

@font-face{    font:字型名稱;(自訂名稱,避開網路安全字名)    src:url(字型檔路徑), url(字型檔路徑), url(字型檔路徑),…;}

@font-face至少.woff,.eot兩種格式的字型。一般還要加上SVG字型。

3.應用

在button上應用字型表徵圖:

 login

這是在按鈕上應用字型表徵圖的案例。可以在login上面加一個空格。不然會和表徵圖擠在一起。

還有一種推薦的方式:

                                login

就是把span放到button裡邊。如果不想看到可以給span加上:sr-only(裝置可讀,使用者看不到)。

再有如:

                                logout

再看copyright表徵圖——


注意字型表徵圖的原則——讓所有人能用——加上title屬性

二. 下拉式功能表dropdown(需要jq支援)

1. 基本用法

一個下拉式功能表的基本實現是,一個按鈕,一個隱藏的ul-li,一個響應才做表徵圖。通過jquery的toggle操作顯示隱藏。

在bootstrap中,結構也是一樣,不同的是,只需要應用三個基本語句就可以實現。

class="dropdown"——包在最外層的p上,這是一個下拉式功能表。

ul class="dropdown-menu"——把ul隱藏起來。

光有ul隱藏還不夠,button按鈕綁定的行為應該是:data-toggle="dropdown"

                                    縱貫線                                                                       周華健                   李宗盛                   羅大佑                   張震嶽

效果馬上就有了:

如果我把p的class屬性改為dropup,菜單就變成“上拉菜單”了

對齊——用在ul上

預設是靠左對齊。

dropdown-menu-left|right

(1)標題


比如給每個成員的li加上dropdown-header:同時還加上各自的作品

注意,dropdown-header一般不加a標記

(2)分割線

光是這樣看很累,可以加上分割線來區分層級。


(3)禁用


不讓用,比如我要禁點“一起哈啤”,就給他加上class="disabled"

結果是禁止點擊狀態:

通常應用不同的角色辦理。

【例4.1】

現在有一個下拉式功能表,一個文本輸入框,樣式如下:

                          縱貫線                                           周華健            怕黑            雨人                        李宗盛            凡人歌            寂寞難耐                        羅大佑            戀曲1980            愛人同志                        張震嶽            一起哈啤            公路                                                                                                     登入

要求:輸入“我是哈啤會員”,點擊btn按鈕登入後,菜單“一起哈啤”顯示可用,否則為不可選狀態。

通過jquery實現:

$(function(){    $('#login').click(function(){        if($('#inputName').val()=='我是哈啤會員'){            $("li:contains('一起哈啤')").removeClass('disabled');        }    })})

三. 多級嵌套——3.x版已經刪除。(不看)

四. 按鈕組——p class="btn-group"

1.基本用法

對一系列按鈕的容器套用btn——group

    Login    Register    Reset

很有一種手機的感覺。

2.還可以批量修改尺寸:如果加上btn-group-lg/sm/xs等尺寸參數:比如這是使用btn-group-xs的效果。沒有md(shi)

注意按鈕組的大小設定優先權大於按鈕(因為在源碼中後定義。)

3.工具列:

在以上代碼的基礎上,賦值一組,然後將2組包裹在一個p中,給此p加上class="btn-toolbar"

            Login        Register        Reset                Login        Register        Reset

說白了就是打橫來。

【應用】按鈕組可以和下拉式功能表配合使用。那看起來就像個導航了。

    Login    Register    Reset                        縱貫線                                       周華健           李宗盛           羅大佑           張震嶽

4.垂直分組btn-group-vertical

對button外包的p使用。

    Login    Register    Reset                        縱貫線                                       周華健           李宗盛           羅大佑           張震嶽

但是使用這種方式做的垂直導航不多。

5. 自適應的分組按鈕:btn-group-justify

讓按鈕的寬度自適應——注意此功能僅限於a標記類型的btn!

            Login            Register            Reset

四. 按鈕式的下拉式功能表(膠囊式的按鈕)

依賴js組件,而且一般用於實現是分裂式的。


1.基本實現思路

一個按鈕組,實際包括兩個按鈕。一個是內容,一個顯示三角符號(class="caret")。就像下面一樣:

    Search

接下來實現菜單點擊按鈕,出現一個ul-li序列。對綠色按鈕做——data-toogle="dropdown"

    Search                            link1        link2        link3

按鈕組控制項本身也支援下拉式功能表的觸發,所以不需要class=dropdown了

同理,在button-group上加上dropup代表向上彈出。

五. 輸入框組——input-group系列

用於單行文本輸入框和其它小的組件(比如說span)進行排列。只支援文本輸入框。

1. input-group-addon——直接添加到span標籤

            Email

你也可以為span裡面加單選框(radio)和複選框(checkbox),但是樣式相當難看。

看上去好神奇的樣子,那能為span加諸如的表徵圖字型嗎?——抱然而真的不能用。

2. input-group-btn——直接添加到span標籤,但是裡麵包了一個按鈕

為什麼要額外設定多一個input-group-addon?

.btn的樣式過於複雜了。為了避免衝突,需要額外指定一個類。

    Email        GO

注意:

(1) input-group-btn不是直接用,button按鈕上面,同時,button按鈕至少要加個btn的class,三者是配合使用的。

(2)input輸入框組支援定義大小——和btn-group一樣,支援input-group-lg/sm/xs+預設 四個大小樣式。

【例4.2】

在上面代碼的基礎上,當輸入正確郵箱時(if(this.value!="" && !( this.value!="" && !/.+@.+\.[a-zA-Z]{2,4}$/.test(this.value) ))),按鈕變為可用(移除.disabled),點擊可以為此地址法郵件(通常用於提交驗證郵件)。用指令碼實現之。

唯一需要注意的是,這裡的button按鈕應使用location.href作為跳轉。

$(function(){    $('.form-control:input').keyup(function(){        if(this.value!="" && !( this.value!="" && !/.+@.+\.[a-zA-Z]{2,4}$/.test(this.value) )){            $('button').removeClass().addClass('btn btn-success');            var address=this.value;            $('button').click(function(){                location.href='mailto:'+address;            })        }else{            $('button').html('GO').removeClass().addClass('btn btn-warning').addClass('disabled');        }    })})

3.與其它組件結合

(1)下拉式功能表結合addon

把上面的代碼修改以下,直接給按鈕加上一個data-toggle="dropdown",然後把容器由span改成p。

        GO                    1        2        3

(2)分裂式按鈕

在input-group-btn下,組合的按鈕也是可以分裂式的。無需再給父級容器加btn-group。同時應該注意到,不同點在於按鈕的圓角被去掉了。

六. 導航(基本)

導航是所有組件的重點。對於導航有套用的預置類.nav,但是它並不生產直觀樣式,只是各種導航實現的前提條件。導航的結構和正常差不多,本質是通過ul-li體系實現。組件的動效依賴jquery。

選項卡:


膠囊式導航:

    堆疊式導航(垂直標籤頁):

      自適應導航(左右對齊):

        1.選項卡—— .nav-tabs

        實現方式:

        HomePofileMessage

        樣式如下,配合.active來使用message當前處於啟用狀態。

        2.膠囊式導航——nav-pills

        很生動形象的詞。上面代碼中,把ul的class改為nav-pills就可以實現了。

        3.垂直標籤——nav-stacked

        同樣也是應用在ul上。但注意,.active樣式在此不生效,圖中只是懸停的效果。

        4.左右對齊

        整個nav佔據了螢幕的一行,同時自動分配寬度。當螢幕較小時,自動垂直排列。同樣,途中的陰影只是滑鼠移至上方的效果,

        5. 初步小結:

        (1)以上四類可以混搭使用。要想使用.active類樣式,可以在tab/pills的架構下使用。

        比如class="nav nav-pills nav-justified"

        【例4.3】拼湊一個二級導航:

        任務描述:在一個膠囊內拼湊一個耳機導航,實現下拉式功能表功能:

        根據架構可以寫出下列代碼

            這是膠囊式導航 class="nav nav-pills"            Home        Pofile                                    Message                                                        link1                link2                link3

        但還是發現,第7行的data-toggle已經有了一個"tab",再添加“dropdown”導致雙方都不生效。嘗試使用分段式按鈕,但是發現按鈕的表現和膠囊按鈕的區別還是有的。所以二者只能取一。至於active類,以後可以用js實現。

        所以最終代碼是:

            這是膠囊式導航 class="nav nav-pills"            Home        Pofile                                    Message                                                        link1                link2                link3

        進一步思考:在此基礎上做出三級菜單。三級菜單需要.dropdown-submenu實現,但是bootstrap3已經刪除了相關類。這時需要在css中引入舊版中.dropdown-submenu的樣式:

        .dropdown-submenu {    position: relative;}.dropdown-submenu > .dropdown-menu {    top: 0;    left: 100%;    margin-top: -6px;    margin-left: -1px;    -webkit-border-radius: 0 6px 6px 6px;    -moz-border-radius: 0 6px 6px;    border-radius: 0 6px 6px 6px;}.dropdown-submenu:hover > .dropdown-menu {    display: block;}.dropdown-submenu > a:after {    display: block;    content: " ";    float: right;    width: 0;    height: 0;    border-color: transparent;    border-style: solid;    border-width: 5px 0 5px 5px;    border-left-color: #ccc;    margin-top: 5px;    margin-right: -10px;}.dropdown-submenu:hover > a:after {    border-left-color: #fff;}.dropdown-submenu.pull-left {    float: none;}.dropdown-submenu.pull-left > .dropdown-menu {    left: -100%;    margin-left: 10px;    -webkit-border-radius: 6px 0 6px 6px;    -moz-border-radius: 6px 0 6px 6px;    border-radius: 6px 0 6px 6px;}

        結構實現:(關鍵語句在第17行)

            這是膠囊式導航 class="nav nav-pills"            Home        Pofile                                    Message                                                        link1                link2                                                                      link4                                            link4-1                                                                            link4-2                                                            link4-2-1

        效果:

        (2)藉助js外掛程式實現真正的,但只是初步的導航互動——

        在ul-li-a體系下,給a標籤加上屬性:data-toggle="tab"——注意堆疊導航和自適應導航無效(還是本來的效果)

        (3)禁止點擊——還是disabled類

        注意,禁止點擊disabled類只是一個效果,而不能阻止點擊事件的觸發。需要在js中重新定義。

        七. 導航條(navbar)

        導航條的特性在於:比導航多了一個“條”。相對於導航多了一塊背景——

        以下是根據基本結構做出來的導航條效果

            這是基本導航條  .navbar-fixed-top可以固定在上方                    Brand                    disabled            normal            Message

        如果我們給nav標籤加上.navbar-fixed-top,可以固定到最上面。但是這樣做本質是定位,會覆蓋掉原本處於頂端的內容。

        官方建議:原本頂部內容,或者body的padding-top設為70px。如果是頂部內容是header,位移30px就夠了。

        nav-header不一定是必要的

        nav-brand用於放置網站品牌,換行不會被消失

        導航條的顏色由兩個類決定:(1).navbar-dfault;(2).navbar-inverse:控制反色。比如加了.navbar-inverse後:

        下拉二級菜單的實現:只要對li應用dropdown體系就可以實現:

                            Music                        link1        link2        link3

        1. 導航條表單

        最常用的就是網易登陸框,附在導航條上面。

        ——

        (1)邏輯上表單也是ul-li的一部分,所以表單放在li裡面。但是注入輸入框之類的控制項在小螢幕中會自動填滿100%的寬度,所以要給li加上container-fluid類(注意container類不行)

        (2)接下來是按鈕,還記得input-group-btn否?按鈕應該是和輸入框擠在一塊的。

                                                         

        2.基本導航元素

        (1)導航條按鈕

        ——

        多了一個樣式叫navbar-btn

        按鈕也是ul-li體系的一部分,所以也要放到一個li中,比如說,做一個ul class="navbar-right",下面放一個li的建議按鈕——

                    Suggest

        (2)導航條文本

        ——


        主要是寬高符合導航條。比如說在之前的表單前面在建立一個li,輸入

        Search

        就表現出和其它菜單一樣的樣式。

        還是不理想,如果search是和導航是一個緊貼著,應該用addon加上去!

        相對好點)

        (3)非瀏覽連線

        ——

        表現和導航條文本差不多。

        3.位置——做的是固定定位

        排列

        .navbar-left/right

        固定

        .navbar-fixed-top/bottom

        (注意body的padding)

        4.自適應導航條

        實現一個在小螢幕手機常見的功能表按鈕是在一個button中放三個(“三道杠”)。然後設定較小的時候出現。——button class="navbar-toggle"

                    

        進一步編寫可收縮的菜單html,需要對ul外包一個p,並對其應用.collapase .navbar-collapase

                                                                                                                                                    Home                                                                                                                        Music

        這樣home和music都會在螢幕縮小時收縮。然而點擊三道杠,不快顯功能表,點擊時需要外掛程式,而外掛程式由打擾開頭,所以button按鈕需要有data-toggle="collapse"和data-target="展開的菜單"。展開的菜單是個選取器,給ul父級命名id="#pNav",可以直接應用

        data-target="#pNav"。

        全部代碼如下:

                                            Brand                                                                                                                                                                                                                        Home                                                                                        Music

        如果希望菜單位移到右邊,可以對ul使用navbar-right

        八. 麵包屑導航

        breadcrumb——很形象的名字,一路撒麵包,只能從麵包原路返回。只是一個層級的路徑關係,不能說是一個標準的導航

            level1    level2    level3    >level4

        九. 分頁導航

        當商品較多時,索引容納不下,需要用分類導航。

        • /



                      last        1        2        3        next

        • 相關文章

          A Free Trial That Lets You Build Big!

          Start building with 50+ products and up to 12 months usage for Elastic Compute Service

          • Sales Support

            1 on 1 presale consultation

          • After-Sales Support

            24/7 Technical Support 6 Free Tickets per Quarter Faster Response

          • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.