2014-09-25 55 views
0

在我一直在努力的新設計中,有一個側邊欄,這意味着在使用桌面進行瀏覽時可以完全顯示。在移動設備上,菜單意味着被摺疊成一個按鈕,點擊後該按鈕應該展開。前功能似乎工作得很好,但後者不行;當你按下這個按鈕時,似乎什麼也沒有發生。響應式顯示/隱藏菜單故障

有人會介意幫助我研究這個問題並找出問題所在嗎?

function(window, document) { 
 

 
     var layout = document.getElementById('layout'), 
 
     f - menu = document.getElementById('f-menu'), 
 
     f - menuLink = document.getElementById('f-menuLink'); 
 

 
     function toggleClass(element, className) { 
 
     var classes = element.className.split(/\s+/), 
 
      length = classes.length, 
 
      i = 0; 
 

 
     for (; i < length; i++) { 
 
      if (classes[i] === className) { 
 
      classes.splice(i, 1); 
 
      break; 
 
      } 
 
     } 
 
     // The className is not found 
 
     if (length === classes.length) { 
 
      classes.push(className); 
 
     } 
 

 
     element.className = classes.join(' '); 
 
     } 
 

 
     f - menuLink.onclick = function(e) { 
 
     var active = 'active'; 
 

 
     e.preventDefault(); 
 
     toggleClass(layout, active); 
 
     toggleClass(f - menu, active); 
 
     toggleClass(f - menuLink, active); 
 
     }; 
 

 
    }(this, this.document));
