这段文本包含几个问题的解答及一个修正后的代码示例:
问题一:
当设置 img
元素的 height
和 width
都为 100%
时,仅改变其中一个值不会产生效果。你需要设定其中一个属性值,并确保图像随着该属性值的变化而动态缩放。在提供的代码中,只设置了宽度为百分比,高度没有提及,因此假设是保持自动适应。
问题二:
不要使用变量(如 isOnDiv
)来维持鼠标悬停状态。应分别使用 mouseenter
和 mouseleave
事件处理器开始和结束定时器。
修正后的代码示例:
当文档加载完成后,脚本创建了一个 img
元素并将其附加到 footer
下的 div
元素内。img
图像的宽度被设置为 100%
,以适应其容器宽度。同时,添加了鼠标悬停和离开事件监听器来控制图片大小变化的动画效果。当鼠标进入 div
时,启动一个定时器每秒减小图片宽度5%,直到宽度降至0为止;当鼠标离开时,清除定时器并将宽度恢复至100%。此外,还添加了一个点击事件监听器,用于清除定时器并移除图片元素。
以下是上述修改后代码的中文翻译版本:
document.addEventListener("DOMContentLoaded", (event) => {
const footerElement = document.querySelector("footer");
const divElement = footerElement.querySelector("div");
const imgElement = document.createElement("img");
imgElement.src = "https://www.coding-academy.fr/wp-content/uploads/2017/10/CODING_LOGO_CMJN.png";
imgElement.style.width = "100%";
divElement.appendChild(imgElement);
let currentWidth = 100;
let intervalIdentifier;
const setSizeOfImage = (value) => imgElement.style.width = value + "%";
divElement.addEventListener("mouseenter", () => {
intervalIdentifier = setInterval(() => {
currentWidth -= 5;
setSizeOfImage(currentWidth);
if (currentWidth <= 0) {
clearInterval(intervalIdentifier);
}
}, 1000);
});
divElement.addEventListener('mouseleave', () => {
clearInterval(intervalIdentifier);
currentWidth = 100;
setSizeOfImage(currentWidth);
});
divElement.addEventListener("click", function() {
clearInterval(intervalIdentifier);
divElement.removeChild(imgElement);
});
});
// HTML 部分
<!-- 尾部区域 -->
<footer>
<div></div>
</footer>