Bootstrap在線電子商務(wù)網(wǎng)站實(shí)戰(zhàn)項(xiàng)目5
構(gòu)建了公司網(wǎng)站之后,接下來就可以考慮設(shè)計(jì)一個(gè)在線商店了。
此次的設(shè)計(jì)以上一章的設(shè)計(jì)為基礎(chǔ), 只是添加了一個(gè)包含如下元素的新頁面:
□ 包含商品小圖、標(biāo)題和說明的產(chǎn)品網(wǎng)格;
□ 位于左側(cè)的變懶,用于按類別、品牌等篩選商品;
□ 方便用戶導(dǎo)航的面包屑和分頁鏈接。
大家先看一看Zappos (http://www.zappos.com/) 和 Amazon (https://www.amazon.com/) 的網(wǎng)站,搜索或者瀏覽一下其中的商品。此處所要?jiǎng)?chuàng)建的頁面,就包含與之類似的商品網(wǎng)格。
完成后的設(shè)計(jì)在大、中、小屏幕中的效果應(yīng)該如下圖所示:
在超小屏幕上,我們希望頁面的布局變成如下所示:
Bootstrap 為完成此次設(shè)計(jì)提供了很好起點(diǎn),在此基礎(chǔ)上,我們要使用LESS完成調(diào)整工作。
1.商品頁的標(biāo)記
我們可以看到頁頭、導(dǎo)航條內(nèi)容以及頁腳都和上一章的一致,主要是主內(nèi)容部分不一樣。可以從效果圖看出,我們可以把主內(nèi)容分為三個(gè)部分:
第1部分: 用無序列表生成的面包屑導(dǎo)航鏈接。
第2部分:用 h1 表示的頁面標(biāo)題。
第3部分:
□ 一系列用于篩選商品的選項(xiàng);
□ 九個(gè)商品,分別帶有小圖、標(biāo)題、說明和按鈕;
□ 用無序列表生成的分頁鏈接,位于商品之下,站點(diǎn)頁腳之上。
1.1 包屑導(dǎo)航鏈接
可以參考官方文檔:http://getbootstrap.com/components/#breadcrumbs (中文文檔:http://v3.bootcss.com/components/#breadcrumbs)
(1)很簡單,我們先根據(jù)文檔敲出代碼如下:
<div role="main"> <div class="container"> <ol class="breadcrumb"> <li><a href="#">Home</a></li> <li><a href="#">Parent Category</a></li> <li class="active">Current Category</li> </ol> </div> </div>
可以看到顯示效果如下:
(2) 然后我們來自定義面包屑的設(shè)計(jì),去掉淺灰色背景和多余的內(nèi)邊距。對(duì)于這個(gè)簡單的調(diào)整,我們可以直接修改 bootstrap 文件夾中的 breadcrumbs.less 文件,同時(shí)注釋掉不需要的行,這樣可以留下修改的痕跡:
.breadcrumb { padding: 0; //@breadcrumb-padding-vertical @breadcrumb-padding-horizontal; margin-bottom: @line-height-computed; list-style: none; //background-color: @breadcrumb-bg;
修改后顯示效果如下:
1.2 頁面標(biāo)題
同樣,官方文檔:http://getbootstrap.com/components/#page-header (中文文檔:http://v3.bootcss.com/components/#page-header)
(1) 同樣,參考文檔,可以敲出代碼如下:
<div class="page-header"> <h1>Product Category Name <small>with explanatory text</small></h1> </div>
可以看到顯示效果如下:
(2) 我們簡單的調(diào)整下樣式,刪除下方邊框。打開 bootstrap 文件夾中的 type.less 文件,搜索 .page-header 并把規(guī)則 border-bottom 注釋掉:
.page-header { padding-bottom: ((@line-height-computed / 2) - 1); margin: (@line-height-computed * 2) 0 @line-height-computed; //border-bottom: 1px solid @page-header-border-color; }
保存,編譯,刷新,就會(huì)看到更清爽的結(jié)果。更多的空白與我們整體設(shè)計(jì)保持了一致,如下所示;
1.3 側(cè)邊欄、商品網(wǎng)格、分頁鏈接
我們的主要顯示內(nèi)容就是左側(cè)的側(cè)邊欄和右側(cè)的商品網(wǎng)格,很明顯,我們用柵格系統(tǒng)把它分為兩個(gè)部分:
<div class="row"> <div class="grid-options col-sm-3"> </div> <div class="products-grid col-sm-9"> </div> </div>
1.3.1 側(cè)邊欄
我們可以看到側(cè)邊欄由幾個(gè)標(biāo)題和對(duì)應(yīng)的篩選商品的選項(xiàng)以及一個(gè)超鏈接按鈕組成,我們可以先簡單的實(shí)現(xiàn)代碼如下,具體樣式,我們之后再調(diào)整。
<div class="grid-options col-sm-3"> <h2>Narrow your selection</h2> <a class="choose-clearance" href="#"> <h3>Clearance Sale</h3> <p>View clearance items</p> </a> <h3>Categories</h3> <ul class="options-list options-categories"> <li><a href="#">Option 1</a></li> <li><a href="#">Option 2</a></li> <li><a href="#">Option 3</a></li> <li><a href="#">Option 4</a></li> <li><a href="#">Option 5</a></li> <li><a href="#">Option 6</a></li> <li><a href="#">Option 7</a></li> <li><a href="#">Option 8</a></li> <li><a href="#">Option 9</a></li> <li><a href="#">Option 10</a></li> </ul> <h3>Brands</h3> <ul class="options-list options-brands"> <li><a href="#">Option 1</a></li> <li><a href="#">Option 2</a></li> <li><a href="#">Option 3</a></li> <li><a href="#">Option 4</a></li> <li><a href="#">Option 5</a></li> <li><a href="#">Option 6</a></li> <li><a href="#">Option 7</a></li> <li><a href="#">Option 8</a></li> <li><a href="#">Option 9</a></li> <li><a href="#">Option 10</a></li> </ul> <h3>Another Filter</h3> <ul class="options-list options-other"> <li><a href="#">Option 1</a></li> <li><a href="#">Option 2</a></li> <li><a href="#">Option 3</a></li> <li><a href="#">Option 4</a></li> <li><a href="#">Option 5</a></li> <li><a href="#">Option 6</a></li> <li><a href="#">Option 7</a></li> <li><a href="#">Option 8</a></li> <li><a href="#">Option 9</a></li> <li><a href="#">Option 10</a></li> </ul> </div>
1.3.2 商品網(wǎng)格
至于商品網(wǎng)格,我們可以看到是由九種商品的商品網(wǎng)格,以及商品網(wǎng)格下的分頁鏈接組成。
同樣,我們用柵格系統(tǒng)簡單實(shí)現(xiàn)九個(gè)商品的顯示,每行三個(gè)商品,共三列。
<div class="products-grid col-sm-9"> <div class="row"> <div class="product-item col-sm-4"> <a href="#"><img src="img/product.png" alt="sample product" /></a> <h2><a href="#">Product Title</a></h2> <p>This text describes the above product a little not too much but just enough or maybe a little more</p> <a class="btn btn-default btn-xs pull-right" href="#">View this product <i class="fa fa-arrow-circle-right"></i></a> </div> ... </div> <!-- /.row --> </div>
1.3.3 分頁鏈接
這個(gè)很簡單,一般使用無序列表實(shí)現(xiàn)。不過,我們可以參考分頁的官方文檔或者中文文檔,可以實(shí)現(xiàn)代碼如下:
<nav> <ul class="pagination"> <li class="disabled"><a href="#">«</a></li> <li class="active"><a href="#">1 <span class="sr-only">(current)</span></a></li> <li><a href="#">2</a></li> <li><a href="#">3</a></li> <li><a href="#">4</a></li> <li><a href="#">5</a></li> <li><a href="#">»</a></li> </ul> </nav>
顯示效果如下:
這樣主頁內(nèi)容就搭建起來了,我們需要的就是對(duì)商品網(wǎng)格和側(cè)邊欄進(jìn)行調(diào)整。
2.調(diào)整商品網(wǎng)格
我們需要把商品網(wǎng)格調(diào)整到位。之前我們使用柵格系統(tǒng),通過 col-sm-4 類來約束每個(gè)商品的寬度,但整個(gè)網(wǎng)格看起來仍然盡不如人意。
<div class="product-item col-sm-4">
主要是由于商品簡介的長短的不一致,導(dǎo)致每個(gè)商品的高度不確定。因此,Bootstrap 在向左浮動(dòng)所有商品時(shí),后面的商品就可能插入到前面的商品中。結(jié)果就是整個(gè)網(wǎng)格顯得很混亂,如下圖所示:
目前,在中大型視口,第4~7個(gè)商品由于高度不等,浮動(dòng)后沒有對(duì)齊。
我們的任務(wù)就是調(diào)整網(wǎng)格系統(tǒng),讓所有網(wǎng)格的視覺效果得到增強(qiáng)。
(1) 創(chuàng)建新文件 less/_product-grid.less ,并在 __main.less 文件中引用。
(2) 我們先調(diào)整下圖片寬度、字號(hào)、內(nèi)邊距和外邊距,代碼如下:
.product-item { padding-bottom: 32px; img { width:100%; } h2 { font-size: @font-size-large; line-height: 1.2; padding: 0 !important; margin-top:6px; margin-bottom:2px; } p { font-size: @font-size-small; line-height:1.3; color:@gray; } }
(3) 現(xiàn)在該來解決布局問題了。解決問題的關(guān)鍵是找到最高的商品。假設(shè)我們有一個(gè)指南,其中對(duì)每個(gè)商品使用什么圖片和文字介紹都有規(guī)劃。所有商品的小圖都是標(biāo)準(zhǔn)大小,文字說明也不會(huì)比當(dāng)前我們示例頁面中的多。這樣的話,我們就可以給所有商品都設(shè)置一個(gè)固定的高度,或者使用 em 或 ex 等更靈活的單位。在這個(gè)示例中,我們就使用360px 的固定值,并把超出的部分隱藏起來。
.product-item { height: 360px; overflow: hidden; ... }
這樣布局問題就解決了,現(xiàn)在的顯示效果如下;
(4) 在此之后,我們就可以放心地使用 Bootstrap 的響應(yīng)式分欄類,去調(diào)整不同視口的布局效果了。具體來說,我們希望當(dāng)視口小和超小的時(shí)候,每行只顯示兩個(gè)商品;而當(dāng)視口中等或較大時(shí),每行顯示三個(gè)商品。為實(shí)現(xiàn)這個(gè)效果,我們要找到并替換每個(gè)商品中的類,結(jié)果要變成如下所示:
<div class="product-item col-xs-6 col-md-4">
替換成這兩個(gè)類之后,每個(gè)商品在超小和小視口將會(huì)是屏幕寬度的一半,而在中大視口中將切換成屏幕寬度的三分之一。
以下是小視口下的情景:
超小視口下因?yàn)閭?cè)邊欄的干擾,還是有顯示問題,所以我們接下來就需要調(diào)整側(cè)邊欄了。
3.側(cè)邊欄和篩選選項(xiàng)
在小、中、大視口中,側(cè)邊欄目前都位于左側(cè)。
目前側(cè)邊欄如下所示:
而在完成設(shè)計(jì)工作后,我們希望把 Clearance Sale 做成一個(gè)超大按鈕,把篩選選項(xiàng)排成兩欄,而且每個(gè)選項(xiàng)前都是復(fù)選框而非項(xiàng)目符號(hào),如下所示:
下面先從基本的樣式開始,把布局弄好。
3.1 基本布局
我們先來調(diào)整字體、顏色、外邊距和內(nèi)邊距。在_product-grid.less 中添加規(guī)則如下:
.grid-options { .panel; .panel-default; padding-top:12px; padding-bottom:24px; > h2 { margin-top:0; font-size:1.5 * (@font-size-large); line-height:1.2; color:@gray-dark; } }
上面代碼的用途如下:
□ 給側(cè)邊欄應(yīng)用 Bootstrap 默認(rèn)的 panel樣式和 panel-default 樣式 (參見:http://getbootstrap.com/components/#panels);
□ 給側(cè)邊欄添加上、下邊距;
□ 調(diào)整 h2 標(biāo)題的字號(hào)、行高和顏色。
3.2 Clearance Sale 按鈕
我們要把Clearance Sale 鏈接變成一個(gè)超大的吸引人的按鈕。
按照下面的說明調(diào)整標(biāo)記:
□ 把鏈接的標(biāo)題和段落都轉(zhuǎn)換成按鈕;
□ 添加自定義的按鈕類 btn-feature,這是我們?cè)谏弦徽聞?chuàng)建的:
□ 給整個(gè)標(biāo)簽添加 Font Awesome 圖標(biāo),通過使用 Font Awesome 內(nèi)置的 icon-3x 類,將圖標(biāo)放大三倍。
PS:要了解 Font Awesome 特殊尺寸類的更多信息,可以參考相關(guān)文檔:http://fontawesome.io/examples/#larger
調(diào)整后的標(biāo)記如下所示:
<a class="btn btn-feature choose-clearance" href="#"> <span class="icon fa fa-tag fa-3x"></span> <h3>Clearance Sale</h3> <p>View clearance items</p> </a>
顯示效果如下:
下面再細(xì)化,完成下列目標(biāo):
(1) 將 Clearance Sale 顯示為塊級(jí)元素,使用 .center-block() 這個(gè) Bootstrap 的混入將其居中;
(2) 強(qiáng)制其寬度為包含欄的92.5%;
(3) 添加上、下內(nèi)邊距;
(4) 覆蓋 Bootstrap 按鈕的 white-space:nowrap 規(guī)則,讓文本可以折行(Bootstrap 的white-space 規(guī)則是在 less/bootstrap/buttons.less 中定義的,關(guān)于這個(gè)屬性的更多信息,大家可以參考:https://css-tricks.com/almanac/properties/w/whitespace/)
(5) 將按鈕設(shè)置為相對(duì)定位,以便對(duì)標(biāo)簽應(yīng)用絕對(duì)定位;
(6) 調(diào)整標(biāo)題和段落的字體、顏色和外邊距;
(7) 把標(biāo)簽圖標(biāo)定位到右上角。
以上目標(biāo)通過下列規(guī)則就可以實(shí)現(xiàn):
.choose-clearance { .center-block(); width: 92.5%; padding-top: 20px; padding-bottom: 12px; white-space: normal; position: relative; h3{ font-weight: normal; color: #fff; padding-top: 4px; margin: 6px; } p { margin:6px 20px; line-height: 1.2; } .icon { position: absolute; top: 0; right: 2px; } }
顯示效果如下:
3.3 選項(xiàng)列表
本節(jié),我們要把幾個(gè)列表轉(zhuǎn)換成篩選選項(xiàng)。
如果花點(diǎn)時(shí)間分析下在線商店 Amazon (https://www.amazon.com/)或者 Zappos (http://www.zappos.com/) 的商品篩選選項(xiàng),會(huì)發(fā)現(xiàn)這些選項(xiàng)其實(shí)是鏈接列表,而且每個(gè)選項(xiàng)都被調(diào)整成了復(fù)選框的樣子。我們也要把鏈接做成復(fù)選框的樣式,用戶只要選擇就會(huì)勾選,另外我們還要調(diào)整它們以適應(yīng)多樣化的設(shè)備,包括平板電腦和智能手機(jī)。
Amazon:
Zappos :
PS:在 Amazon 和 Zappos 等電子商務(wù)網(wǎng)站上,篩選項(xiàng)與內(nèi)容管理系統(tǒng)是關(guān)聯(lián)的,網(wǎng)格中的商品會(huì)隨著用戶選擇篩選項(xiàng)而動(dòng)態(tài)變化。 Bootstrap 是一個(gè)前端設(shè)計(jì)框架,不是內(nèi)容管理系統(tǒng)。因此,我們這個(gè)示例做不到動(dòng)態(tài)篩選商品。但我們 這個(gè)頁面完成后,是完全可以在內(nèi)容管理系統(tǒng)中使用的。
先從每個(gè)列表的 h3 元素開始,我們調(diào)整它們的大小、行高、外邊距和顏色:
.grid-options { ... >h3 { font-size: @font-size-large; line-height: 1.2; margin-top: 12px; color: @gray-dark; } }
然后,我們把注意力集中到無序列表上。我們有給每個(gè)無序列表上都添加了一個(gè)特殊的類,叫 options-list,我們就用它作為選擇符,確保只針對(duì)這些特殊的列表。
首先去掉項(xiàng)目符號(hào)和內(nèi)邊距:
.grid-options { ... .options-list { list-style-type: none; padding-left: 0; } }
接下來是鏈接樣式。稍后我們還要給列表項(xiàng)添加樣式,因此我們把這些樣式包含了嵌套的選擇符中。
.options-list { ... li { a { .btn; .btn-sm; padding-left: 0; padding-right: 0; color: @gray; &:hover, &:focus, &:active, .active & { color: @link-color; } ...
以上規(guī)則的作用如下:
□ 我們利用 LESS 通過 .btn 類加入了基本的按鈕樣式,包括顯示 inline-block 鏈接和額外的內(nèi)邊距:
■ 因?yàn)闆]有添加其他按鈕類,所以也沒有出現(xiàn)背景顏色;
■ 通過添加基本的按鈕樣式,可以讓用戶更方便點(diǎn)擊,使用手指或鼠標(biāo)皆宜。
□ 再通過 .btn-sm 類引入相關(guān)樣式,以減少內(nèi)邊距,并讓字號(hào)比標(biāo)準(zhǔn)按鈕再小一些。
□ 接著刪除無序列表的左和右內(nèi)邊距。
□ 再把鏈接文本的顏色改為 @gray。
□ 最后,設(shè)置懸停、焦點(diǎn)和活動(dòng)鏈接的顏色為 @link-color 。
現(xiàn)在的顯示結(jié)果如下圖所示:
PS:有人可能會(huì)奇怪為什么作者要在這里借用按鈕的 .btn和 .btn-sm 類,而不是直接把這兩個(gè)類寫進(jìn)標(biāo)記。當(dāng)然也可以那么做,但考慮到鏈接的數(shù)量那么多,還是通過CSS來應(yīng)用樣式更便捷。
3.4 為選項(xiàng)鏈接添加 Font Awesome 圖標(biāo)復(fù)選框
我們將在LESS中使用 Font Awesome圖標(biāo)在選項(xiàng)鏈接做出添加復(fù)選框,另外還要加入另一個(gè) Font Awesome 圖標(biāo),以表示懸停、聚焦和活動(dòng)狀態(tài)下勾選的復(fù)選框。
通過 LESS 添加圖標(biāo)需要從三個(gè)文件中取得 Font Awesome 樣式。首先,從 font-awesome 文件夾的 core.less 中獲得基本樣式。在這個(gè)文件中,可以看到以下重要的樣式:
.@{fa-css-prefix} { display: inline-block; font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration font-size: inherit; // can't have font-size inherit on line above, so need to override text-rendering: auto; // optimizelegibility throws things off #1094 -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
以上樣式是所有 Font Awesome 圖標(biāo)樣式的基礎(chǔ),包括作為字體的 Font Awesome 圖標(biāo),以此為基礎(chǔ)可以進(jìn)一步加強(qiáng)相應(yīng)的樣式。
對(duì)現(xiàn)在的需求來說,我們不需要選擇符也不需要花括號(hào),只需要其中的規(guī)則。我們要把這些樣式應(yīng)用給選項(xiàng)鏈接。最重要的,我們要使用 :before 偽元素,因?yàn)榭梢源_保結(jié)果最佳。
從 core.less 中復(fù)制上面的規(guī)則(不包括選擇符),粘貼到 _product-grid.less 文件中,嵌套如下:
.grid-options { ... .options-list { ... li { ... a { ... &:before{ display: inline-block; font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; font-size: inherit; text-rendering: auto; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } ...
這些規(guī)則為我們下一步打下了基礎(chǔ)。下一步就可以指定使用哪個(gè) Font Awesome 圖標(biāo)了。瀏覽這個(gè)頁面:http://fontawesome.io/icons/ ,就會(huì)發(fā)現(xiàn)空復(fù)選框的圖標(biāo)和類名:
這個(gè)圖標(biāo)的 LESS 規(guī)則可以在 font-awesome 文件夾的 icons.less 文件里找到。打開該文件,搜索字符串"}-square-o" ,可以看到下面這一行:
.@{fa-css-prefix}-square-o:before { content: @fa-var-square-o; }
對(duì)于前面這一行,我們只需要 content: @fa-var-square-o 。把它復(fù)制到之前的 &:before 選擇符中的規(guī)則后面:
&:before{ ... content: @fa-var-square-o; }
最后,我們想取得另一些 Font-Awesome 樣式,為圖標(biāo)設(shè)置固定的寬度,避免圖標(biāo)再切換時(shí)出現(xiàn)位移。這些樣式可以在 font-awesome 文件夾的 fixed-width.less 文件中找到。復(fù)制下面這兩行,同樣粘貼到 &:before 選擇符中:
width: (18em / 14);
text-align: center;
添加上面的樣式后,編譯它們?yōu)镃SS并刷新瀏覽器??梢钥吹叫Ч缦?
接下來,我們以同樣的方式添加選擇符和規(guī)則,把 Font Awesome 復(fù)選框圖標(biāo)的勾選版應(yīng)用給鏈接的懸停、焦點(diǎn)和活動(dòng)狀態(tài):
.options-list { ... li { ... a { ... &:hover:before, &:focus:before, &:active:before, .active &:before { content: @fa-var-check-square-o; }
保存編輯后刷新瀏覽器可以看到效果如下:
3.5 使用 LESS 混入在欄中對(duì)其選項(xiàng)
前面,我們使用 LESS 實(shí)現(xiàn)了以往需要通過添加標(biāo)記實(shí)現(xiàn)的功能??紤]到篩選項(xiàng)的數(shù)量很多,這樣做效率最高。同樣的思路也適用于我們對(duì)齊側(cè)邊欄中的選項(xiàng)。
當(dāng)然,如果使用 Bootstrap 的 row 和欄類,通過調(diào)整標(biāo)記也是可以的:
<ul class="options-list options-categories row"> <li class="col-xs-6"><a href="#">Option 1</a></li> <li class="col-xs-6"><a href="#">Option 2</a></li> ...
顯示效果如下:
但有了 Bootstrap 的混入,我們用幾行 LESS 就可以實(shí)現(xiàn)同樣的效果。
(1) 首先 .options-list 選擇符應(yīng)用 .make-row() 混入:
.options-list {
.make-row();
...
這個(gè)混入加入的樣式與我們?cè)跇?biāo)記中添加 row 類加入的樣式一樣。但這里只需要一行代碼。
(2) 然后使用 .make-xs-col() 混入給列表項(xiàng)應(yīng)用分欄規(guī)則:
.options-list { ...
li {
.make-xs-column(6);
...
這樣就跟我們給相關(guān)的li 標(biāo)簽添加 col-xs-6 類的效果一樣了。
3.6 針對(duì)平板和手機(jī)調(diào)整選項(xiàng)列表布局
我們要限制選項(xiàng)面板的寬度,讓它在平板電腦中不至于太寬。
目前來看,Clearance Sale 按鈕有點(diǎn)太寬。在 480px~768px 下,選項(xiàng)列表相隔太遠(yuǎn)了。
相應(yīng)的截圖如下:
其實(shí)只要給選項(xiàng)版設(shè)置一個(gè)最大寬度就行了:
.grid-options {
...
max-width: 480px;
...
下面我們?cè)僬{(diào)整選項(xiàng)列表,讓它們?cè)谛∫暱谥酗@示為三欄。使用LESS ,可以在適當(dāng)?shù)倪x擇符中嵌套一個(gè)媒體查詢,然后在其中添加一個(gè)用于調(diào)整的 .make-xs-column(4) 混入:
li { .make-xs-column(6); @media screen and (max-width:@screen-xs-max){ .make-xs-column(4); } ...
現(xiàn)在保存,編譯,刷新瀏覽器,查看效果。但是我們可能會(huì)發(fā)現(xiàn)側(cè)邊欄靠左對(duì)齊的,右側(cè)留白太多。而且商品網(wǎng)格的顯示有問題每行只顯示了一個(gè)商品。
很明顯,首先我們需要使側(cè)邊欄居中,使用 .center-block() 這個(gè)Bootstrap 的混入就可以了,代碼如下
.grid-options {
...
.center-block();
另外,商品的顯示問題,調(diào)試發(fā)現(xiàn)是上一章中CSS選擇器 div[role="main"] [class*="col-"]清除浮動(dòng)造成的。
所以,我們只需要不清楚浮動(dòng)就可以了:
.product-item {
...
clear:none !important;
...
現(xiàn)在的效果就可以了:
3.7 在手機(jī)上折疊選項(xiàng)面板
現(xiàn)在,篩選項(xiàng)占據(jù)了相當(dāng)對(duì)的垂直空間。這在小屏幕上是個(gè)問題,會(huì)把商品網(wǎng)格推到頁面下方很遠(yuǎn)的地方。
原因就是篩選項(xiàng)不必要地占據(jù)了大量空間。商品本身才是最應(yīng)該首先顯示的。我們既要讓用戶迅速看到商品,也可以在需要時(shí)打開篩選項(xiàng)。
為此,我們使用 Bootstrap 的折疊插件。下面幾步講解如何對(duì)選項(xiàng)面板使用折疊插件,同時(shí)添加一個(gè)擴(kuò)展面板的按鈕,并把折疊行為限定在窄視口中。
(1) 打開 html 文檔,添加一個(gè)div標(biāo)簽,包裝 Clearance Sale 按鈕和三個(gè)選項(xiàng)列表。給這個(gè)div 添加一個(gè)特殊的類 collapse,以及一個(gè)唯一的 ID,以便 JavaScript 插件找到它,同時(shí)也添加一個(gè)同名的類,代碼如下(可以參考文檔:http://getbootstrap.com/javascript/#collapse):
<div class="grid-options col-sm-3"> <h2>Narrow your selection</h2> <div id="options-panel" class="options-panel collapse"> ... </div> </div>
(2) 保存文件并刷新瀏覽器。你會(huì)發(fā)現(xiàn) Clearance Sale 按鈕和選項(xiàng)列表從眼前消失了。只剩下選項(xiàng)面板上方的 h2 標(biāo)題了,效果圖如下:
現(xiàn)在需要一個(gè)切換按鈕,在點(diǎn)擊時(shí)顯示篩選項(xiàng)。
(3) 然后我們?cè)谶@個(gè)h2標(biāo)題中添加一個(gè)button按鈕以及相應(yīng)屬性如下:
<div class="grid-options col-sm-3"> <h2 class="clearfix">Narrow your selection <button type="button" class="options-panel-toggle btn btn-primary pull-right" data-toggle="collapse" data-target="#options-panel"> <span class="icon fa fa-cog fa-2x"></span> </button> ...
簡單解釋下上面的標(biāo)記:
□ 給 h2 添加的 clearfix 類可以確保它包含切換按鈕,因?yàn)榍袚Q按鈕是浮動(dòng)到右邊的;
□ 類 btn 和 btn-primary 會(huì)給新的按鈕添加 Bootstrap 的基本按鈕樣式,背景顏色為 @brand-primary;
□ 類 pull-right 會(huì)把按鈕浮動(dòng)到右側(cè);
□ 在 button 元素中,放了一個(gè) Font Awesome 齒輪圖標(biāo),使用 fa-2x 類放大到兩倍。
保存并刷新瀏覽器,可以看到顯示效果如下:
(4) 下面要寫一些規(guī)則,在中大屏幕中隱藏切換按鈕并展開選項(xiàng)面板。為此,可以在 _product-grid.less 中添加以下規(guī)則:
@media (min-width:@screen-sm-min){ .options-panel{ display:block; } .options-panel-toggle { display:none; } }
(5) 這些規(guī)則的作用如下:
□ 媒體查詢保證只把規(guī)則應(yīng)用到小中大視口;
□ 第一條規(guī)則抵消 collapse 類的作用,它默認(rèn)是隱藏元素;
□ 第二條則隱藏切換按鈕。
保存并刷新,應(yīng)該就能看到想要的效果了。
在超小視口中,選項(xiàng)列表會(huì)折疊起來,但切換按鈕可見:
在小、中、大視口,切換按鈕隱藏,選項(xiàng)列表可見:
這樣,我們的這個(gè)頁面就完工了。
4.小結(jié)
這個(gè)示例,我們做了以下事情:
□ 利用 Bootstrap 的樣式快速實(shí)現(xiàn)了面包屑、頁面標(biāo)題和分頁導(dǎo)航,并根據(jù)需要進(jìn)行了定制;
□ 調(diào)整了 Bootstrap 的網(wǎng)格樣式,為商品創(chuàng)建了整齊的布局,關(guān)鍵是所有商品的高度要一致;
□ 為復(fù)雜的 Clearance Sale 按鈕應(yīng)用了樣式,用到了 @brand-feature 這個(gè)紅色背景;
□ 利用 btn 類的樣式讓篩選按鈕更容易點(diǎn)擊或觸摸,通過自定義滿足了我們的特殊需求;
□ 使用 Bootstrap 的分欄類,加上響應(yīng)式調(diào)整,對(duì)齊了篩選項(xiàng)列表,而且適合多視口;
□ 在自定義樣式表中借用 Font Awesome 樣式在篩選項(xiàng)旁邊添加復(fù)選框;
□ 設(shè)置了選項(xiàng)面板在窄視口中折疊,在小中大視口中可見。
此例顯示效果地址:http://ycdoit.com/show/bootstrap-code-05.html (附《Bootstrap 實(shí)戰(zhàn)》的PDF文檔和源碼鏈接:http://xiazai.jb51.net/201610/yuanma/BootstrapSite(jb51.net).rar)
本例源碼下載:bootstrap-code-05.zip
如果大家還想深入學(xué)習(xí),可以點(diǎn)擊這里進(jìn)行學(xué)習(xí),再為大家附3個(gè)精彩的專題:
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- JS表格組件神器bootstrap table詳解(基礎(chǔ)版)
- bootstrap table 服務(wù)器端分頁例子分享
- JS組件Bootstrap實(shí)現(xiàn)彈出框和提示框效果代碼
- 基于Bootstrap+jQuery.validate實(shí)現(xiàn)Form表單驗(yàn)證
- Bootstrap樹形控件使用方法詳解
- JS組件Bootstrap Select2使用方法詳解
- JS組件Bootstrap Table使用方法詳解
- 頁面遮罩層,并且阻止頁面body滾動(dòng)。bootstrap模態(tài)框原理
- 使用jQuery和Bootstrap實(shí)現(xiàn)多層、自適應(yīng)模態(tài)窗口
- 值得分享的Bootstrap Ace模板實(shí)現(xiàn)菜單和Tab頁效果
相關(guān)文章
微信小程序獲取用戶手機(jī)號(hào)碼的詳細(xì)步驟
最近改了一個(gè)公司項(xiàng)目,新增加了一個(gè)獲取用戶手機(jī)號(hào)功能,里面用到了關(guān)于獲取用戶信息和用戶手機(jī)號(hào)的功能,下面這篇文章主要給大家介紹了關(guān)于微信小程序獲取用戶手機(jī)號(hào)碼的相關(guān)資料,需要的朋友可以參考下2022-07-07微信小程序 多行文本顯示...+顯示更多按鈕和收起更多按鈕功能
這篇文章主要介紹了微信小程序多行文本顯示...+顯示更多按鈕和收起更多按鈕,代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09jQuery 實(shí)現(xiàn)倒計(jì)時(shí)天,時(shí),分,秒功能
本文通過html代碼和js代碼給大家介紹了實(shí)現(xiàn)倒計(jì)時(shí)天,時(shí),分,秒功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-07-07BootStrap點(diǎn)擊下拉菜單項(xiàng)后顯示一個(gè)新的輸入框?qū)崿F(xiàn)代碼
這篇文章主要介紹了BootStrap點(diǎn)擊下拉菜單項(xiàng)后顯示一個(gè)新的輸入框?qū)崿F(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2016-05-05點(diǎn)擊button獲取text內(nèi)容并改變樣式的js實(shí)現(xiàn)
這篇文章主要介紹了點(diǎn)擊button獲取text內(nèi)容并改變樣式的js實(shí)現(xiàn),經(jīng)測試非常實(shí)用,需要的朋友可以參考下2014-09-09Bootstrap每天必學(xué)之輪播(Carousel)插件
Bootstrap每天必須之輪播(Carousel)插件,Bootstrap 輪播(Carousel)插件是一種靈活的響應(yīng)式的向站點(diǎn)添加滑塊的方式,感興趣的小伙伴們可以參考一下2016-04-04