真正的移動(dòng)友好的響應(yīng)菜單四要素
有數(shù)以百計(jì)的方法來創(chuàng)建響應(yīng)式導(dǎo)航,僅受限于你的創(chuàng)造力和CSS實(shí)現(xiàn)的界限是什么。良好的響應(yīng)式導(dǎo)航是有點(diǎn)困難–響應(yīng)菜單必須成為一個(gè)移動(dòng)的菜單,堅(jiān)持需求和觸摸驅(qū)動(dòng)裝置的規(guī)定。手機(jī)設(shè)計(jì)是快速變化的,所以技術(shù)也進(jìn)化。在這個(gè)教程中,你將學(xué)習(xí)哪些移動(dòng)友好的響應(yīng)菜單絕對(duì)需要現(xiàn)在和你如何解決一些常見的問題。
基礎(chǔ)知識(shí)
當(dāng)設(shè)計(jì)一個(gè)響應(yīng)的菜單,你必須首先考慮移動(dòng)狀態(tài),用戶將如何與它互動(dòng)。良好的移動(dòng)導(dǎo)航包含以下原則:
菜單切換很容易識(shí)別
所有的按鈕和鏈接,大到可以用指尖
提供反饋當(dāng)一個(gè)項(xiàng)目被竊聽
子仍然可以訪問
視覺效果是保持簡單
代碼使用的是跨瀏覽器兼容
例如,我將步行通過一個(gè)簡單的響應(yīng)菜單設(shè)計(jì),以水平菜單并將其轉(zhuǎn)換成了畫布菜單時(shí),屏幕尺寸是768像素以內(nèi),包括平板電腦和智能手機(jī)。然后我會(huì)告訴你如何處理轉(zhuǎn)換成一個(gè)更復(fù)雜的菜單,下拉菜單,偽元素和過渡到一個(gè)應(yīng)用程序風(fēng)格的移動(dòng)友好的垂直菜單。
每個(gè)菜單主要有四個(gè)部分:
元素用戶點(diǎn)擊進(jìn)入菜單,親切地稱為切換
菜單本身
當(dāng)轉(zhuǎn)換應(yīng)該發(fā)生
如何轉(zhuǎn)換發(fā)生
你還需要一個(gè)視口元標(biāo)簽在你的要保持平直,但希望你已經(jīng)知道:
<meta name=“視口”content=“寬度=設(shè)備寬度,初始規(guī)模= 1”>
從畫布菜單
雖然我們已經(jīng)看到了帆布抽屜的網(wǎng)頁設(shè)計(jì)已經(jīng)有一段時(shí)間了,谷歌的材料設(shè)計(jì)模式庫移動(dòng)設(shè)計(jì)的介紹目前由網(wǎng)頁設(shè)計(jì)師尋找堅(jiān)實(shí)的指導(dǎo)采用移動(dòng)第一網(wǎng)站。關(guān)閉畫布欄或菜單是谷歌推薦的方式移動(dòng)導(dǎo)航,因?yàn)樗c大多數(shù)設(shè)備和布局好。你不需要如果你不想遵守了菜單的設(shè)計(jì)指南,但可以在間距和行為上遵循它的建議。
在我們的例子中,菜單是由一個(gè)非常簡單的無序列表。
< UL ID =值>
<李class=“切換”>
<div class=“聚類”> < / DIV > < div class=“bar2”> < / DIV > < div class=“bar3”> < / DIV >
</李>
<李> < a href =”“>家</a> </李>
<李> < a href =”“>組合</a> </李>
<李> < a href =”“>博客</a> </李> <
李> < a href =”“>接觸</a> </李> <
/ UL >
一把帆布菜單滑動(dòng)和推動(dòng)布局的工作,你需要把所有的東西都在DIV。這DIV需要至少一個(gè)相對(duì)位置(所以我們絕對(duì)定位元素知道坐)和理想的過渡使其變流好。
容器。{
位置:相對(duì);
過渡:所有0.3s
1–菜單切換
這個(gè)菜單有更多的文本鏈接比可以舒舒服服地放在智能手機(jī)屏幕的水平,所以我們需要把它轉(zhuǎn)換成一個(gè)垂直菜單。讓我們的用戶體驗(yàn)更好,我們要給用戶一個(gè)菜單切換訪問此垂直菜單。而漢堡菜單快速脫離流行的桌面網(wǎng)站設(shè)計(jì),它仍然是移動(dòng)用戶識(shí)別最熟悉的界面元素。
我們可以讓自己的元素,在切換菜單之外,但這種實(shí)現(xiàn),將其置于菜單可以讓我們少寫CSS和jQuery來處理它的變化將導(dǎo)致更一致的顯示和行為在所有設(shè)備和移動(dòng)瀏覽器。
我選擇來創(chuàng)建這個(gè)圖標(biāo)的div元素,而不是使用一個(gè)圖標(biāo)字體或Unicode字符,因?yàn)樗鼘⑹刮覀兊膭?dòng)畫和轉(zhuǎn)換成X菜單打開時(shí)。這里是如何創(chuàng)建三條:
# NAV。撥動(dòng){
顯示:無;
位置:絕對(duì)的;
左:- 55px;
頂:0;
鼠標(biāo)指針;
背景:RGBA(0, 0, 0、0.6);
填充:15px 15px 10px;
}
#資產(chǎn)凈值。切換。bar1,
# NAV。切換。2,
# NAV。切換。bar3 {
寬度:25px;
我們不想讓漢堡在桌面布局可見,所以我們使用顯示:無;作為一個(gè)默認(rèn)的狀態(tài)。該按鈕位于左上方的帆布抽屜。一個(gè)常見的錯(cuò)誤是,在桌面的設(shè)計(jì)–過于復(fù)雜的方式去了解這方面的定位切換??偸菍?duì)的切換與控制元件。
這個(gè)高度和寬度由是切換襯墊,結(jié)束了在55px平方。蘋果iPhone人機(jī)界面指南推薦的最小目標(biāo)尺寸的嗎?44px?寬44px?個(gè)子高高的,而微軟的Windows Phone的用戶界面設(shè)計(jì)和交互指南建議至少34px觸摸目標(biāo)大小。Android使用DP在其設(shè)計(jì)的標(biāo)準(zhǔn)單元,推薦48dp可在大多數(shù)屏幕48px。我們保證我們55px覆蓋。
最后,該過渡在每一條處理的時(shí)間轉(zhuǎn)型我們將添加在竊聽或點(diǎn)擊。
2–菜單
這種特殊的菜單風(fēng)格非常簡單。重要的一點(diǎn)是用來設(shè)置每個(gè)列表項(xiàng)下另一個(gè)內(nèi)聯(lián)塊屬性,利用漂浮的首選方法。在下一節(jié)中,你會(huì)看到這些主要的聲明改變菜單的垂直。
# NAV {
文本對(duì)齊:中心;
保證金:0;
填充:15px 0;
寬度:100%;
}
# NAV李{
3–媒體查詢和點(diǎn)擊事件
這“媒體查詢采用封閉方式只有當(dāng)視圖是768px寬或更小,平板電腦和智能手機(jī)的典型尺寸。要查看完整的代碼演示上面的CSS標(biāo)簽。下面突出的重要一部分,從原來的風(fēng)格樣式的變化:
“媒體(最大寬度:768px){
。撥動(dòng){
顯示:塊;
}
# NAV {
寬度:230px;
高度:100%;
位置:絕對(duì)的;
頂:0;
右:- 230px;
}
# NAV李{
顯示:塊;
}
# NAV李:懸停,# NAV李:焦點(diǎn){
邊框顏色:透明;
背景:
首先我們改變顯示:無;我們的漢堡顯示:塊;所以,它是可見的。
接下來,我們改變寬度的資產(chǎn)凈值從100%到230px并給它一個(gè)高度100%,以前是在75px休息,基于導(dǎo)航鏈接字體大小和填充高度自適應(yīng)。
導(dǎo)航定位絕對(duì)使用負(fù)價(jià)值等于它的寬度是用來抵消容器230px向左移動(dòng),我們將在下一節(jié)。
讓我們的列表項(xiàng)堆疊水平,我們重置內(nèi)聯(lián)塊與塊。
最后,在保持移動(dòng)用戶的想法,我們需要添加一個(gè)焦點(diǎn)國家在各環(huán)節(jié)利用,作為在不影響觸摸屏。我們還添加了:hover狀態(tài)這個(gè)規(guī)則對(duì)于桌面用戶,可能是瀏覽器窗口大小。
我們要切換到打開菜單時(shí),它與觸摸設(shè)備點(diǎn)擊。我們也希望菜單滑動(dòng)和移動(dòng)內(nèi)容而非下拉或重疊。這有助于避免問題長菜單或widges掩蓋內(nèi)容,防止不必要的滾動(dòng)條和避免問題的菜單的內(nèi)容如閃光或帆布元素與較高的Z順序夾。
處理單擊動(dòng)作,我們將使用一個(gè)非常簡單的jQuery代碼段:
$(document)。準(zhǔn)備(function() {
$('切換'),點(diǎn)擊(function() {
$(' #資產(chǎn)凈值”)。toggleClass(打開的);
$('容器'),toggleClass('menu-open ');
});
;
這將會(huì)檢測點(diǎn)擊(或自來水)的切換和添加一個(gè)類開放到#資產(chǎn)凈值一類菜單打開在主容器包裝我們的布局。這些課程將使我們能夠申請(qǐng)將它綁在一起。記住添加jQuery庫你的項(xiàng)目工作!
4–行為
現(xiàn)在我們進(jìn)入如何使菜單表現(xiàn)很好CSS3轉(zhuǎn)換。我們剛剛添加一個(gè)jQuery代碼段,添加一個(gè)類菜單打開我們的容器DIV當(dāng)切換點(diǎn)。我們可以將這類左移與容器樣式規(guī)則翻譯(在它以外的絕對(duì)定位元素的一切)。我們使用一個(gè)負(fù)值移動(dòng)容器的左,因?yàn)椴藛问钦_的。
。container.menu-open {
變換:翻譯(- 230px,0);
改變我們的漢堡到X的開放類是用來設(shè)置組合旋轉(zhuǎn)和翻譯移動(dòng)bar1和三維直方圖成對(duì)角線,并隱藏2使用不透明度。你可以使用顯示:無打開(放)2,但它不會(huì)利用過渡效果,只是眨眼消失。
# nav.open。酒吧。bar1 {
變換:旋轉(zhuǎn)(45deg)翻譯(8 7px);
}
# nav.open。酒吧。2 {
不透明度:0;
}
# nav.open。酒吧。bar3 {
變換:旋轉(zhuǎn)(45度翻譯(7px,-)
這是轉(zhuǎn)換成了畫布的橫向菜單菜單使用媒體查詢的基礎(chǔ)知識(shí),以及使用jQuery來檢測點(diǎn)擊事件顯示。
在下面的這個(gè)例子中,我將向你展示一個(gè)更復(fù)雜的菜單和如何具體問題如下拉工作和如何使用jQuery檢測屏幕寬度。
多層次的手機(jī)菜單
我不會(huì)說這個(gè)菜單的設(shè)計(jì)–細(xì)節(jié)檢查在演示的代碼標(biāo)簽,看我如何使用布局和改變下拉作用高度值的一些基本的轉(zhuǎn)換flexbox。下面,我將重點(diǎn)放在如何將這些類多個(gè)頂級(jí)鏈接菜單,子菜單的多個(gè)層面,而需要以同樣的標(biāo)題元素標(biāo)志對(duì)齊。我們最需要的橫向菜單的行為和布局,在移動(dòng)設(shè)備上的變化,但視覺風(fēng)格保持一致。
這個(gè)菜單使用一些你已經(jīng)從過去的例子學(xué)到的技術(shù),如將漢堡菜單添加類jQuery控制行為。下面,我將重點(diǎn)放在特定的移動(dòng)菜單突出的主要區(qū)別。
在我們的資產(chǎn)凈值有三個(gè)主要元素,標(biāo)志,漢堡菜單,主菜單,從一個(gè)標(biāo)準(zhǔn)的無序列表創(chuàng)建。
<資產(chǎn)凈值ID = 'flexmenu”>
<div class=“標(biāo)志”>
< a href =”“> <h1>風(fēng)格</h1> </a>
< / DIV >
<divid=“手機(jī)肘”class=“按鈕”> < / DIV >
<UL id =“主菜單”>
<李>…</李> <
UL類”子菜單的“>
<李>…</李> <
/ UL >
<李>…</李>
…等
< / UL >
< /導(dǎo)航>
這是由我們的內(nèi)容的容器,我們想向下移動(dòng),當(dāng)移動(dòng)菜單切換開。像其他的菜單,這就需要我們添加一個(gè)相對(duì)的位置至少:
#main{
height: 100vh;
width: 100vw;
position: relative;
}
1 – Mobile Toggle
The toggle in this demo is a separate div outside of the main menu structure. We could do it the same way as the previous example, but menus generated by systems like WordPress don’t allow that, so giving it its own element in the markup is easier to deal with.
當(dāng)造型的切換,繼續(xù)推薦觸摸大小記在心里,并給它一個(gè)高Z指數(shù)確保它永遠(yuǎn)不會(huì)被掩蓋的內(nèi)容重疊。保持開關(guān)的地方,你也需要絕對(duì)的位置。由于我們的菜單會(huì)從切換擴(kuò)展,而不是從畫布,我們可以在這里使用正常值。
。按鈕{
背景:# 751cec;
寬度:60px;
高度:48px;
位置:絕對(duì)的;
右:0;
頂:0
切換本身是以類似的方式對(duì)我們最后的切換偽元素創(chuàng)建的,因此很容易轉(zhuǎn)換成X以后。
2–菜單
我們不需要做太多風(fēng)格的菜單的移動(dòng)狀態(tài),除了引起問題的橫向菜單復(fù)位方式。大多數(shù)的工作,進(jìn)場時(shí)應(yīng)對(duì)下拉。你總是可以迫使所有的子菜單將擴(kuò)大為默認(rèn),但這可能導(dǎo)致長期的菜單,滾動(dòng)–力本身的問題。最好是把他們變成手風(fēng)琴,擴(kuò)大當(dāng)抽頭。比較原始和移動(dòng)規(guī)則:
# flexmenu UL UL {
位置:絕對(duì)的;
左:- 9999px;
}
# flexmenu UL UL UL {
margin-left: 100%;
頂:0;
}
@媒體屏幕(最大寬度:768px){
# flexmenu UL UL,
# flexmenu UL UL UL {
位置:相對(duì);
左:0;
寬度:100%
在我們的子菜單風(fēng)格,下拉了絕對(duì)的位置“其母聯(lián)系下,和負(fù)值用于創(chuàng)建洗牌效應(yīng)當(dāng)它盤旋。三級(jí)菜單被推到100%的寬度其母用邊緣所以它彈出的權(quán)利。我們重新為手機(jī)版,子菜單就可以得出它的父。由于沒有徘徊,我們也不需要定位技巧。
3–媒體查詢和點(diǎn)擊事件
你已經(jīng)看到了媒體查詢用的房子我們的移動(dòng)菜單的風(fēng)格和重置,所以我會(huì)跳過jQuery吧。
在這里,我們使用jQuery做兩件事:檢測點(diǎn)擊添加CSS類,并檢測屏幕大小來確定類的刪除的情況下,頁面沒有加載之間的變化。
當(dāng)元素的按鈕班點(diǎn),一菜單打開添加類。如果再次單擊,類被刪除。
$(這)找到('按鈕),(聽到咔噠聲,函數(shù)(){
$(這)。toggleClass('menu-opened ');
VAR MainMenu =美元(這)。下一個(gè)('ul ');
如果(主菜單。hasclass(‘’)){
主菜單。slidetoggle()。removeClass(打開的);
這也增加了一個(gè)開放類是影響子元素,這是僅用于查詢下,雖然你可以使用CSS如果你想。
在這里,我們找到的所有實(shí)例鋰其次是UL,顯示子菜單的存在,并添加一個(gè)類有子這個(gè)子菜單UL。
所有項(xiàng)目的有子課堂上獲得一個(gè)下拉切換與類子菜單按鈕這是我們的風(fēng)格,“媒體查詢。
當(dāng)子菜單按鈕點(diǎn)擊,得到一類子菜單打開,和公開課是有兄弟姐妹和刪除slidetogglejQuery的動(dòng)畫添加。
這是什么創(chuàng)造了手風(fēng)琴的基本解剖,以及我們?nèi)绾喂芾磉@些元素的造型以最有效的方式,不寫每一噸不必要的CSS選擇器或單獨(dú)的單擊事件。
flexmenu。找到(李UL)。parent() .addClass('has-sub ');
subtoggle =函數(shù)(){
flexmenu。找到('。有子”)。在(“<跨度class=”子菜單按鈕“> < /跨度>”);
flexmenu。找到('。”子菜單按鈕),(聽到咔噠聲,函數(shù)(){
$(這)。toggleClass('submenu-opened ');
如果($(this),兄弟姐妹('ul”)。hasClass(‘’)){
$(這),兄弟姐妹('ul”removeClass)。(打開的)。slidetoggle();
} {
美元其他
(這),兄弟姐妹('ul”)。addClass(打開的)。slidetoggle();
;
最后,讓我們添加一個(gè)調(diào)整修復(fù)。這只是使事情發(fā)生我們需要他們?nèi)绻麨g覽器被調(diào)整的方式,在活動(dòng)方式和查詢移動(dòng)視圖依賴沒有正確觸發(fā)。
resizefix =函數(shù)(){ var
mediasize = 768;
如果($(窗口)。width() > mediasize){
flexmenu。發(fā)現(xiàn)('ul”)。show();
}
如果($(窗口)。width() <= mediasize){
flexmenu找到('ul。”)。hide()。removeClass(打開的);
}
};
resizefix();
返回$(;
4 - Behavior
菜單上的最后涉及到改造切換,和菜單上滑下來。
首先我們將利用這菜單打開了。類添加到我們的按鈕通過單擊切換jQuery添加一些風(fēng)格的變化和轉(zhuǎn)型到旋轉(zhuǎn)酒吧為X:
。按鈕。菜單打開:
過渡后{:所有的s緩解;
頂:23px;
邊境:0;
高度:2px;
寬度:19px;
背景:# FFF;
變換:旋轉(zhuǎn)(45deg);
}
按鈕。。菜單打開:在{
頂:23px;
背景:
這個(gè)過渡負(fù)責(zé)制定國家之間的變化顯得光滑。在這里可以了解更多的關(guān)于轉(zhuǎn)換。
是這么回事!菜單是塊元素,所以它自然會(huì)推動(dòng)內(nèi)容容器下。
結(jié)論
只要你用手機(jī)導(dǎo)航的基本知識(shí),你的響應(yīng)菜單-確保鏈接和切換響應(yīng)水龍頭,足夠大,足夠簡單,轉(zhuǎn)換工作在大多數(shù)移動(dòng)設(shè)備和瀏覽器,你不應(yīng)該遇到很多問題。
反應(yīng)是一種特殊的藝術(shù),需要大量的用戶行為的理解和研究,CSS單位和總體設(shè)計(jì),但是了解如何您可以將菜單和工具,幫助你最會(huì)讓你對(duì)你的方式來建立自己的實(shí)現(xiàn),適合您的項(xiàng)目的最佳。下面是一些資源進(jìn)入這里所使用的技術(shù)的更多細(xì)節(jié),并在那里你可以找到更棒的例子。