在标题上绑定双击事件,每一次双击标题时标题放大4px,在双击3次后解除绑定;在诗词第一行上使用one()函数绑定单击事件,单击时设置整个诗词正文字号设为24PX;在诗词最一后行上设置hover()函数,鼠标进入时页面背景设为浅蓝色(颜色自定义),鼠标离开时设置背景为浅绿色(颜色自定义);在页面空白处使用toggle()函数,单击时诗词正文在三种颜色之间切换。
时间: 2023-11-28 07:51:31 浏览: 100
jquery鼠标双击事件拖拽图片
以下是实现该需求的示例代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>双击、单击、hover、toggle示例</title>
<style>
body {
background-color: #fff;
color: #333;
font-size: 16px;
}
h1 {
font-size: 24px;
cursor: pointer;
transition: font-size 0.3s ease-in-out;
}
.poem {
font-size: 16px;
line-height: 1.5;
margin-top: 20px;
}
.poem:hover {
background-color: #b0e0e6;
}
.poem:last-of-type:hover {
background-color: #90ee90;
}
.color1 {
color: #f00;
}
.color2 {
color: #0f0;
}
.color3 {
color: #00f;
}
</style>
</head>
<body>
<h1 ondblclick="enlargeTitle()">双击我放大</h1>
<div class="poem">
<div class="line" onclick="setFontSize()">静夜思</div>
<div class="line">床前明月光,</div>
<div class="line">疑是地上霜。</div>
<div class="line">举头望明月,</div>
<div class="line">低头思故乡。</div>
</div>
<script>
var title = document.querySelector('h1');
var poem = document.querySelector('.poem');
var lines = document.querySelectorAll('.line');
var colors = ['color1', 'color2', 'color3'];
var colorIndex = 0;
var hoverColor = '#b0e0e6';
var leaveColor = '#90ee90';
function enlargeTitle() {
title.style.fontSize = parseInt(getComputedStyle(title).fontSize) + 4 + 'px';
title.removeEventListener('dblclick', enlargeTitle);
title.addEventListener('dblclick', function() {
colorIndex = 0;
title.style.fontSize = '24px';
title.removeEventListener('dblclick', enlargeTitle);
});
}
function setFontSize() {
poem.style.fontSize = '24px';
lines[0].removeEventListener('click', setFontSize);
lines[0].addEventListener('click', function() {
colorIndex = 0;
poem.style.fontSize = '16px';
lines[0].removeEventListener('click', setFontSize);
});
}
poem.addEventListener('mouseenter', function() {
poem.style.backgroundColor = hoverColor;
});
poem.addEventListener('mouseleave', function() {
poem.style.backgroundColor = leaveColor;
});
document.body.addEventListener('click', function() {
colorIndex = (colorIndex + 1) % 3;
poem.classList.remove(colors[(colorIndex + 2) % 3]);
poem.classList.add(colors[colorIndex]);
});
</script>
</body>
</html>
```
在上述代码中,我们使用了以下 DOM API 或事件:
- `document.querySelector()`:获取第一个匹配选择器的元素。
- `document.querySelectorAll()`:获取所有匹配选择器的元素。
- `Element.addEventListener()`:为元素添加事件监听器。
- `Element.removeEventListener()`:移除元素的事件监听器。
- `Event.target`:获取事件的目标元素。
- `Event.preventDefault()`:阻止默认事件行为。
- `Element.classList`:获取元素的类名列表。
- `Element.style`:获取或设置元素的样式。
- `window.getComputedStyle()`:获取元素的计算样式。
- `setTimeout()`:在一定时间后执行函数。
在代码中,我们首先获取了需要操作的元素,然后分别为它们绑定了不同的事件处理函数。在双击标题时,我们使用了 `getComputedStyle()` 获取当前的字体大小,然后将其转化为数字格式并加上 4px,设置为新的字体大小。在三次双击后,我们使用 `removeEventListener()` 移除该事件的监听器,并重新添加一个只会将字体大小设为 24px 的监听器。在单击第一行时,我们使用了 `removeEventListener()` 移除该事件的监听器,并重新添加一个只会将整个诗词正文字号设为 24px 的监听器。在鼠标进入诗词区域时,我们使用了 `addEventListener()` 添加了一个处理 `mouseenter` 事件的监听器,并在其中修改了背景颜色。在鼠标离开时,我们添加了一个处理 `mouseleave` 事件的监听器,并在其中将背景颜色设置为另一种颜色。在页面空白处单击时,我们使用了 `classList` 获取诗词元素的类名列表,并通过模运算切换了它们之间的顺序。
阅读全文