目录

manifest.json
{
    "manifest_version": 3,
    "name": "Floating Ball",
    "version": "1.0",
    "description": "A floating ball on the right side of the webpage.",
    "permissions": ["activeTab"],
    "action": {
      "default_popup": "popup.html",
      "default_icon": {
        "16": "1.jpg"
      }
    },
    "content_scripts": [
      {
        "matches": ["<all_urls>"],
        "js": ["content.js"]
      }
    ]
  }
  popup.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>小宠物插件</title>
    <style>
        #root {
            width: 200px;
        }
    </style>
</head>
<body>
    <div id="root">
        <div>悬浮球插件</div>
        <div>Copyright (c) 2024, Qvfan</div>
    </div>
</body>
</html>content.js
const floatingBall = document.createElement('div');
const smallBox = document.createElement('div');
Object.assign(floatingBall.style, {
    position: 'fixed',
    right: '20px',
    bottom: '200px',
    width: '50px',
    height: '50px',
    background: 'url(https://pic4.zhimg.com/80/v2-3628c58a24939a53ffd00bb55ccaa7c3_1440w.webp) no-repeat',
    backgroundSize: 'cover',
    borderRadius: '50%',
    boxShadow: '0 0 10px rgba(0,0,0,0.5)',
    zIndex: '1000',
    cursor: 'pointer'
});
Object.assign(smallBox.style, {
    position: 'absolute',
    top: '-270px',
    left: '-298px',
    width: '300px',
    height: '300px',
    backgroundColor: '#fafafa',
    boxShadow: '0 0 10px rgba(0,0,0,0.5)',
    display: 'none' // 初始时隐藏
});
document.body.appendChild(floatingBall);
floatingBall.appendChild(smallBox);
const showSmallBox = () => {
    smallBox.style.display = 'block';
};
const hideSmallBox = () => {
    smallBox.style.display = 'none';
};
floatingBall.addEventListener('mouseover', showSmallBox);
floatingBall.addEventListener('mouseout', hideSmallBox);
smallBox.addEventListener('mouseover', showSmallBox);
smallBox.addEventListener('mouseout', hideSmallBox);
floatingBall.addEventListener('click', (e) => {
    alert('屈凡的悬浮球被点击了!' + JSON.stringify(e));
});
直接打开


效果






![LeetCode - 双指针(Two Pointers) 算法集合 [对撞指针、快慢指针、滑动窗口、双链遍历]](https://img-blog.csdnimg.cn/direct/06ecf478564d4edc84ec95f4d0d09c6f.png)













