2016-11-17 150 views
0

我一直在嘗試構建響應式導航欄。我正在使用包含<img><ul>元素的<nav>元素。我設置了媒體查詢,以便在屏幕調整大小時,某些<li>元素被display: none屬性隱藏。當我點擊菜單圖標時發生問題。它應該顯示隱藏的菜單項,但它沒有。 有人請看看fiddle並告訴我我做錯了什麼? 在此先感謝。響應式導航欄的問題

更新:
對不起,我還在學習繩索。如果我做了不正確的事情,而不是立即降低我的表現,你能否給我說明一下?謝謝。
這裏是我的代碼:

function myFunction() { 
 
    var x = document.getElementById("myNav"); 
 
    if (x.className === "nav") { 
 
     x.className += " responsive"; 
 
    } else { 
 
     x.className = "nav"; 
 
    } 
 
} 
 
    
 
body { 
 
    background-image: url("home/pexels-photo-4.jpg"); 
 
    background-repeat: no-repeat; 
 
    background-size: cover;  
 
    background-attachment: fixed; 
 
} 
 

 
.header { 
 
    background-color: rgba(0,0,0,0.6);  
 
} 
 

 
.logo { 
 
    width: 150px; 
 
    height: 110px; 
 
    margin-left: 50px; 
 
} 
 

 
.nav { 
 
    float: right; 
 
    padding-top: 50px; 
 
    margin-right: 50px; 
 
} 
 

 
.nav li { 
 
    float: left; 
 
    padding: 0 10px; 
 
} 
 

 
.nav li a { 
 
    color: #fff; 
 
    text-decoration: none; 
 
    font-family: "Raleway"; 
 
    font-size: 16px; 
 
    font-weight: 600; 
 
} 
 

 
ul.nav li a:hover, 
 
ul.nav li a:focus { 
 
    background-color: transparent; 
 
    color:#fff; 
 
} 
 

 
ul.nav a:hover:before, 
 
ul.nav li a:focus:before { 
 
    width:100%; 
 
    background:#fff; 
 
} 
 

 
ul.nav a:before { 
 
    content:''; 
 
    height:2px; 
 
    width:0; 
 
    position:absolute; 
 
    top:auto; 
 
    right:auto; 
 
    bottom:0; 
 
    left:50%; 
 
    -webkit-transform:translate3d(-50%,0,0); 
 
    transform:translate3d(-50%,0,0); 
 
    -webkit-transition:.4s; 
 
    transition: .4s; 
 
} 
 

 
.nav li.icon { 
 
    display: none; 
 
} 
 

 
@media screen and (max-width:765px) { 
 

 
    .nav li:not(:first-child) { 
 
     display: none; 
 
    } 
 
    .nav li.icon { 
 
     float: right; 
 
     display: inline-block; 
 
    } 
 
} 
 

 
@media screen and (max-width:765px) { 
 
    ul.nav .responsive { 
 
     position: relative; 
 
    } 
 
    ul.nav .responsive li.icon { 
 
     position: absolute; 
 
     right: 0; 
 
     top: 0; 
 
    } 
 
    ul.nav .responsive li { 
 
     float: none; 
 
     display: inline; 
 
    } 
 
    ul.nav .responsive li a { 
 
     display: block; 
 
     text-align: left; 
 
    } 
 
} 
 

 
@media screen and (max-width: 500px) { 
 
    .nav { 
 
     padding-top: 20px; 
 
    } 
 
    .nav li a { 
 
     font-size: 14px; 
 
    } 
 

 
    .logo { 
 
     margin: 0; 
 
     width: 110px; 
 
     height: 70px; 
 
    } 
 
}
<nav class="header"> 
 
    <img class="logo" src="images/logos/marcon logo white on trans copy 2.png">   
 
    <ul class="nav" id="myNav"> 
 
    <li><a href="#"><span class="glyphicon glyphicon-home" aria-label="Home"></span></a></li> 
 
    <li><a href="#">About</a></li> 
 
    <li><a href="#">Portfolio</a></li> 
 
    <li><a href="#">Contact</a></li> 
 
    <li class="icon"> 
 
     <a href="#" onclick="myFunction()">&#9776;</a> 
 
    </li> 
 
    </ul> 
 
</nav>

+2

您需要向我們顯示您的代碼。 –

+0

我附上了小提琴的鏈接。 – Crankeedoodledoo

+1

尋求調試幫助的問題(「**爲什麼不是這個代碼工作?**」)必須包含 期望的行爲,特定的問題或錯誤以及必要的最短代碼 在問題本身**中重現它** 。沒有明確問題 聲明**的問題對其他讀者無用。請參閱:[如何創建最小,完成和可驗證示例](http://stackoverflow.com/help/mcve)。 – j08691

回答

1

問題出在CSS。你寫

ul.nav .responsive li 

但因爲你的函數給出了「迴應」類的ul元素的「導航」類,你需要擺脫空間的聲明,它是ul元素與兩個「導航「和」響應「類:

ul.nav.responsive li 
+0

謝謝,這使'li'項目顯示。現在我需要弄清楚如何在它們周圍製作「nav」包裝。 – Crankeedoodledoo

+0

附加信息:在codepen.io上嘗試您的代碼並擺脫正文,鏈接和腳本標記。出於某種原因,jsfiddle一直說myFunction()沒有被聲明。通過將編輯器更改爲codepen解決了這個問題。 – TomasB

+0

@Crankeedoodledoo然後請標記這是一個正確的答案。謝謝 – TomasB

-1

對於初學者來說你有你的HTML中的一個額外的結束標記。我會添加一個事件監聽器來定位您的徽標點擊,然後添加函數toggleBody,它允許您在單擊徽標時打開和關閉導航。您的問題含糊不清,但我明白的是,您希望在點擊徽標時發生此事件。

document.getElementsByClassName('logo').addEvenetListener('click', toggleBoy) 
     function toggleBody() { 
     var showElements = this.querySelectorAll('.nav')[0]; 
      if(showElements.style.display === 'none') { 
       showElements.style.display = 'block'; 
      }else{ 
       showElements.style.display = 'none'; 
      } 
+1

試圖評論,但看到我有50分以下我不能@tib – JoshuaSlee

+0

OP已經有他的功能連接到菜單,雖然使用「onclick」HTML屬性和功能正常工作。 – Tibrogargan