js实现浏览器端离线epub电子书转txt文本下载本地代码
代码语言:html
所属分类:其他
代码描述:js实现浏览器端离线epub电子书转txt文本下载本地代码
代码标签: js 浏览器端 离线 epub 电子书 转 txt 文本 下载 本地 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>拾卷 · EPUB 转 TXT · 本地转换</title>
<!-- 字体:手写体做标题,衬线做正文 -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Ma+Shan+Zheng&family=Noto+Serif+SC:wght@400;600;900&display=swap" rel="stylesheet">
<style>
/* ============ 基础与主题 ============ */
*{box-sizing:border-box;margin:0;padding:0}
:root{
--ink:#0b1f1b; /* 深墨绿底 */
--ink2:#10312a;
--paper:#f4eddc; /* 宣纸 */
--gold:#d9a441; /* 鎏金 */
--cinnabar:#c2402f; /* 朱砂 */
--cinnabar-hi:#d24a35;
--jade:#8fbf9f; /* 青玉 */
--text:#eee6d2;
--muted:#9db2a6;
}
html{scroll-behavior:smooth}
body{
min-height:100vh;overflow-x:hidden;
font-family:'Noto Serif SC','Songti SC','SimSun',serif;
color:var(--text);
background:
radial-gradient(1100px 560px at 88% -12%, rgba(217,164,65,.14), transparent 60%),
radial-gradient(900px 520px at -12% 112%, rgba(194,64,47,.13), transparent 62%),
linear-gradient(180deg,#0d241f 0%,#0a1b17 100%);
}
::selection{background:rgba(217,164,65,.4)}
button{font-family:inherit}
/* 背景装饰:竖排书简纹理 + 漂浮字影 */
.bg-lines{position:fixed;inset:0;z-index:0;pointer-events:none;
background:repeating-linear-gradient(90deg,transparent 0 46px,rgba(244,237,220,.03) 46px 47px)}
.ambient{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.ambient span{position:absolute;font-family:'Ma Shan Zheng',cursive;color:rgba(244,237,220,.05);
animation:floatGlyph linear infinite;user-select:none}
@keyframes floatGlyph{
0%{transform:translateY(34px) rotate(-6deg);opacity:0}
12%{opacity:1}88%{opacity:1}
100%{transform:translateY(-64px) rotate(6deg);opacity:0}}
.wrap{position:relative;z-index:1;max-width:1180px;margin:0 auto;padding:0 22px}
/* ============ 顶栏 ============ */
.top{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:28px 0 20px}
.brand{display:flex;align-items:center;gap:14px}
.seal{width:54px;height:54px;border-radius:9px;display:grid;place-items:center;
background:linear-gradient(160deg,var(--cinnabar-hi),#9c2c1f);color:#f9f2df;
font-family:'Ma Shan Zheng',cursive;font-size:34px;transform:rotate(-4deg);
box-shadow:0 8px 20px rgba(210,74,53,.35),inset 0 0 0 2px rgba(249,242,223,.22);
transition:transform .35s cubic-bezier(.34,1.56,.64,1)}
.brand:hover .seal{transform:rotate(4deg) scale(1.06)}
.brand h1{font-family:'Ma Shan Zheng',cursive;font-size:36px;letter-spacing:7px;color:var(--paper);line-height:1;font-weight:400}
.brand p{font-size:12.5px;color:var(--muted);letter-spacing:2.5px;margin-top:7px}
.ticker{display:flex;gap:10px;flex-wrap:wrap}
.chip{border:1px solid rgba(217,164,65,.3);padding:6px 13px;border-radius:999px;
font-size:12.5px;color:#cbbd97;background:rgba(217,164,65,.06);letter-spacing:1px}
.chip b{color:var(--gold);font-size:14px;font-weight:600}
.privacy{font-size:12px;color:var(--jade);border:1px dashed rgba(143,191,159,.45);
padding:8px 13px;border-radius:6px;letter-spacing:2px}
/* ============ 主布局 ============ */
main{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(310px,1fr);gap:22px;align-items:start}
@media(max-width:960px){main{grid-template-columns:1fr}}
/* ---- 投放区 ---- */
.dropzone{position:relative;overflow:hidden;cursor:pointer;text-align:center;
min-height:310px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:11px;
background:linear-gradient(165deg,#f8f1de 0%,#efe3c6 68%,#e8dbba 100%);
color:#26312b;border-radius:10px;border:1.5px dashed rgba(38,49,43,.42);
box-shadow:0 20px 44px rgba(0,0,0,.38);
transition:transform .25s,box-shadow .25s,border-color .25s}
.dropzone:hover{transform:translateY(-3px);border-color:var(--cinnabar);box-shadow:0 28px 58px rgba(0,.........完整代码请登录后点击上方下载按钮下载查看















网友评论0