基本上,我有一个带有导航项的
- 元素的
只需使用 CSS...
nav > ul > li a:hover {
color: red;
}
<nav>
<ul>
<li><a href="home.html">Home </a></li>
<li><a href="about.html"> About </a></li>
<li><a href="experience.html"> Experience </a></li>
<li><a href="contact.html"> Contact </a></li>
</ul>
</nav>
在JS中这样做是愚蠢的,但如果你有某些原因必须这样做,那么有两种主要方法:
[].forEach.call(document.querySelectorAll('nav > ul > li a'), function (link) {
link.addEventListener('mouseover', coloringHandler);
link.addEventListener('mouseout', decoloringHandler);
});
function coloringHandler() {
this.dataset.initialInlineColor = this.style.color;
this.style.color = 'red';
}
function decoloringHandler() {
this.style.color = this.dataset.initialInlineColor;
}
<nav>
<ul>
<li><a href="home.html">Home </a></li>
<li><a href="about.html"> About </a></li>
<li><a href="experience.html"> Experience </a></li>
<li><a href="contact.html"> Contact </a></li>
</ul>
</nav>
var nav = document.querySelector('nav');
nav.addEventListener('mouseover', withLinkEl(coloringHandler));
nav.addEventListener('mouseout', withLinkEl(decoloringHandler));
function coloringHandler() {
this.dataset.initialInlineColor = this.style.color;
this.style.color = 'red';
}
function decoloringHandler() {
this.style.color = this.dataset.initialInlineColor;
}
function withLinkEl(fn) {
return function (e) {
if (e.target.tagName !== 'A') return;
fn.call(e.target);
};
}
<nav>
<ul>
<li><a href="home.html">Home </a></li>
<li><a href="about.html"> About </a></li>
<li><a href="experience.html"> Experience </a></li>
<li><a href="contact.html"> Contact </a></li>
</ul>
</nav>
这里是使用JavaScript的代码:https://jsfiddle.net/5egjjv91/
<nav>
<ul>
<li onmouseover="changeTo(this)" onmouseout="changeBack(this)"><a href="home.html">Home </a></li>
<li onmouseover="changeTo(this)" onmouseout="changeBack(this)"><a href="about.html"> About </a></li>
<li onmouseover="changeTo(this)" onmouseout="changeBack(this)"><a href="experience.html"> Experience </a></li>
<li onmouseover="changeTo(this)" onmouseout="changeBack(this)"><a href="contact.html"> Contact </a></li>
</ul>
</nav>
<script>
function changeTo(x) {
x.style.backgroundColor = "red";
}
function changeBack(x) {
x.style.backgroundColor = "white";
}
</script>