Recomendações de hoje - site de romances - BigBook - Enorme Biblioteca de Romances | Leitura Online Gratuita <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE10" /> <meta name="renderer" content="webkit|ie-comp|ie-stand"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> <meta name="keywords" content="Enorme biblioteca de romances, coleção de romances, leitura gratuita, plataforma de leitura online, romances populares" /> <meta name="description" content="O BigBook reúne uma enorme quantidade de recursos de romances de alta qualidade, criando uma plataforma de leitura online rica em conteúdo que oferece leitura gratuita de diversos tipos de romances, com atualizações rápidas e capítulos completos." /> <link rel="apple-touch-icon-precomposed" sizes="180x180" href="fav.png"> <link rel="shortcut icon" href="fav.png" type="image/x-icon"/> <link rel="stylesheet" type="text/css" href="https://okoknovel.com/skin/css/index.css?v=3.1"> <link rel="stylesheet" type="text/css" href="https://okoknovel.com/skin/css/page.css?v=3.1"> <link rel="stylesheet" type="text/css" href="https://okoknovel.com/skin/css/all.min.css?v=3.1"> <script type="text/javascript" src="https://okoknovel.com/skin/js/jquery.min.js"></script> <style> /* 今日推荐标题单行省略 */ .books-grid .book-title { display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis; white-space: normal; word-break: break-all; line-height: 1.4em; max-height: 1.4em; margin: 0; padding: 0; } </style> </head> <body style="background-color:#e3f2fd;"> <!-- 头部导航 --> <style> .nav-links a.active { font-weight: bold; color: #ffffff !important; } .nav-links a.active::after { width:100%; } /* 语言栏样式 */ #language-switcher { display: none; position: absolute; right: 20px; top: 60px; z-index: 1000; background: white; padding: 10px; border-radius: 6px; box-shadow: 0 2px 8px rgba(0,0,0,0.15); } /* 语言设置弹窗内的按钮样式 */ .setting-options .option-btn { padding: 8px 16px; margin: 4px; background: #f5f5f5; border: 1px solid #ddd; border-radius: 6px; color: #333; cursor: pointer; font-size: 14px; transition: all 0.2s ease; display: inline-block; text-align: center; min-width: 60px; } /* 悬停效果 */ .setting-options .option-btn:hover { background: #e9ecef; border-color: #ccc; transform: translateY(-1px); } /* 选中状态 */ .setting-options .option-btn.active { background: #3b82f6; color: white; border-color: #3b82f6; box-shadow: 0 2px 4px rgba(59, 130, 246, 0.3); } /* 选中状态悬停 */ .setting-options .option-btn.active:hover { background: #2563eb; border-color: #2563eb; } /* 👇 新增:选中状态样式 */ .option-btn.active { background: #3b82f6; color: white; border-color: #3b82f6; } /* 可选:hover 效果 */ .option-btn:hover { background: #e9ecef; } .option-btn.active:hover { background: #2563eb; } </style> <header class="header" id="main-header"> <div class="headerMain"> <div class="logo-area"> <div><a href="https://okoknovel.com" class="logo">Leitor de Novelas</a></div> <nav class="nav-links"> <a class="" href="https://okoknovel.com">Início</a> <a class="" href="https://okoknovel.com/ranking/">Ranking</a> <a class="" href="https://okoknovel.com/serializing/">Em série</a> <a class="" href="https://okoknovel.com/completed/">Concluídas</a> <a class="active" href="https://okoknovel.com/recommend/">Atualizações de hoje</a> </nav> </div> <div class="search-box"> <input type="text" placeholder="Buscar título, autor, tags..."> <button>Buscar</button> </div> <div class="user-actions"> <!-- ❌ 删除 onclick --> <a href="javascript:void(0);" id="lang-toggle-btn" title="Seleção de idioma"> <i class="fas fa-earth-oceania" style="font-size:26px;color:#ffffff;"></i> </a> </div> <button class="menu-toggle">☰</button> </div><!-- 替换掉原来的 #language-switcher --> <div id="language-switcher" style="display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.5); z-index:2000; justify-content:center; align-items:center;"> <div class="settings-container" style="width:90%; max-width:540px; background:white; border-radius:8px; display:flex; flex-direction:column; overflow:hidden; box-shadow:0 4px 20px rgba(0,0,0,0.15); position:relative;"> <div class="settings-header" style="background:#f8f8f8; padding:20px; border-bottom:1px solid #e8e8e8;"> <div class="settings-title">Idioma</div> </div> <div class="settings-content" style="padding:20px; max-height:60vh; overflow-y:auto;"> <div class="setting-item"> <div class="setting-options" id="theme-options"> <button class="option-btn " data-lang="zh">中文</button> <button class="option-btn " data-lang="en">English</button> <button class="option-btn active" data-lang="pt">Português</button> </div> </div> </div> <div class="settings-footer" style="padding:15px 20px; border-top:1px solid #e8e8e8; display:flex; justify-content:flex-end; gap:10px;"> <button class="footer-btn confirm" id="confirm-settings">Confirmar</button> </div> <div class="close-settings" id="close-settings" style="position:absolute; top:20px; right:20px; width:30px; height:30px; background:white; border-radius:50%; display:flex; justify-content:center; align-items:center; cursor:pointer; font-size:20px; box-shadow:0 2px 8px rgba(0,0,0,0.1);">×</div> </div> </div> </header> <!-- 全局 JS(只写一次,所有页面生效) --> <script> document.addEventListener('DOMContentLoaded', function () { const btn = document.getElementById('lang-toggle-btn'); const overlay = document.getElementById('language-switcher'); // ← 改这里! if (btn && overlay) { btn.addEventListener('click', function(e) { e.preventDefault(); overlay.style.display = 'flex'; }); // 关闭按钮 const closeBtn = document.getElementById('close-settings'); if (closeBtn) { closeBtn.addEventListener('click', function() { overlay.style.display = 'none'; }); } // 点击蒙层关闭 overlay.addEventListener('click', function(e) { if (e.target === overlay) { overlay.style.display = 'none'; } }); // 语言选项切换 const optionButtons = document.querySelectorAll('.option-btn'); optionButtons.forEach(btn => { btn.addEventListener('click', function() { optionButtons.forEach(b => b.classList.remove('active')); this.classList.add('active'); }); }); // 确定按钮 const confirmBtn = document.getElementById('confirm-settings'); if (confirmBtn) { confirmBtn.addEventListener('click', function() { const selected = document.querySelector('.option-btn.active'); if (selected) { const lang = selected.dataset.lang; const url = new URL(window.location); url.searchParams.set('lang', lang); window.location.href = url.toString(); } }); } } }); </script> <div class="container"> <!-- 分类参数 --> <div class="section"> <!-- 分类筛选 --> <div class="category-filter"> <div class="filter-group filter-main"> <a href="https://okoknovel.com/recommend/" class="filter-btn active">All</a><a href="https://okoknovel.com/recommend/?cate=2" class="filter-btn ">Outros</a><a href="https://okoknovel.com/recommend/?cate=3" class="filter-btn ">Fantasia</a><a href="https://okoknovel.com/recommend/?cate=4" class="filter-btn ">Cultivo espiritual</a><a href="https://okoknovel.com/recommend/?cate=5" class="filter-btn ">História</a><a href="https://okoknovel.com/recommend/?cate=6" class="filter-btn ">ficção científica</a><a href="https://okoknovel.com/recommend/?cate=7" class="filter-btn ">jogo online</a> </div> </div> <div class="books-grid" style="margin-top: 30px;"><div class="book-card"> <div class="book-cover"> <a href="https://okoknovel.com/detail/584.html" alt="O antigo deus sussurra."> <img src="https://gdapi.okoknovel.com/Super/public/uploads/covers/724_translated.png" loading="lazy"> </a> </div> <div class="book-info"> <a href="https://okoknovel.com/detail/584.html" title="O antigo deus sussurra."> <h3 class="book-title" title="O antigo deus sussurra."> O antigo deus sussurra. </h3> </a> <div class="book-author">Lanterna de Begônia</div> <p class="book-desc">"Ouve, os antigos deuses murmuram; eles dizem... que um dia ...</p> <div class="book-stats"> <span>43mil palavras</span> <span>100capítulos</span> </div> </div> </div><div class="book-card"> <div class="book-cover"> <a href="https://okoknovel.com/detail/583.html" alt="Na fartura, Rheinmetall; na penúria, aço da Renânia!"> <img src="https://gdapi.okoknovel.com/Super/public/uploads/covers/733_translated.png" loading="lazy"> </a> </div> <div class="book-info"> <a href="https://okoknovel.com/detail/583.html" title="Na fartura, Rheinmetall; na penúria, aço da Renânia!"> <h3 class="book-title" title="Na fartura, Rheinmetall; na penúria, aço da Renânia!"> Na fartura, Rheinmetall; na penúria, aço da Renânia! </h3> </a> <div class="book-author">Sopa clara de lírios com lótus</div> <p class="book-desc">2002 trouxe a primeira neve do ano um pouco mais cedo do que...</p> <div class="book-stats"> <span>27mil palavras</span> <span>100capítulos</span> </div> </div> </div><div class="book-card"> <div class="book-cover"> <a href="https://okoknovel.com/detail/582.html" alt="O Falso Grande Herói"> <img src="https://gdapi.okoknovel.com/Super/public/uploads/covers/735_translated.png" loading="lazy"> </a> </div> <div class="book-info"> <a href="https://okoknovel.com/detail/582.html" title="O Falso Grande Herói"> <h3 class="book-title" title="O Falso Grande Herói"> O Falso Grande Herói </h3> </a> <div class="book-author">Setenta e duas composições</div> <p class="book-desc">Portanto, observando a paz que reinava sob o céu, Tian Xingj...</p> <div class="book-stats"> <span>27mil palavras</span> <span>100capítulos</span> </div> </div> </div><div class="book-card"> <div class="book-cover"> <a href="https://okoknovel.com/detail/577.html" alt="A Partir do Detetive Divino Li Yuanfang"> <img src="https://gdapi.okoknovel.com/Super/public/uploads/covers/764_translated.png" loading="lazy"> </a> </div> <div class="book-info"> <a href="https://okoknovel.com/detail/577.html" title="A Partir do Detetive Divino Li Yuanfang"> <h3 class="book-title" title="A Partir do Detetive Divino Li Yuanfang"> A Partir do Detetive Divino Li Yuanfang </h3> </a> <div class="book-author">O Senhor da Ascensão</div> <p class="book-desc">Ao atravessar para a vida de Li Yuanfang, mudei meu destino ...</p> <div class="book-stats"> <span>33mil palavras</span> <span>100capítulos</span> </div> </div> </div><div class="book-card"> <div class="book-cover"> <a href="https://okoknovel.com/detail/589.html" alt="Naruto: O Informante Proveniente do Clã Uchiha"> <img src="https://gdapi.okoknovel.com/Super/public/uploads/covers/779_translated.png" loading="lazy"> </a> </div> <div class="book-info"> <a href="https://okoknovel.com/detail/589.html" title="Naruto: O Informante Proveniente do Clã Uchiha"> <h3 class="book-title" title="Naruto: O Informante Proveniente do Clã Uchiha"> Naruto: O Informante Proveniente do Clã Uchiha </h3> </a> <div class="book-author">Sheng Baolan</div> <p class="book-desc">Quando o Quarto Hokage não sucumbiu ao caos causado pela Nov...</p> <div class="book-stats"> <span>120mil palavras</span> <span>300capítulos</span> </div> </div> </div><div class="book-card"> <div class="book-cover"> <a href="https://okoknovel.com/detail/562.html" alt="1983, numa pequena ilha: O início como grande criador"> <img src="https://gdapi.okoknovel.com/Super/public/uploads/covers/826_translated.png" loading="lazy"> </a> </div> <div class="book-info"> <a href="https://okoknovel.com/detail/562.html" title="1983, numa pequena ilha: O início como grande criador"> <h3 class="book-title" title="1983, numa pequena ilha: O início como grande criador"> 1983, numa pequena ilha: O início como grande criador </h3> </a> <div class="book-author">Julho não atravessa</div> <p class="book-desc">【Romance de nicho, esta é uma narrativa sobre a aquicultura ...</p> <div class="book-stats"> <span>92mil palavras</span> <span>300capítulos</span> </div> </div> </div><div class="book-card"> <div class="book-cover"> <a href="https://okoknovel.com/detail/559.html" alt="A Jornada nas Histórias em Quadrinhos Americanas: O Início como Mutante de Nível Cinco"> <img src="https://gdapi.okoknovel.com/Super/public/uploads/covers/832_translated.png" loading="lazy"> </a> </div> <div class="book-info"> <a href="https://okoknovel.com/detail/559.html" title="A Jornada nas Histórias em Quadrinhos Americanas: O Início como Mutante de Nível Cinco"> <h3 class="book-title" title="A Jornada nas Histórias em Quadrinhos Americanas: O Início como Mutante de Nível Cinco"> A Jornada nas Histórias em Quadrinhos Americanas: O Início como Mutante de Nível Cinco </h3> </a> <div class="book-author">O peixe salgado que saboreia espetadas repentinas</div> <p class="book-desc">Su Yao atravessou — foi transportado para o mundo da Marvel,...</p> <div class="book-stats"> <span>77mil palavras</span> <span>300capítulos</span> </div> </div> </div></div> <!-- <div class="page" style="background:linear-gradient(135deg, #f3f3f3 0%, #f1f1f1 100%);padding:0 20px;border-radius:10px;"></div> --> </div> </div> <!-- 页脚 --> <footer class="footer"> <div class="container1"> </div> </footer> <!-- 右侧功能栏 --> <div class="sidebar"> <a href="javascript:void(0);" onclick="scrollToTop()" class="sidebar-button"> <div class="icon"> <div class="moon-icon"> <div class="moon"> <div class="fas fa-arrows-up-to-line"></div> </div> </div> </div> </a> </div> <script type="text/javascript"> function scrollToTop(){ window.scrollTo({ top: 0, behavior: 'smooth' }); } </script> <script> // 移动端菜单切换 document.addEventListener('DOMContentLoaded', function() { const menuToggle = document.querySelector('.menu-toggle'); const navLinks = document.querySelector('.nav-links'); menuToggle.addEventListener('click', function() { navLinks.style.display = navLinks.style.display === 'flex' ? 'none' : 'flex'; }); // 调整窗口大小时重置菜单显示 window.addEventListener('resize', function() { if (window.innerWidth > 768) { navLinks.style.display = 'flex'; } else { navLinks.style.display = 'none'; } }); // 初始化 if (window.innerWidth <= 768) { navLinks.style.display = 'none'; } // 搜索功能 const searchInput = document.querySelector('.search-box input'); const searchBtn = document.querySelector('.search-box button'); const searchAlertTpl = "Buscar palavra-chave: %s"; searchBtn.addEventListener('click', function() { const keyword = searchInput.value.trim(); if (keyword) { alert(searchAlertTpl.replace('%s', keyword)); // 实际应用中这里应该跳转到搜索页面 } }); searchInput.addEventListener('keypress', function(e) { if (e.key === 'Enter') { searchBtn.click(); } }); }); </script> </body> </html>