投票/评选问卷生成器
触发词
投票页、评选表、投票问卷、人气评选、方案评选
适用场景
- 方案/作品评选
- 最佳员工投票
- 活动人气投票
不适用场景(边界)
- 需要防重复刷票(本为本地计票)
- 需要权威选举合规
工作流(输入 → 产出)
- 确认候选项与规则(单/多选)
- 生成自包含单文件 HTML(选项+投票+本地计票)
- 自检零外链
- 交付并说明转公网收集
HTML 产出规范(强制)
- 自包含单文件:所有 CSS 写在
<style>、所有 JS 写在<script>,零外部 CDN / 零外链字体 / 零外链脚本,双击即开。 - 多端可开:Windows/Mac/iOS Safari/安卓 Chrome 直接打开;移动端响应式(
@media已内置)。 - 本地持久化:需保存的数据用
localStorage(键名带skill_z-vote-survey前缀),刷新不丢;不依赖任何后端。 - 可打印:含
@media print隐藏按钮、保留内容,便于导出 PDF / 纸质。 - 公网策略(A 分层):默认只产出自包含单文件(已多端可用);仅当用户明确说"要链接 / 发公网"时,才调用
本地HTML公网发布器(z-html-public-deploy)部署出 URL——不得擅自公开。
输出模板(直接生成的 HTML 骨架,按需填充)
<!doctype html><html lang="zh"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>投票</title><style>
:root{--p:#2563eb;--p2:#1e40af;--bg:#f7f8fa;--card:#fff;--t:#1f2937;--m:#6b7280;--ok:#16a34a;--w:#d97706;--b:#e5e7eb;}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'PingFang SC','Microsoft YaHei',sans-serif;background:var(--bg);color:var(--t);line-height:1.6;padding:16px}
.wrap{max-width:880px;margin:0 auto;background:var(--card);border-radius:14px;padding:22px;box-shadow:0 4px 20px rgba(0,0,0,.06)}
h1{font-size:22px;margin-bottom:6px}
h2{font-size:17px;margin:18px 0 8px;color:var(--p2)}
p.lead{color:var(--m);margin-bottom:14px}
label{display:block;font-size:14px;margin:10px 0 4px;font-weight:600}
input,select,textarea{width:100%;padding:10px;border:1px solid var(--b);border-radius:8px;font-size:14px;font-family:inherit;background:#fff}
textarea{min-height:80px;resize:vertical}
button{background:var(--p);color:#fff;border:0;border-radius:8px;padding:10px 18px;font-size:14px;cursor:pointer;margin:8px 6px 0 0}
button.sec{background:#fff;color:var(--p);border:1px solid var(--p)}
button:hover{opacity:.92}
.row{display:flex;gap:10px;flex-wrap:wrap}
.row>div{flex:1;min-width:160px}
.card{border:1px solid var(--b);border-radius:10px;padding:12px;margin:8px 0;background:#fff}
.grid{display:grid;gap:8px}
table{width:100%;border-collapse:collapse;margin:10px 0;font-size:13px}
th,td{border:1px solid var(--b);padding:8px;text-align:left}
th{background:#eef2ff}
.tag{display:inline-block;background:#eef2ff;color:var(--p2);border-radius:6px;padding:2px 8px;font-size:12px;margin:2px}
.note{background:#fffbeb;border:1px solid #fde68a;color:#92400e;padding:10px;border-radius:8px;font-size:13px;margin:10px 0}
ul{margin:6px 0 6px 18px}
@media(max-width:560px){.wrap{padding:14px}body{padding:8px}}
@media print{body{background:#fff}.wrap{box-shadow:none;max-width:100%}button{display:none}}
</style></head><body><div class="wrap"><h1>投票评选</h1><p class="lead">选择后计票,数据存本地。</p><div id="opts"></div><button onclick="vote()">投票</button><div id="res" class="card"></div></div><script>var O=['方案A','方案B','方案C'];var key='skill_z_vote_survey';opts.innerHTML=O.map((o,i)=>'<label><input type=radio name=v value='+i+'> '+o+'</label>').join('');function vote(){var v=document.querySelector('input[name=v]:checked');if(!v){alert('请选择');return;}var c=JSON.parse(localStorage.getItem(key)||'{}');var i=+v.value;c[i]=(c[i]||0)+1;localStorage.setItem(key,JSON.stringify(c));show();}function show(){var c=JSON.parse(localStorage.getItem(key)||'{}');var tot=Object.values(c).reduce((a,b)=>a+b,0);res.innerHTML='总票数 '+tot+'<br>'+O.map((o,i)=>o+':'+(c[i]||0)+' 票').join('<br>');}show();</script></body></html>
使用示例
输入:三个方案让大家投票选最好的
产出:生成 vote.html,三选项单选+本地实时计票
红线(不可违反)
- 禁止外部依赖
- 禁止伪造票数
- 默认不公开(防刷票需服务端)
与其他技能区分
区别于「满意度问卷(C1)」(态度评分)——本技能是“候选项计票”,用于评选。
大白话介绍
想让大家选哪个方案好?这网页列选项、点一下就计票,现场看谁领先。