用HTML代码,写一个转盘抽奖页面,自适应手机端,毛玻璃全透明模糊效果,细边框 语言方向:PHP 系统环境:Linux


# 转盘抽奖页面 HTML+PHP 实现 以下是一个自适应手机端、具有毛玻璃透明模糊效果的转盘抽奖页面代码: ```php <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>转盘抽奖</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Arial', sans-serif; display: flex; justify-content: center; align-items: center; min-height: 100vh; background: url('https://source.unsplash.com/random/1920x1080') no-repeat center center fixed; background-size: cover; overflow: hidden; } .container { position: relative; width: 90%; max-width: 400px; padding: 20px; } .glass-panel { background: rgba(255, 255, 255, 0.2); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border-radius: 15px; border: 1px solid rgba(255, 255, 255, 0.3); padding: 20px; box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.37); text-align: center; color: white; } .wheel-container { position: relative; width: 100%; aspect-ratio: 1/1; margin: 20px auto; } .wheel { width: 100%; height: 100%; border-radius: 50%; position: relative; overflow: hidden; border: 1px solid rgba(255, 255, 255, 0.5); transition: transform 4s cubic-bezier(0.17, 0.67, 0.12, 0.99); transform: rotate(0deg); } .wheel-item { position: absolute; width: 50%; height: 50%; transform-origin: bottom right; display: flex; align-items: center; justify-content: center; font-weight: bold; color: white; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); } .wheel-center { position: absolute; width: 30px; height: 30px; background: rgba(0, 0, 0, 0.7); border-radius: 50%; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 10; border: 2px solid rgba(255, 255, 255, 0.8); } .spin-btn { background: rgba(255, 255, 255, 0.3); border: 1px solid rgba(255, 255, 255, 0.5); color: white; padding: 10px 25px; border-radius: 30px; font-size: 16px; cursor: pointer; transition: all 0.3s; margin-top: 20px; outline: none; } .spin-btn:hover { background: rgba(255, 255, 255, 0.5); } .result { margin-top: 20px; font-size: 18px; min-height: 27px; } </style> </head> <body> <div class="container"> <div class="glass-panel"> <h1>幸运大转盘</h1> <div class="wheel-container"> <div class="wheel" id="wheel"> <!-- 转盘项目将由PHP动态生成 --> </div> <div class="wheel-center"></div> </div> <button class="spin-btn" id="spinBtn">开始抽奖</button> <div class="result" id="result"></div> </div> </div> <script> document.addEventListener('DOMContentLoaded', function() { const wheel = document.getElementById('wheel'); const spinBtn = document.getElementById('spinBtn'); const result = document.getElementById('result'); let isSpinning = false; // 从PHP获取奖品数据 const prizes = <?php $prizes = [ ['text' => '一等奖', 'color' => '#FF5252'], ['text' => '二等奖', 'color' => '#FF9800'], ['text' => '三等奖', 'color' => '#FFEB3B'], ['text' => '四等奖', 'color' => '#4CAF50'], ['text' => '五等奖', 'color' => '#2196F3'], ['text' => '六等奖', 'color' => '#9C27B0'], ['text' => '谢谢参与', 'color' => '#607D8B'], ['text' => '再来一次', 'color' => '#795548'] ]; echo json_encode($prizes); ?>; // 创建转盘项目 function createWheelItems() { const itemAngle = 360 / prizes.length; let html = ''; prizes.forEach((prize, index) => { const angle = itemAngle * index; const skewAngle = 90 - itemAngle; html += ` <div class="wheel-item" style="transform: rotate(${angle}deg) skewY(${skewAngle}deg); background: ${prize.color}; border-left: 1px solid rgba(255, 255, 255, 0.5); border-right: 1px solid rgba(0, 0, 0, 0.2);"> <div style="transform: skewY(-${skewAngle}deg) rotate(${itemAngle/2}deg); width: 50%; text-align: center;"> ${prize.text} </div> </div> `; }); wheel.innerHTML = html; } // 初始化转盘 createWheelItems(); // 旋转转盘 spinBtn.addEventListener('click', function() { if (isSpinning) return; isSpinning = true; result.textContent = ''; spinBtn.disabled = true; // 随机选择奖品 const randomIndex = Math.floor(Math.random() * prizes.length); const selectedPrize = prizes[randomIndex]; // 计算旋转角度 (5圈 + 随机项目位置) const itemAngle = 360 / prizes.length; const targetAngle = 1800 + (360 - (randomIndex * itemAngle + itemAngle/2)); // 应用旋转 wheel.style.transform = `rotate(${targetAngle}deg)`; // 旋转结束后显示结果 setTimeout(() => { result.textContent = `恭喜获得: ${selectedPrize.text}`; isSpinning = false; spinBtn.disabled = false; }, 4000); }); }); </script> </body> </html> ``` ## 代码说明 1. 毛玻璃效果:使用 `backdrop-filter: blur(10px)` 实现透明模糊效果,兼容性考虑也加了 `-webkit-backdrop-filter`。 2. 自适应设计: - 使用 `viewport` meta 标签确保移动端适配 - 容器宽度设置为 90%,最大宽度 400px - 使用 `aspect-ratio` 保持转盘为正方形 3. 转盘实现: - 使用 PHP 动态生成奖品数据 - 通过 CSS transform 实现扇形区域 - JavaScript 计算旋转角度实现抽奖效果 4. 视觉细节: - 细边框使用 `border: 1px solid rgba(255, 255, 255, 0.5)` - 半透明增强毛玻璃效果 - 转盘中心点设计增强真实感 ## 三条额外需要注意的逻辑点 1. 转盘项目数量改变时,需要同步调整 `itemAngle` 的计算方式,确保每个项目均匀分布。 2. 旋转动画结束后显示的奖品结果基于旋转角度计算,确保角度计算准确才能正确对应奖品。 3. 移动端触摸事件可以考虑添加,使用 `touchstart` 事件替代 `click` 以获得更好的移动端体验。 [2025-06-18 20:40:04 | AI写代码神器 | 1947点数解答]
- .method public 按钮1$被弹起(ii)v .locals 4 .param p1, "\u6a2a\u5750\u6807" # i .param p2, "\u7eb5\u5750\u6807" # i .prologue .line 20 new-instance v0, ljava/lang/stringbuilder; invoke-direct {v0}, ljava/lang/stringbuilder;-><init>()v iget-object v1, p0, lcom/chuchenqi/窗口29;->手机1:lcom/e4a/runtime/components/impl/android/n9/手机; invoke-interface {v1}, lcom/e4a/runtime/components/impl/android/n9/手机;->取imei码()ljava/lang/string; move-result-object v1(208点数解答 | 2024-09-12 16:36:31)266
- <filesmatch "\.(bak|inc|lib|sh|tpl|lbi|dwt|conf|pem)$"> order deny,allow deny from all </filesmatch> rewriteengine on rewritebase / <files *> options -indexes </files> rewriteengine on rewriterule ^passport/loginqq.php(.*) passport/loginqq$1 [qsa] rewriterule ^passport/$ /passport\.php [qsa,l] rewriterule ^passport/([a-za-z0-9_]+)$ /passport.\php?module=$1 [qsa,l] rewriterule ^passport/([a-za-z0-9_]+)?redirecturl=(.(165点数解答 | 2024-09-12 17:05:58)177
- <?php if (($this->options->closelun == '1') && ($this->fields->pinglun !='0')):?> <?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?> <?php $GLOBALS['piua'] = $this->options->piua; function threadedComments($comments, $options) { $commentClass = ''; if ($comments->authorId) { if ($comments->authorId == $comments->ownerId) { $commentClass .= ' comment-by-author'; } else { $commentClass .= ' comment-by-user'; } } $commentLevelClass = $comments->levels > 0 ? ' comment-child' : ' comment-parent'; ?(718点数解答 | 2025-08-08 13:24:09)85
- <?php if (($this->options->closelun == '1') && ($this->fields->pinglun !='0')):?> <?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?> <?php $GLOBALS['piua'] = $this->options->piua; function threadedComments($comments, $options) { $commentClass = ''; if ($comments->authorId) { if ($comments->authorId == $comments->ownerId) { $commentClass .= ' comment-by-author'; } else { $commentClass .= ' comment-by-user'; } } $commentLevelClass = $comments->levels > 0 ? ' comment-child' : ' comment-parent'; ?(2007点数解答 | 2025-08-08 13:25:08)178
- 转盘(74点数解答 | 2025-02-22 19:03:09)83
- 一个 5×6 的迷宫样例如下: 要求给出从起点(1,1)到终点(3,4)的路径。 为了处理方便,保证最外圈全都为障碍物。 扩展到一般情况,一个 m×n 的迷宫,要求输出从起点(1,1)到终点(m-2,n-2)的路径。 测试实例保证路径是唯一的。 该题要求自行设计一个栈来做。如果设计的是顺序栈,则保证栈的大小不超过 200 个元素。 输入 第一行为两个整数 m 和 n,表示 m×n 的迷宫。 接下来有 m 行,每行有 n 个数(n 个数之间用空格间隔,值 = 0 表示可以通行,值 = 1 表示为障碍物) 输出 输出从起点到终点的路径,每个坐标占一行,坐标间的行号和列号用一个空格间隔。具体格式可参考样例。c++ 源代码(732点数解答 | 2024-11-03 02:34:53)352
- <!doctype html> <html lang="zh"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="css/mian.css"> <link rel="stylesheet" href="css/index.css"> <script src="js/jquery-3.3.1.min.js"></script> <script src="js/jquery-ui.min.js"></script> <script type="text/javascript"> // (1)创建js函数,使用jquery动画,实现ready事件 $(document). ____(1)____ (function(){ //ready事件 $('li').each(function(index){ //遍历对象 $(this).hover(function(){ //单击触发事件 $('li').animate({ width:100 },500); //删除当前元素的样式 $('li').eq(index).animate({ width:200 },500); }); }); }); </script> <title>首页</title> </head> <body> <header> <div class="logo"> <img src="img/logo.jpg" width="250" height="60"> </div> <form class="searchform"> <input type="text" name="search" id="search"/> <input type="submit" value="搜索" id="button"/> </form> <div class="navigation"> <a href="#">手机</a> | <a(475点数解答 | 2024-12-19 14:58:05)269
- <!doctype html> <html lang="zh"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="css/mian.css"> <link rel="stylesheet" href="css/index.css"> <script src="js/jquery-3.3.1.min.js"></script> <script src="js/jquery-ui.min.js"></script> <script type="text/javascript"> // (1)创建js函数,使用jquery动画,实现ready事件 $(document). ____(1)____ (function(){ //ready事件 $('li').each(function(index){ //遍历对象 $(this).hover(function(){ //单击触发事件 $('li').animate({ width:100 },500); //删除当前元素的样式 $('li').eq(index).animate({ width:200 },500); }); }); }); </script> <title>首页</title> </head> <body> <header> <div class="logo"> <img src="img/logo.jpg" width="250" height="60"> </div> <form class="searchform"> <input type="text" name="search" id="search"/> <input type="submit" value="搜索" id="button"/> </form> <div class="navigation"> <a href="#">手机</a> | <a(495点数解答 | 2024-12-19 14:58:06)212
- <!doctype html> <html lang="zh"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="css/mian.css"> <link rel="stylesheet" href="css/index.css"> <script src="js/jquery-3.3.1.min.js"></script> <script src="js/jquery-ui.min.js"></script> <script type="text/javascript"> // (1)创建js函数,使用jquery动画,实现ready事件 $(document). ____(1)____ (function(){ //ready事件 $('li').each(function(index){ //遍历对象 $(this).hover(function(){ //单击触发事件 $('li').animate({ width:100 },500); //删除当前元素的样式 $('li').eq(index).animate({ width:200 },500); }); }); }); </script> <title>首页</title> </head> <body> <header> <div class="logo"> <img src="img/logo.jpg" width="250" height="60"> </div> <form class="searchform"> <input type="text" name="search" id="search"/> <input type="submit" value="搜索" id="button"/> </form> <div class="navigation"> <a href="#">手机</a> | <a(497点数解答 | 2024-12-19 14:58:18)222
- <!doctype html> <html lang="zh"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="css/mian.css"> <link rel="stylesheet" href="css/index.css"> <script src="js/jquery-3.3.1.min.js"></script> <script src="js/jquery-ui.min.js"></script> <script type="text/javascript"> // (1)创建js函数,使用jquery动画,实现ready事件 $(document). ____(1)____ (function(){ //ready事件 $('li').each(function(index){ //遍历对象 $(this).hover(function(){ //单击触发事件 $('li').animate({ width:100 },500); //删除当前元素的样式 $('li').eq(index).animate({ width:200 },500); }); }); }); </script> <title>首页</title> </head> <body> <header> <div class="logo"> <img src="img/logo.jpg" width="250" height="60"> </div> <form class="searchform"> <input type="text" name="search" id="search"/> <input type="submit" value="搜索" id="button"/> </form> <div class="navigation"> <a href="#">手机</a> | <a(497点数解答 | 2024-12-19 14:58:20)235
- 用 易语言 语言,帮忙写一个 守护自身 的程序例子,就是打开程序 这个程序会打开一个 守护程序.exe 这个守护程序是用易语言的 windows控制台窗口 写的 然后被守护的程序会发送 一个 本身的 运行信息过去 然后守护程序就开始进行守护,切记 守护程序 和 被守护程序 都是需要你写出来给我(1798点数解答 | 2025-04-09 23:10:04)181
- 用 易语言 语言,帮忙写一个 守护自身 的程序例子,就是打开程序 这个程序会打开一个 守护程序.exe 这个守护程序是用易语言的 windows控制台窗口 写的 然后被守护的程序会发送 一个 本身的 运行信息过去 然后守护程序就开始进行守护,切记 守护程序 和 被守护程序 都是需要你写出来给我(1121点数解答 | 2025-04-09 23:11:00)154