購物車按鈕 這邊購物車的按鈕,你只要看上面範例的navbar的購物車按鈕部分就好。
首先,我們在navbar
裡面塞了一個購物車的按鈕, 這個按鈕有套用dropdown
的功能,我們就可以利用點選它跳出相對應的產品內容。
在購物車上方的數字,適用bootstrap中的badges
元件所製作出來的。 接著,我們需要將這個badge
的位置樣式改成postion:absolute
。 並在他的外層加上position:relative
。 並在badge
裡面設定相對的top
和right
來讓他在cart相對應的位置上。
購務車的dropdown
的內容 我們可以在dropdown-menu
的內容中加入表格、按鈕或相關的內容
購物車點選出來的dropdown-menu
內容超出頁面 在bootstrap中有提到,當dropdown-menu
的功能在navbar
中使用的時候, 官網的提示: Heads up! Dropdowns are positioned thanks to Popper (except when they are contained in a navbar).
它就不會自動去計算dropdown-menu
的區塊大小是否有超出頁面囉。 首先,先為你的.dropdown-menu加入.dropdown-menu-end 接著,我們要自己寫css樣式來為.dropdown-menu-end調整 寫下以下的內容: ex:
1 2 3 4 .dropdown-menu-end{ right:0; left: auto; }
此時,當我們點擊購物車按鈕,這個dropdown-menu就不會超出頁面囉。
jumbotron 當我們有大版面要用的話,就可以套入jumbotron
元件囉。 那這邊就為這個jumbotron
加入一張大圖,並利用background-size:cover;
和 background-position: center center;
來讓這張圖辨變清楚,並且置中。 ex:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 ---HTML--- <div class="jumbotron jumbotron-fluid jumbotron_bg"> <div class="container"> <h1 class="display-4">Fluid jumbotron</h1> <p class="lead">This is a modified jumbotron that occupies the entire horizontal space of its parent.</p> </div> </div> ---CSS--- .jumbotron_bg{ background-image: url("https://upload.cc/i1/2021/01/14/PMgNkr.jpg"); background-size:cover; background-position: center center; }
卡片式排版與 Grid System 整齊排版手法 我們可以利用格線系統,並在格線系統內加入card
元件, 如此一來就可以在當某一行的card
元素超過格線系統的佈局時,就換行,達成好看的排版。
card-body有自動延展的效果 我們在這邊會使用card
元件是因為card-body
會隨著內容的增加而延展他自己的高度,並不會去擠壓到在同一元件內,像是card-header
和card-footer
的高度,相當方便。 如果,你希望同一區域的card
的高度都一樣的話,為card
元件加上h-100
這個className,這樣就可以讓各個card
都對齊,儘管他們的內容多寡不同。
你可以看到右邊欄位的card
的高度都一樣,儘管他們的card-body
內容不一樣。 另外,就算上方的圖片大小不一樣,也一樣不會影響排版喔。
加上衣服尺寸的樣式使用btn-group 我們可以在上面的範例中的card-footer
取代掉原本的按鈕,加入btn-group
,來創出一個有sm, m, l大小的按鈕, ex:
1 2 3 4 5 <div class="btn-group btn-group-sm"> <a href="#" class="btn btn-outline-primary" aria-current="page">sm </a> <a href="#" class="btn btn-outline-primary disabled" >m</a> <a href="#" class="btn btn-outline-primary">L</a> </div>
而其中,我們有為其中的m的class加上disabled
,這可以讓該按鈕的樣式無法被點選,用來表示它賣完囉~
為card加上box-shadow的效果 ex:
1 2 3 4 5 6 7 8 ---CSS--- .box-shadow{ box-shadow:0 3px 5px rgba(0, 0, 0, 0.4); transition:box-shadow .3s; } .box-shadow:hover{ box-shadow:0 3px 5px rgba(0, 0, 0, 0.24); }
你為card加上這個box-show的class就有滑過去有陰影變換的效果囉。
利用list-group來變換頁面 ex:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <div class="row"> <div class="col-4"> <div class="list-group" id="list-tab" role="tablist"> <a class="list-group-item list-group-item-action active" id="list-home-list" data-bs-toggle="list" href="#list-home" role="tab" aria-controls="home">Home</a> <a class="list-group-item list-group-item-action" id="list-profile-list" data-bs-toggle="list" href="#list-profile" role="tab" aria-controls="profile">Profile</a> <a class="list-group-item list-group-item-action" id="list-messages-list" data-bs-toggle="list" href="#list-messages" role="tab" aria-controls="messages">Messages</a> <a class="list-group-item list-group-item-action" id="list-settings-list" data-bs-toggle="list" href="#list-settings" role="tab" aria-controls="settings">Settings</a> </div> </div> <div class="col-8"> <div class="tab-content" id="nav-tabContent"> <div class="tab-pane fade show active" id="list-home" role="tabpanel" aria-labelledby="list-home-list">...</div> <div class="tab-pane fade" id="list-profile" role="tabpanel" aria-labelledby="list-profile-list">...</div> <div class="tab-pane fade" id="list-messages" role="tabpanel" aria-labelledby="list-messages-list">...</div> <div class="tab-pane fade" id="list-settings" role="tabpanel" aria-labelledby="list-settings-list">...</div> </div> </div> </div>
這段比較單純,你叫按照bootstrap的官網提供的內容貼到你的專案中,並更改相對應的id
和href
值,如此應可達成變換頁面的效果了。
ex:
1 2 3 4 5 6 7 8 9 10 <div class="btn-group" role="group" aria-label="Basic radio toggle button group"> <input type="radio" class="btn-check" name="btnradio" id="btnradio1" autocomplete="off"> <label class="btn btn-outline-primary" for="btnradio1">Radio 1</label> <input type="radio" class="btn-check" name="btnradio" id="btnradio2" autocomplete="off" disabled> <label class="btn btn-outline-primary" for="btnradio2">Radio 2</label> <input type="radio" class="btn-check" name="btnradio" id="btnradio3" autocomplete="off"> <label class="btn btn-outline-primary" for="btnradio3">Radio 3</label> </div>
上面這個範例,是用label
和input
所構成的btn-group。 其中有一個input
被我們加入了disabled
,表示該選項不能被選擇。
但是,當使用者點到這個被disabled
的選項的時候,這個radio
會呈現空值的狀態, 所以,要避免這種狀況的話,我們要對他的css樣式,加入以下的內容。 記得,這是在用input
和label
構成的input-group才會有的問題喔。 ex:
1 2 3 4 ---CSS--- .btn .disabled{ pointer-events: none; }
接下來,你就為那個有disabled屬性的input欄位的className加入disabled,也就是你剛剛自己寫的部分, 如此,就可以避免點擊到disabled的input
選項時,造成該radio
為空值的問題囉。
使用 Alert 元件製作多步驟提示
以上這個範例我們是利用.form-row
來做這個格線系統,並搭配alert
元件來完成這個購買流程的效果。
收合購物車列表及表單排版技巧 在手機板的時候,防止客戶的選購產品太多會占頁面,故我們會用一個收合的效果,當他要開就打開,不要看就收起來,進而提升使用者體驗。
以上的範例,就是用card
元件的版,套進collapse
的效果,當你按下card-header
中的按鈕時,就會顯示出你的商品,若不要看就收闔起來。