body { 
 
     color: #777; 
 
    } 
 
    .pure-img-responsive { 
 
     max-width: 100%; 
 
     height: auto; 
 
    } 
 
    /* 
 
    Add transition to containers so they can push in and out. 
 
    */ 
 
    #layout, 
 
    #f-menu, 
 
    .f-menu-link { 
 
     -webkit-transition: all 0.2s ease-out; 
 
     -moz-transition: all 0.2s ease-out; 
 
     -ms-transition: all 0.2s ease-out; 
 
     -o-transition: all 0.2s ease-out; 
 
     transition: all 0.2s ease-out; 
 
    } 
 
    /* 
 
    This is the parent `<div>` that contains the menu and the content area. 
 
    */ 
 
    #layout { 
 
     position: relative; 
 
     padding-left: 0; 
 
    } 
 
    #layout.active { 
 
     position: relative; 
 
     left: 150px; 
 
    } 
 
    #layout.active #f-menu { 
 
     left: 150px; 
 
     width: 150px; 
 
    } 
 
    #layout.active .f-menu-link { 
 
     left: 150px; 
 
    } 
 
    /* 
 
    The content `<div>` is where all your content goes. 
 
    */ 
 
    .content { 
 
     margin: 0 auto; 
 
     padding: 0 2em; 
 
     max-width: 800px; 
 
     margin-bottom: 50px; 
 
     line-height: 1.6em; 
 
    } 
 
    .header { 
 
     margin: 0; 
 
     color: #333; 
 
     text-align: center; 
 
     padding: 2.5em 2em 0; 
 
     border-bottom: 1px solid #eee; 
 
    } 
 
    .header h1 { 
 
     margin: 0.2em 0; 
 
     font-size: 3em; 
 
     font-weight: 300; 
 
    } 
 
    .header h2 { 
 
     font-weight: 300; 
 
     color: #ccc; 
 
     padding: 0; 
 
     margin-top: 0; 
 
    } 
 
    .content-subhead { 
 
     margin: 50px 0 20px 0; 
 
     font-weight: 300; 
 
     color: #888; 
 
    } 
 
    /* 
 
    The `#f-menu` `<div>` is the parent `<div>` that contains the `.pure-menu` that 
 
    appears on the left side of the page. 
 
    */ 
 
    #f-menu { 
 
     margin-left: -150px; 
 
     /* "#f-menu" width */ 
 
     width: 150px; 
 
     position: fixed; 
 
     top: 0; 
 
     left: 0; 
 
     bottom: 0; 
 
     z-index: 1000; 
 
     /* so the menu or its navicon stays above all content */ 
 
     background: #191818; 
 
     overflow-y: auto; 
 
     -webkit-overflow-scrolling: touch; 
 
    } 
 
    /* 
 
     All anchors inside the menu should be styled like this. 
 
     */ 
 
    #f-menu a { 
 
     color: #999; 
 
     border: none; 
 
     padding: 0.6em 0 0.6em 0.6em; 
 
    } 
 
    /* 
 
     Remove all background/borders, since we are applying them to #f-menu. 
 
     */ 
 
    #f-menu .pure-menu, 
 
    #f-menu .pure-menu ul { 
 
     border: none; 
 
     background: transparent; 
 
    } 
 
    /* 
 
     Add that light border to separate items into groups. 
 
     */ 
 
    #f-menu .pure-menu ul, 
 
    #f-menu .pure-menu .f-menu-item-divided { 
 
     border-top: 1px solid #333; 
 
    } 
 
    /* 
 
      Change color of the anchor links on hover/focus. 
 
      */ 
 
    #f-menu .pure-menu li a:hover, 
 
    #f-menu .pure-menu li a:focus { 
 
     background: #333; 
 
    } 
 
    /* 
 
     This styles the selected menu item `<li>`. 
 
     */ 
 
    #f-menu .pure-menu-selected, 
 
    #f-menu .pure-menu-heading { 
 
     background: #2A759B; 
 
    } 
 
    /* 
 
      This styles a link within a selected menu item `<li>`. 
 
      */ 
 
    #f-menu .pure-menu-selected a { 
 
     color: #fff; 
 
    } 
 
    /* 
 
     This styles the menu heading. 
 
     */ 
 
    #f-menu .pure-menu-heading { 
 
     font-size: 110%; 
 
     color: #fff; 
 
     margin: 0; 
 
    } 
 
    /* -- Dynamic Button For Responsive Menu -------------------------------------*/ 
 
    /* 
 
    The button to open/close the Menu is custom-made and not part of Pure. Here's 
 
    how it works: 
 
    */ 
 
    /* 
 
    `.f-menu-link` represents the responsive menu toggle that shows/hides on 
 
    small screens. 
 
    */ 
 
    .f-menu-link { 
 
     position: fixed; 
 
     display: block; 
 
     /* show this only on small screens */ 
 
     top: 0; 
 
     left: 0; 
 
     /* "#f-menu width" */ 
 
     background: #000; 
 
     background: rgba(0, 0, 0, 0.7); 
 
     font-size: 10px; 
 
     /* change this value to increase/decrease button size */ 
 
     z-index: 10; 
 
     width: 2em; 
 
     height: auto; 
 
     padding: 2.1em 1.6em; 
 
    } 
 
    .f-menu-link:hover, 
 
    .f-menu-link:focus { 
 
     background: #000; 
 
    } 
 
    .f-menu-link span { 
 
     position: relative; 
 
     display: block; 
 
    } 
 
    .f-menu-link span, 
 
    .f-menu-link span:before, 
 
    .f-menu-link span:after { 
 
     background-color: #fff; 
 
     width: 100%; 
 
     height: 0.2em; 
 
    } 
 
    .f-menu-link span:before, 
 
    .f-menu-link span:after { 
 
     position: absolute; 
 
     margin-top: -0.6em; 
 
     content: " "; 
 
    } 
 
    .f-menu-link span:after { 
 
     margin-top: 0.6em; 
 
    } 
 
    /* -- Responsive Styles (Media Queries) ------------------------------------- */ 
 
    /* 
 
    Hides the menu at `48em`, but modify this based on your app's needs. 
 
    */ 
 
    @media (min-width: 48em) { 
 
     .header, 
 
     .content { 
 
     padding-left: 2em; 
 
     padding-right: 2em; 
 
     } 
 
     #layout { 
 
     padding-left: 150px; 
 
     /* left col width "#f-menu" */ 
 
     left: 0; 
 
     } 
 
     #f-menu { 
 
     left: 150px; 
 
     } 
 
     .f-menu-link { 
 
     position: fixed; 
 
     left: 150px; 
 
     display: none; 
 
     } 
 
     #layout.active .f-menu-link { 
 
     left: 150px; 
 
     } 
 
    }
<a href="#f-menu" id="f-menuLink" class="f-menu-link"> 
 
    <!-- Hamburger icon --> 
 
    <span></span> 
 
</a> 
 

 
<div id="f-menu"> 
 
    <div class="pure-menu pure-menu-open"> 
 
    <a class="pure-menu-heading" href="#">Community</a> 
 

 
    <ul> 
 
     <li><a href="#">Link 1</a> 
 
     </li> 
 
     <li><a href="#">Link 2</a> 
 
     </li> 
 
     <li><a href="#">Link 3</a> 
 
     </li> 
 
    </ul> 
 
    </div> 
 
</div> 
 

 
<div id="layout"> 
 
    Content goes here. 
 
</div>

+0

你的變量...做自己拋出異常?特別是'f-變量'? – Jack 2014-09-25 06:43:32

回答

0

我問在評論你的variables特別「做自己拋出異常?」

實際上他們做的:

SyntaxError: Unexpected token - 

的變量名是無效的。更新這些,你的JS將開始工作。下面是與更新後的變量名的小提琴:

http://jsfiddle.net/jpattishalljr/50jnq2hf/