5 回答

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊
我認(rèn)為你可以實(shí)現(xiàn)這個(gè)保存當(dāng)前項(xiàng)目:
const menulink = document.querySelectorAll('.menu h6');
let current = null;
for(let item of menulink) {
item.onclick = () => {
if (current) current.style.opacity = '0'
current = item.querySelector('hr')
current.style.opacity = '1'
}
}
hr {
opacity: 0;
}
<div class="menu">
<h6>Home<hr/></h6>
<h6>Movies<hr/></h6>
<h6>TV Shows<hr/></h6>
<h6>Documentaries<hr/></h6>
<h6>Favorites<hr/></h6>
<h6>Collection<hr/></h6>
</div>

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊
看哪!
const menulink = document.querySelectorAll('.menu h6')
let activeHr;
for(let item of menulink) {
item.onclick = (event) => {
if (activeHr) {
activeHr.style.opacity = '0';
}
activeHr = event.currentTarget.querySelector('hr');
activeHr.style.opacity = '1';
}
}
hr {
opacity: 0;
}
<div class="menu">
<h6>Home<hr/></h6>
<h6>Movies<hr/></h6>
<h6>TV Shows<hr/></h6>
<h6>Documentaries<hr/></h6>
<h6>Favorites<hr/></h6>
<h6>Collection<hr/></h6>
</div>

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊
以上所有答案都試圖使您的代碼正常工作-而不是考慮最好的 html 和 CSS-不需要使用 hr-您只需要在元素上設(shè)置活動(dòng)類并讓 CSS 應(yīng)用邊框底部給它。
這樣標(biāo)題就不會(huì)在點(diǎn)擊時(shí)跳轉(zhuǎn)——我在每個(gè) h6 下添加了一個(gè)透明邊框,然后當(dāng)你點(diǎn)擊它時(shí)應(yīng)用活動(dòng)類,樣式只是為底部邊框著色。
您不應(yīng)出于樣式目的使用 html 元素 (hr/) - IMO。
我也不同意在這里使用 h6——這些 o 似乎不是標(biāo)題……但我把它留了下來(lái),以防代碼比你顯示的更多——例如,如果它們是頁(yè)面下方的標(biāo)題——但是常規(guī)導(dǎo)航列表在這里似乎更合適。
感謝@Barmar 提供了我使用的代碼框架,我同意他使用活動(dòng)類的方法。請(qǐng)注意,我正在使用空檢查來(lái)刪除現(xiàn)有的活動(dòng)類 - 盡管可以通過(guò)簡(jiǎn)單地將第一個(gè)標(biāo)題從一開(kāi)始就設(shè)置為活動(dòng)來(lái)緩解這種情況。
const menuLinks = document.querySelectorAll('.menu h6')
for (let menuLink of menuLinks) {
menuLink.onclick = () => {
document.querySelector('.menu h6.active')?.classList.remove('active');
menuLink.classList.add('active');
}
}
.menu h6 {
padding-bottom: 2px;
border-bottom: solid 1px transparent;
transition: all 0.2s ease-in-out
}
.menu h6.active {
border-bottom-color: #000
}
.menu h6:hover {
border-bottom-color: #000;
transition: all 0.25s ease-in-out
}
<div class="menu">
<h6>Home</h6>
<h6>Movies</h6>
<h6>TV Shows</h6>
<h6>Documentaries</h6>
<h6>Favorites</h6>
<h6>Collection</h6>
</div>

TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以在設(shè)置標(biāo)題標(biāo)簽樣式時(shí)使用懸停選項(xiàng)。在懸停中,您可以添加您選擇的顏色,這樣每當(dāng)您將鼠標(biāo)懸停在它上面時(shí),顏色就會(huì)改變

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊
不要直接設(shè)置樣式,通過(guò) CSS 類的樣式來(lái)設(shè)置。然后你可以找到當(dāng)前有類的元素并刪除它,同時(shí)將類添加到新選擇的元素。
const menulink = document.querySelectorAll('.menu h6')
for (let item of menulink) {
item.onclick = () => {
let old = document.querySelector('.menu h6 hr.active');
if (old) {
old.classList.remove("active");
}
item.querySelector('hr').classList.add("active");
}
}
.menu h6 hr.active {
opacity: 1;
}
.menu h6 hr {
opacity: 0;
}
<div class="menu">
<h6>Home
<hr/>
</h6>
<h6>Movies
<hr/>
</h6>
<h6>TV Shows
<hr/>
</h6>
<h6>Documentaries
<hr/>
</h6>
<h6>Favorites
<hr/>
</h6>
<h6>Collection
<hr/>
</h6>
</div>
添加回答
舉報(bào)