簡體   English   中英

Javascript-如果窗口寬度<= 800px,則將活動鏈接移至導航頂部

[英]Javascript - Move active link to top of navigation if window-width <= 800px

我有一個響應式導航,該導航固定在頂部,如果屏幕尺寸<= 800 px寬,它會從水平變為垂直。

現在,如果屏幕尺寸<= 800 px寬,我嘗試將當前活動的鏈接移至導航頂部,但我似乎找不到辦法。

我嘗試使用Javascript,但由於單擊鏈接時頁面刷新或更改,因此它不會將當前活動的鏈接保持在頂部。

我試圖將循環放入if語句中,但是那行不通,所以我刪除了if語句。

如果有人可以幫助我解決這個問題,我將不勝感激。

這是Javascript:

/*------------------------move active link to top------------------------*/
function moveLink(){
var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
var list = document.getElementById('nav').childNodes;
for (var i = 0; i < list.length; i++) {
    list[i].addEventListener('click',function() 
    {nav.insertBefore(this, nav.childNodes[0])});
}
}

這是導航html:

<nav>
<ul id="nav" class="topNav">
    <li><a onclick="moveLink()" href="/">Placeholder1</a></li>
    <li><a onclick="moveLink()" href="Placeholder1.html">Placeholder1</a></li>
    <li><a onclick="moveLink()" href="Placeholder1.html">Placeholder1</a></li>
    <li><a onclick="moveLink()" class="active" href="licenses.html">Placeholder1 / FAQ</a></li>
    <li><a onclick="moveLink()" href="Placeholder1.html">Placeholder1</a></li>
    <li><a onclick="moveLink()" href="contact.php">Placeholder1</a></li>
    <li class="icon"><a href="javascript:void(0);" onclick="myFunction()">
    <img alt="open menu" src="graphics/menu.png" style="height: 30px; width: 30px;"></a>
    </li>
</ul>

我有兩個樣式表,菜單通過Javascript打開和關閉。

這是我的移動CSS:

/*------------------------navigation------------------------*/
.topNav {
z-index: 1;
list-style-type: none;
margin: 0 auto;
padding: 0;
overflow: hidden;
position: fixed;
top: 0;
width: 100%;
font-size: 0px;
background-color: rgba(0,0,0,0.8);
box-shadow: 0px 0px 8px 0px rgba(0,0,0,0.75);
}
.topNav li {
display: inline;
}
.topNav li a {
font-size: 12px;
display: inline-block;
color: #fff;
text-decoration: none;
transition: color 0.2s ease-in-out;
line-height: 38px;
padding: 0px 0px 0px 20px;
}
.topNav li a:hover {
color: #777;
}
.topNav li a.active {
color: #999;
}
/*------------------------responsive navigation closed------------------------*/
.topNav li:not(:first-child) {
display: none;
}
.topNav li.icon {
float: right;
display: inline-block;
height: 38px;
vertical-align: middle;
transition: opacity 0.2s ease-in-out;
margin: 4px 5px 0px 0px;
width: 30px;
height: 30px;
padding-right: 20px;
}
.icon:hover {
opacity: 0.5;
}
/*------------------------responsive navigation opened------------------------*/
.topNav.responsive {
position: fixed;
top: 0px;
}
.topNav.responsive li.icon {
margin: 0 0 0 0;
position: absolute;
top: 4px;
right: 25px;
width: 30px;
height: 30px;
padding-right: 0px;
z-index: 1;
}
.topNav.responsive li.icon:hover {
opacity: 0.5;
}
.topNav.responsive li {
float: none;
display: inline;
}
.topNav.responsive li a {
display: block;
}

預先感謝,肯

我認為您可以僅使用CSS使用flexbox和order屬性來執行此操作。

@media (max-width: 800px) {
  nav ul {
    display: flex;
    flex-direction: column;
  }
  .active {
    order: -1;
  }
}

order: -1確保列表項將移至該列的頂部。

我將active類移到li而不是a ,以使此工作更容易一些。

碼筆

片段

 body { font-family: sans-serif; } nav { background: grey; padding: 20px; } nav ul { list-style-type: none; } nav ul li { display: inline-block; margin-right: 8px; } nav ul li:last-child { margin-right: 0; } nav ul li a { text-decoration: none; color: white; } @media (max-width: 800px) { nav ul { display: flex; flex-direction: column; } .active { order: -1; } } 
 <nav> <ul id="nav" class="topNav"> <li><a onclick="moveLink()" href="/">BEATS</a></li> <li><a onclick="moveLink()" href="sounds.html">SOUNDS</a></li> <li><a onclick="moveLink()" href="services.html">SERVICES</a></li> <li class="active"><a onclick="moveLink()" href="licenses.html">LICENSES / FAQ</a></li> <li><a onclick="moveLink()" href="downloads.html">DOWNLOADS</a></li> <li><a onclick="moveLink()" href="contact.php">CONTACT</a></li> </ul> </nav> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM