3
05/11/2024 7:25 下午
主题启动器
Write a JS program that detects and displays how far along a gradient the user has moved their mouse on a webpage. Use the provided HTML and stylesheet (CSS) to test locally. The resulting value should be rounded down and displayed as a percentage inside the <div> with ID "result".
Input/Output:
There will be no input/output, your program should instead modify the DOM of the given HTML document.
Sample HTML:
<html>
<head>
<title>Mouse in Gradient</title>
<link rel="stylesheet" href="gradient.css" />
<script src="gradient.js"></script>
</head>
<body onload="attachGradientEvents()">
<div id="gradient-box">
<div id="gradient">Click me!</div>
</div>
<div id="result"></div>
</body>
</html>
CSS:
#gradient-box {
width: 300px;
border: 2px solid lightgrey;
}
#gradient-box:hover {
border: 2px solid black;
}
#gradient {
height: 30px;
color: white;
text-shadow: 1px 1px 10px black;
text-align: center;
line-height: 30px;
background: linear-gradient(to right, black, white);
cursor: crosshair;
}
Examples:

1 答案
2
05/11/2024 7:27 下午
My solution:
HTML file:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Mouse in Gradient</title>
<link rel="stylesheet" href="gradient.css"/>
<script src="gradient.js"></script>
</head>
<body onload="attachGradientEvents()">
<div id="gradient-box">
<div id="gradient">Click me!</div>
</div>
<div id="result"></div>
</body>
</html>
CSS file (gradient.css):
#gradient-box {
width: 300px;
border: 2px solid lightgrey;
}
#gradient-box:hover {
border: 2px solid black;
}
#gradient {
height: 30px;
color: white;
text-shadow: 1px 1px 10px black;
text-align: center;
line-height: 30px;
background: linear-gradient(
to right, black, white);
cursor: crosshair;
}
JavaScript file (gradient.js):
function attachGradientEvents() {
let gradient = document.getElementById('gradient');
gradient.addEventListener('mousemove', gradientMove);
gradient.addEventListener('mouseout', gradientOut);
function gradientMove(event) {
let power = event.offsetX / (event.target.clientWidth - 1);
power = Math.trunc(power * 100);
document.getElementById('result').textContent = power + "%";
}
function gradientOut(event) {
document.getElementById('result').textContent = "";
}
};
