使用CSS和HTML5的position属性,结合hover伪类选择器,实现悬浮球效果。
如何用HTML5制作悬浮球

1、创建HTML文件
创建一个HTML文件,可以使用任何文本编辑器(如Notepad++、Sublime Text等)来创建该文件,在文件中输入以下代码:
<!DOCTYPE html>
<html>
<head>
<title>悬浮球</title>
<style>
/* 样式部分 */
</style>
</head>
<body>
<!-- 悬浮球内容 -->
</body>
</html>
2、添加CSS样式
在<style>标签中添加CSS样式,用于定义悬浮球的外观和位置,以下是一个简单的示例:
.ball {
position: absolute; /* 绝对定位 */
width: 50px; /* 球的宽度 */
height: 50px; /* 球的高度 */
background-color: #f00; /* 球的背景颜色 */
border-radius: 50%; /* 球的圆角 */
}
3、创建悬浮球元素
在<body>标签中添加一个<div>元素,并为其添加类名"ball",以应用上面定义的样式,使用JavaScript控制该元素的位置和行为,以下是一个简单的示例:
<div class="ball"></div>
4、添加JavaScript代码
在<body>标签底部添加一个<script>标签,并编写JavaScript代码来控制悬浮球的行为,以下是一个简单的示例:
<script>
var ball = document.querySelector('.ball'); // 获取悬浮球元素
var xPos = 0; // X轴位置变量
var yPos = 0; // Y轴位置变量
var speed = 2; // 移动速度变量
var intervalId; // 计时器ID变量
var isMovingRight = true; // 是否向右移动的标志变量
var isMovingDown = false; // 是否向下移动的标志变量
var isMovingUp = false; // 是否向上移动的标志变量
var isMovingLeft = false; // 是否向左移动的标志变量
var mouseX = 0; // 鼠标X轴位置变量
var mouseY = 0; // 鼠标Y轴位置变量
var maxX = window.innerWidth - ball.offsetWidth; // 悬浮球最大X轴位置变量
var maxY = window.innerHeight - ball.offsetHeight; // 悬浮球最大Y轴位置变量
var minX = 0; // 悬浮球最小X轴位置变量
var minY = 0; // 悬浮球最小Y轴位置变量
var timerInterval = 10; // 计时器间隔时间变量(毫秒)
var moveInterval = timerInterval / speed; // 根据速度计算移动间隔时间变量(毫秒)
var bounceInterval = timerInterval / (speed * speed); // 根据速度计算反弹间隔时间变量(毫秒)
var bounceFactor = 0.8; // 反弹因子变量,用于控制反弹幅度的大小(范围为0到1)
var gravityFactor = 1; // 重力因子变量,用于控制重力效果的大小(范围为0到1)
var frictionFactor = 0.98; // 摩擦力因子变量,用于控制悬浮球的减速效果(范围为0到1)
function moveBall() {
if (isMovingRight && xPos < maxX) {
xPos += moveInterval; // 如果向右移动且未到达边界,则更新X轴位置并向右移动悬浮球
} else if (isMovingLeft && xPos > minX) {
xPos -= moveInterval; // 如果向左移动且未到达边界,则更新X轴位置并向左移动悬浮球
} else if (!isMovingRight && xPos > minX) { // 如果不再向右移动且已到达边界,则切换方向并更新X轴位置和标志变量的值
isMovingRight = true;
isMovingLeft = false;
xPos -= moveInterval;
} else if (!isMovingLeft && xPos < maxX) { // 如果不再向左移动且未到达边界,则切换方向并更新X轴位置和标志变量的值
isMovingRight = false;
isMovingLeft = true;
xPos += moveInterval;
} else if (isMovingDown && yPos < maxY) { // 如果向下移动且未到达边界,则更新Y轴位置并向下移动悬浮球
yPos += moveInterval * gravityFactor; // 根据重力因子调整下移速度,模拟重力效果的影响(可选)
} else if (isMovingUp && yPos > minY) { // 如果向上移动且未到达边界,则更新Y轴位置并向上移动悬浮球(可选)