212 lines
10 KiB
HTML
Executable File
212 lines
10 KiB
HTML
Executable File
<!DOCTYPE html>
|
|
<html lang="zh-CN">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>多功能哈希工具 - Hash Toolkit</title>
|
|
<link rel="stylesheet" href="css/style.css">
|
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<!-- Header Section -->
|
|
<header class="header">
|
|
<div class="header-content">
|
|
<div class="logo">
|
|
<i class="fas fa-fingerprint"></i>
|
|
<h1>Hash Toolkit</h1>
|
|
</div>
|
|
<p class="subtitle">多功能哈希、编码与压缩工具</p>
|
|
</div>
|
|
<div class="header-decoration">
|
|
<div class="floating-shapes">
|
|
<div class="shape shape-1"></div>
|
|
<div class="shape shape-2"></div>
|
|
<div class="shape shape-3"></div>
|
|
</div>
|
|
</div>
|
|
</header>
|
|
|
|
<!-- Main Content -->
|
|
<main class="main-content">
|
|
<!-- Input Section -->
|
|
<section class="input-section">
|
|
<div class="input-card">
|
|
<div class="card-header">
|
|
<i class="fas fa-edit"></i>
|
|
<h2>输入内容</h2>
|
|
</div>
|
|
<div class="input-wrapper">
|
|
<textarea
|
|
id="inputText"
|
|
placeholder="请输入要处理的文本内容...\n支持中文、英文、特殊字符等"
|
|
rows="6"
|
|
></textarea>
|
|
<div class="input-actions">
|
|
<button id="clearBtn" class="btn btn-secondary">
|
|
<i class="fas fa-trash"></i>
|
|
清空
|
|
</button>
|
|
<button id="processBtn" class="btn btn-primary">
|
|
<i class="fas fa-cogs"></i>
|
|
开始处理
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Results Section -->
|
|
<section class="results-section" id="resultsSection">
|
|
<div class="results-grid">
|
|
<!-- Hash Results -->
|
|
<div class="result-card hash-card">
|
|
<div class="card-header">
|
|
<i class="fas fa-hashtag"></i>
|
|
<h3>哈希算法</h3>
|
|
</div>
|
|
<div class="result-items">
|
|
<div class="result-item">
|
|
<label>MD5</label>
|
|
<div class="result-value" id="md5Result">
|
|
<span class="placeholder">等待处理...</span>
|
|
<button class="copy-btn" data-target="md5Result">
|
|
<i class="fas fa-copy"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="result-item">
|
|
<label>SHA1</label>
|
|
<div class="result-value" id="sha1Result">
|
|
<span class="placeholder">等待处理...</span>
|
|
<button class="copy-btn" data-target="sha1Result">
|
|
<i class="fas fa-copy"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="result-item">
|
|
<label>SHA256</label>
|
|
<div class="result-value" id="sha256Result">
|
|
<span class="placeholder">等待处理...</span>
|
|
<button class="copy-btn" data-target="sha256Result">
|
|
<i class="fas fa-copy"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="result-item">
|
|
<label>SHA512</label>
|
|
<div class="result-value" id="sha512Result">
|
|
<span class="placeholder">等待处理...</span>
|
|
<button class="copy-btn" data-target="sha512Result">
|
|
<i class="fas fa-copy"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Encoding Results -->
|
|
<div class="result-card encoding-card">
|
|
<div class="card-header">
|
|
<i class="fas fa-code"></i>
|
|
<h3>编码转换</h3>
|
|
</div>
|
|
<div class="result-items">
|
|
<div class="result-item">
|
|
<label>Base64 编码</label>
|
|
<div class="result-value" id="base64EncodeResult">
|
|
<span class="placeholder">等待处理...</span>
|
|
<button class="copy-btn" data-target="base64EncodeResult">
|
|
<i class="fas fa-copy"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="result-item">
|
|
<label>Base64 解码</label>
|
|
<div class="result-value" id="base64DecodeResult">
|
|
<span class="placeholder">等待处理...</span>
|
|
<button class="copy-btn" data-target="base64DecodeResult">
|
|
<i class="fas fa-copy"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="result-item">
|
|
<label>URL 编码</label>
|
|
<div class="result-value" id="urlEncodeResult">
|
|
<span class="placeholder">等待处理...</span>
|
|
<button class="copy-btn" data-target="urlEncodeResult">
|
|
<i class="fas fa-copy"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="result-item">
|
|
<label>URL 解码</label>
|
|
<div class="result-value" id="urlDecodeResult">
|
|
<span class="placeholder">等待处理...</span>
|
|
<button class="copy-btn" data-target="urlDecodeResult">
|
|
<i class="fas fa-copy"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Compression Results -->
|
|
<div class="result-card compression-card">
|
|
<div class="card-header">
|
|
<i class="fas fa-compress-alt"></i>
|
|
<h3>压缩算法</h3>
|
|
</div>
|
|
<div class="result-items">
|
|
<div class="result-item">
|
|
<label>Gzip 压缩</label>
|
|
<div class="result-value" id="gzipCompressResult">
|
|
<span class="placeholder">等待处理...</span>
|
|
<button class="copy-btn" data-target="gzipCompressResult">
|
|
<i class="fas fa-copy"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="result-item">
|
|
<label>Deflate 压缩</label>
|
|
<div class="result-value" id="deflateCompressResult">
|
|
<span class="placeholder">等待处理...</span>
|
|
<button class="copy-btn" data-target="deflateCompressResult">
|
|
<i class="fas fa-copy"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="result-item">
|
|
<label>Brotli 压缩</label>
|
|
<div class="result-value" id="brotliCompressResult">
|
|
<span class="placeholder">等待处理...</span>
|
|
<button class="copy-btn" data-target="brotliCompressResult">
|
|
<i class="fas fa-copy"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</main>
|
|
|
|
<!-- Loading Overlay -->
|
|
<div class="loading-overlay" id="loadingOverlay">
|
|
<div class="loading-spinner">
|
|
<div class="spinner"></div>
|
|
<p>正在处理中...</p>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Toast Notification -->
|
|
<div class="toast" id="toast">
|
|
<i class="fas fa-check-circle"></i>
|
|
<span id="toastMessage">复制成功!</span>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="js/script.js"></script>
|
|
</body>
|
|
</html> |