编写代码,页面加载后div将水平向右移动,当移动到窗口最右侧后再次从窗口左侧开始向右移动并且在移动过程中div的背景颜色随机发生变化。 如何令div在水平移动过程中背景颜色随机发生变化并且所显示的内容为1~99之间的一个随机数?
时间: 2023-12-06 18:44:46 浏览: 92
可以使用JavaScript实现这个功能,以下是示例代码:
```html
<!DOCTYPE html>
<html>
<head>
<title>Div Moving and Changing Color</title>
<style>
#moving-div {
position: absolute;
top: 50%;
left: 0;
width: 100px;
height: 100px;
background-color: #FF0000;
color: #FFFFFF;
text-align: center;
line-height: 100px;
font-size: 24px;
font-weight: bold;
}
</style>
</head>
<body>
<div id="moving-div">1</div>
<script>
var div = document.getElementById("moving-div");
var color = "";
var direction = 1;
var num = 1;
function moveDiv() {
var left = parseInt(div.style.left) || 0;
var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
if (left >= width - 100) {
direction = -1;
color = getRandomColor();
num = Math.floor(Math.random() * 99) + 1;
div.innerHTML = num;
} else if (left <= 0) {
direction = 1;
color = getRandomColor();
num = Math.floor(Math.random() * 99) + 1;
div.innerHTML = num;
}
div.style.left = (left + direction) + "px";
div.style.backgroundColor = color;
}
function getRandomColor() {
var letters = "0123456789ABCDEF";
var color = "#";
for (var i = 0; i < 6; i++) {
color += letters[Math.floor(Math.random() * 16)];
}
return color;
}
setInterval(moveDiv, 10);
</script>
</body>
</html>
```
解释:
1. 在HTML中创建一个div元素,并设置id为"moving-div",初始显示内容为1。
2. 在CSS中设置该div的样式,包括位置、尺寸、背景颜色、字体样式等。
3. 在JavaScript中获取div元素,定义变量color(用于存储背景颜色)、direction(用于表示移动方向,1表示向右移动,-1表示向左移动)、num(用于存储显示的数字)。
4. 定义moveDiv函数,用于实现div的移动和背景颜色的变化。首先获取当前div的left值和窗口宽度,根据direction判断是否到达窗口边缘,如果到达则改变direction、color和num的值,并将num赋值给div的innerHTML。然后根据direction更新div的left值和背景颜色。
5. 定义getRandomColor函数,用于生成随机的十六进制颜色值。
6. 使用setInterval函数每10毫秒调用一次moveDiv函数,实现div的连续移动和颜色变化。
注意:此代码中的div元素是绝对定位的,如果页面中有其他元素也占用了该位置,可能会出现重叠或遮挡的问题。
阅读全文