161 lines
5.6 KiB
HTML
161 lines
5.6 KiB
HTML
<!DOCTYPE html>
|
|
<!--
|
|
=============================================================================
|
|
Resume — 可编辑简历构建器
|
|
=============================================================================
|
|
纯静态页面,浏览器直接打开即可使用。
|
|
依赖:style.css(样式) + app.js(逻辑)
|
|
所有文字 contenteditable,所见即所得。
|
|
工具栏:打印PDF | 导出XML | 导入XML | 配色◀▶ | 版式◀▶ | 重置
|
|
=============================================================================
|
|
-->
|
|
<html lang="zh-CN">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>个人简历</title>
|
|
<link rel="stylesheet" href="style.css">
|
|
</head>
|
|
<body>
|
|
|
|
<!-- Toolbar -->
|
|
<div class="toolbar no-print">
|
|
<button class="btn btn-print" onclick="window.print()">🖨️ 打印 / 导出 PDF</button>
|
|
<button class="btn btn-xml" onclick="Resume.exportXML()">📤 导出 XML</button>
|
|
<button class="btn btn-xml" onclick="document.getElementById('importFile').click()">📥 导入 XML</button>
|
|
<span class="theme-switcher no-print" title="颜色主题">
|
|
<button class="btn btn-theme" onclick="Resume.prevTheme()">◀</button>
|
|
<span class="theme-label" id="themeLabel">经典蓝</span>
|
|
<button class="btn btn-theme" onclick="Resume.nextTheme()">▶</button>
|
|
</span>
|
|
<span class="theme-switcher no-print" title="设计版式">
|
|
<button class="btn btn-theme" onclick="Resume.prevDesign()">◀</button>
|
|
<span class="theme-label" id="designLabel">经典双栏</span>
|
|
<button class="btn btn-theme" onclick="Resume.nextDesign()">▶</button>
|
|
</span>
|
|
<button class="btn btn-reset" onclick="Resume.reset()">↺ 重置</button>
|
|
<input type="file" id="importFile" accept=".xml" style="display:none" onchange="Resume.importXML(this)">
|
|
</div>
|
|
<div class="edit-hint no-print">💡 点击文字直接编辑 · 点击 [+ 添加] 增条目 · 悬停条目右侧删 · 改完 Ctrl+P 出 PDF</div>
|
|
|
|
<!-- Page -->
|
|
<div class="page">
|
|
|
|
<div class="resume-grid">
|
|
|
|
<!-- ============================================================
|
|
Sidebar — 左侧个人信息栏
|
|
内容:姓名/头衔、联系方式、技能标签、教育背景、自定义栏目
|
|
============================================================ -->
|
|
<aside class="sidebar">
|
|
|
|
<!-- Name -->
|
|
<section class="name-section">
|
|
<h1>
|
|
<span contenteditable="true" data-placeholder="你的姓名"></span>
|
|
<span class="sub" contenteditable="true" data-placeholder="职位 / 方向"></span>
|
|
</h1>
|
|
</section>
|
|
|
|
<!-- Contact -->
|
|
<section>
|
|
<h2>联系方式</h2>
|
|
<div class="info-item">
|
|
<span class="info-label">📧</span>
|
|
<span contenteditable="true" data-placeholder="邮箱"></span>
|
|
</div>
|
|
<div class="info-item">
|
|
<span class="info-label">📱</span>
|
|
<span contenteditable="true" data-placeholder="手机号"></span>
|
|
</div>
|
|
<div class="info-item">
|
|
<span class="info-label">📍</span>
|
|
<span contenteditable="true" data-placeholder="城市"></span>
|
|
</div>
|
|
<div class="info-item">
|
|
<span class="info-label">🔗</span>
|
|
<span contenteditable="true" data-placeholder="GitHub / 博客 / 主页"></span>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Skills -->
|
|
<section>
|
|
<h2>技术栈</h2>
|
|
<div class="skill-tags" id="skillTags">
|
|
<!-- dynamic -->
|
|
</div>
|
|
<div class="add-btn-group no-print">
|
|
<button class="add-btn" onclick="Resume.addSkill()">+ 添加技能</button>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Education -->
|
|
<section>
|
|
<h2>教育背景</h2>
|
|
<div class="editable-block">
|
|
<h3 contenteditable="true" data-placeholder="学校名称"></h3>
|
|
<div class="section-sub" contenteditable="true" data-placeholder="专业 · 学历"></div>
|
|
<div class="date" contenteditable="true" data-placeholder="起止时间"></div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Custom sidebar sections (dynamic) -->
|
|
<div id="sidebarCustom">
|
|
<!-- dynamic -->
|
|
</div>
|
|
<div class="add-btn-group no-print">
|
|
<button class="add-btn" onclick="Resume.addSidebarSection()">+ 添加栏目</button>
|
|
</div>
|
|
|
|
</aside>
|
|
|
|
<!-- ====== Main Content ====== -->
|
|
<main class="main">
|
|
|
|
<!-- Summary -->
|
|
<section>
|
|
<h2>个人概述</h2>
|
|
<p class="summary-text" contenteditable="true" data-placeholder="用一段话概括你的核心竞争力和职业方向…"></p>
|
|
</section>
|
|
|
|
<!-- Experience -->
|
|
<section>
|
|
<h2>工作经历</h2>
|
|
<div id="experienceList">
|
|
<!-- dynamic -->
|
|
</div>
|
|
<div class="add-btn-group no-print">
|
|
<button class="add-btn" onclick="Resume.addExperience()">+ 添加工作经历</button>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Projects -->
|
|
<section>
|
|
<h2>项目经历</h2>
|
|
<div id="projectList">
|
|
<!-- dynamic -->
|
|
</div>
|
|
<div class="add-btn-group no-print">
|
|
<button class="add-btn" onclick="Resume.addProject()">+ 添加项目经历</button>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Additional -->
|
|
<section>
|
|
<h2>其他</h2>
|
|
<div id="extraList">
|
|
<!-- dynamic -->
|
|
</div>
|
|
<div class="add-btn-group no-print">
|
|
<button class="add-btn" onclick="Resume.addExtra()">+ 添加条目</button>
|
|
</div>
|
|
</section>
|
|
|
|
</main>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<script src="app.js"></script>
|
|
</body>
|
|
</html> |