reader.wxss 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504
  1. .container.data-v-7912e6ab {
  2. width: 100%;
  3. height: 100vh;
  4. background-color: #F5F2E8;
  5. display: flex;
  6. flex-direction: column;
  7. transition: background-color 0.3s;
  8. padding-top: 30px;
  9. box-sizing: border-box;
  10. }
  11. .container.dark-mode.data-v-7912e6ab {
  12. background-color: #1A1A1A;
  13. }
  14. .header.data-v-7912e6ab {
  15. display: flex;
  16. align-items: center;
  17. justify-content: space-between;
  18. padding: 20rpx 30rpx;
  19. padding-top: calc(20rpx + env(safe-area-inset-top));
  20. background-color: rgba(245, 242, 232, 0.92);
  21. border-bottom: 1rpx solid rgba(224, 224, 224, 0.6);
  22. position: fixed;
  23. top: 0;
  24. left: 0;
  25. right: 0;
  26. z-index: 1600; /* 高于浮动设置面板,悬浮于内容之上 */
  27. transition: background-color 0.3s, border-color 0.3s;
  28. }
  29. .dark-mode .header.data-v-7912e6ab {
  30. background-color: rgba(26, 26, 26, 0.92);
  31. border-bottom-color: rgba(51, 51, 51, 0.6);
  32. }
  33. .back-btn.data-v-7912e6ab, .share-btn.data-v-7912e6ab {
  34. width: 60rpx;
  35. height: 60rpx;
  36. display: flex;
  37. align-items: center;
  38. justify-content: center;
  39. }
  40. .back-icon.data-v-7912e6ab, .share-icon.data-v-7912e6ab {
  41. font-size: 40rpx;
  42. color: #333333;
  43. font-weight: bold;
  44. }
  45. .dark-mode .back-icon.data-v-7912e6ab,
  46. .dark-mode .share-icon.data-v-7912e6ab {
  47. color: #FFFFFF;
  48. }
  49. .header-title.data-v-7912e6ab {
  50. position: absolute;
  51. left: 50%;
  52. transform: translateX(-50%);
  53. font-size: 32rpx;
  54. font-weight: bold;
  55. color: #333333;
  56. }
  57. .dark-mode .header-title.data-v-7912e6ab {
  58. color: #FFFFFF;
  59. }
  60. .content-area.data-v-7912e6ab {
  61. flex: 1;
  62. width: 100%;
  63. padding: 40rpx 30rpx;
  64. box-sizing: border-box;
  65. background-color: #F5F2E8;
  66. transition: background-color 0.3s;
  67. }
  68. .dark-mode .content-area.data-v-7912e6ab {
  69. background-color: #1A1A1A;
  70. }
  71. .loading-section.data-v-7912e6ab {
  72. padding: 100rpx 30rpx;
  73. text-align: center;
  74. }
  75. .loading-text.data-v-7912e6ab {
  76. font-size: 28rpx;
  77. color: #999999;
  78. }
  79. .empty-section.data-v-7912e6ab {
  80. padding: 100rpx 30rpx;
  81. text-align: center;
  82. }
  83. .empty-section .empty-text.data-v-7912e6ab {
  84. font-size: 28rpx;
  85. color: #999999;
  86. }
  87. .chapter-info.data-v-7912e6ab {
  88. margin-bottom: 40rpx;
  89. text-align: center;
  90. }
  91. .chapter-title.data-v-7912e6ab {
  92. font-size: 36rpx;
  93. font-weight: bold;
  94. color: #333333;
  95. }
  96. .dark-mode .chapter-title.data-v-7912e6ab {
  97. color: #FFFFFF;
  98. }
  99. .content-text.data-v-7912e6ab {
  100. display: flex;
  101. flex-direction: column;
  102. line-height: 2.2;
  103. background-color: transparent;
  104. }
  105. .text-line-wrapper.data-v-7912e6ab {
  106. margin-bottom: 20rpx;
  107. background-color: transparent;
  108. }
  109. .text-line.data-v-7912e6ab {
  110. color: #333333;
  111. text-indent: 2em;
  112. line-height: 2.2;
  113. display: block;
  114. background-color: transparent;
  115. }
  116. .dark-mode .text-line.data-v-7912e6ab {
  117. color: #E0E0E0;
  118. }
  119. .bottom-toolbar.data-v-7912e6ab {
  120. display: flex;
  121. justify-content: space-around;
  122. align-items: center;
  123. padding: 30rpx 20rpx;
  124. background-color: #F5F2E8;
  125. border-top: 1rpx solid #E0E0E0;
  126. padding-bottom: calc(30rpx + env(safe-area-inset-bottom));
  127. position: relative;
  128. z-index: 100;
  129. transition: background-color 0.3s, border-color 0.3s;
  130. }
  131. .dark-mode .bottom-toolbar.data-v-7912e6ab {
  132. background-color: #1A1A1A;
  133. border-top-color: #333333;
  134. }
  135. .toolbar-item.data-v-7912e6ab {
  136. display: flex;
  137. flex-direction: column;
  138. align-items: center;
  139. justify-content: center;
  140. padding: 10rpx 20rpx;
  141. }
  142. .toolbar-text.data-v-7912e6ab {
  143. font-size: 28rpx;
  144. color: #333333;
  145. }
  146. .dark-mode .toolbar-text.data-v-7912e6ab {
  147. color: #FFFFFF;
  148. }
  149. /* 悬浮设置面板 */
  150. .floating-settings.data-v-7912e6ab {
  151. position: fixed;
  152. left: 50%;
  153. bottom: calc(30rpx + env(safe-area-inset-bottom));
  154. transform: translateX(-50%);
  155. display: flex;
  156. align-items: center;
  157. justify-content: center;
  158. padding: 14rpx 20rpx;
  159. background: rgba(255, 255, 255, 0.9);
  160. -webkit-backdrop-filter: blur(6px);
  161. backdrop-filter: blur(6px);
  162. border-radius: 40rpx;
  163. box-shadow: 0 8rpx 24rpx rgba(0,0,0,0.15);
  164. z-index: 1500;
  165. }
  166. .floating-settings.dark-mode.data-v-7912e6ab {
  167. background: rgba(42, 42, 42, 0.9);
  168. }
  169. .floating-item.data-v-7912e6ab {
  170. padding: 10rpx 24rpx;
  171. }
  172. .floating-text.data-v-7912e6ab {
  173. font-size: 28rpx;
  174. color: #333333;
  175. }
  176. .floating-settings.dark-mode .floating-text.data-v-7912e6ab {
  177. color: #FFFFFF;
  178. }
  179. .floating-divider.data-v-7912e6ab {
  180. width: 1rpx;
  181. height: 28rpx;
  182. background-color: rgba(0,0,0,0.08);
  183. margin: 0 6rpx;
  184. }
  185. .floating-settings.dark-mode .floating-divider.data-v-7912e6ab {
  186. background-color: rgba(255,255,255,0.15);
  187. }
  188. /* 目录弹窗 */
  189. .chapter-modal.data-v-7912e6ab {
  190. position: fixed;
  191. top: 0;
  192. left: 0;
  193. right: 0;
  194. bottom: 0;
  195. background-color: rgba(0, 0, 0, 0.5);
  196. z-index: 1000;
  197. display: flex;
  198. align-items: flex-end;
  199. }
  200. .modal-content.data-v-7912e6ab {
  201. width: 100%;
  202. height: 70%;
  203. background-color: #FFFFFF;
  204. border-radius: 30rpx 30rpx 0 0;
  205. display: flex;
  206. flex-direction: column;
  207. padding-bottom: env(safe-area-inset-bottom);
  208. transition: background-color 0.3s;
  209. }
  210. .modal-content.dark-mode.data-v-7912e6ab {
  211. background-color: #2A2A2A;
  212. }
  213. .modal-header.data-v-7912e6ab {
  214. display: flex;
  215. align-items: center;
  216. justify-content: space-between;
  217. padding: 30rpx;
  218. border-bottom: 1rpx solid #E0E0E0;
  219. transition: border-color 0.3s;
  220. }
  221. .modal-content.dark-mode .modal-header.data-v-7912e6ab,
  222. .modal-content-small.dark-mode .modal-header.data-v-7912e6ab {
  223. border-bottom-color: #333333;
  224. }
  225. .modal-title.data-v-7912e6ab {
  226. font-size: 36rpx;
  227. font-weight: bold;
  228. color: #333333;
  229. transition: color 0.3s;
  230. }
  231. .modal-content.dark-mode .modal-title.data-v-7912e6ab,
  232. .modal-content-small.dark-mode .modal-title.data-v-7912e6ab {
  233. color: #FFFFFF;
  234. }
  235. .close-btn.data-v-7912e6ab {
  236. width: 60rpx;
  237. height: 60rpx;
  238. display: flex;
  239. align-items: center;
  240. justify-content: center;
  241. }
  242. .close-icon.data-v-7912e6ab {
  243. font-size: 50rpx;
  244. color: #666666;
  245. line-height: 1;
  246. transition: color 0.3s;
  247. }
  248. .modal-content.dark-mode .close-icon.data-v-7912e6ab,
  249. .modal-content-small.dark-mode .close-icon.data-v-7912e6ab {
  250. color: #CCCCCC;
  251. }
  252. .chapter-list.data-v-7912e6ab {
  253. flex: 1;
  254. width: 100%;
  255. padding: 20rpx 0;
  256. }
  257. .chapter-item.data-v-7912e6ab {
  258. padding: 25rpx 30rpx;
  259. border-bottom: 1rpx solid #F0F0F0;
  260. transition: background-color 0.3s, border-color 0.3s;
  261. }
  262. .modal-content.dark-mode .chapter-item.data-v-7912e6ab {
  263. border-bottom-color: #333333;
  264. }
  265. .chapter-item.active.data-v-7912e6ab {
  266. background-color: #F5F5F5;
  267. }
  268. .modal-content.dark-mode .chapter-item.active.data-v-7912e6ab {
  269. background-color: #333333;
  270. }
  271. .chapter-item-title.data-v-7912e6ab {
  272. font-size: 30rpx;
  273. color: #333333;
  274. transition: color 0.3s;
  275. }
  276. .modal-content.dark-mode .chapter-item-title.data-v-7912e6ab {
  277. color: #FFFFFF;
  278. }
  279. /* 笔记弹窗 */
  280. .notes-modal.data-v-7912e6ab {
  281. position: fixed;
  282. top: 0;
  283. left: 0;
  284. right: 0;
  285. bottom: 0;
  286. background-color: rgba(0, 0, 0, 0.5);
  287. z-index: 1000;
  288. display: flex;
  289. align-items: flex-end;
  290. }
  291. .notes-content.data-v-7912e6ab {
  292. flex: 1;
  293. display: flex;
  294. flex-direction: column;
  295. padding: 20rpx 30rpx;
  296. }
  297. .add-note-section.data-v-7912e6ab {
  298. display: flex;
  299. flex-direction: column;
  300. margin-bottom: 30rpx;
  301. }
  302. .note-input.data-v-7912e6ab {
  303. width: 100%;
  304. min-height: 200rpx;
  305. padding: 20rpx;
  306. background-color: #F5F5F5;
  307. border-radius: 10rpx;
  308. font-size: 28rpx;
  309. color: #333333;
  310. margin-bottom: 20rpx;
  311. box-sizing: border-box;
  312. transition: background-color 0.3s, color 0.3s;
  313. }
  314. .modal-content.dark-mode .note-input.data-v-7912e6ab {
  315. background-color: #333333;
  316. color: #FFFFFF;
  317. }
  318. .modal-content.dark-mode .note-input.data-v-7912e6ab::-webkit-input-placeholder {
  319. color: #999999;
  320. }
  321. .modal-content.dark-mode .note-input.data-v-7912e6ab::placeholder {
  322. color: #999999;
  323. }
  324. .add-note-btn.data-v-7912e6ab {
  325. width: 100%;
  326. height: 80rpx;
  327. background-color: #4FC3F7;
  328. color: #FFFFFF;
  329. border-radius: 10rpx;
  330. font-size: 30rpx;
  331. display: flex;
  332. align-items: center;
  333. justify-content: center;
  334. border: none;
  335. }
  336. .notes-list.data-v-7912e6ab {
  337. flex: 1;
  338. width: 100%;
  339. }
  340. .note-item.data-v-7912e6ab {
  341. padding: 25rpx;
  342. background-color: #F5F5F5;
  343. border-radius: 10rpx;
  344. margin-bottom: 20rpx;
  345. transition: background-color 0.3s;
  346. }
  347. .modal-content.dark-mode .note-item.data-v-7912e6ab {
  348. background-color: #333333;
  349. }
  350. .note-header.data-v-7912e6ab {
  351. display: flex;
  352. align-items: center;
  353. justify-content: space-between;
  354. margin-bottom: 15rpx;
  355. }
  356. .note-time.data-v-7912e6ab {
  357. font-size: 24rpx;
  358. color: #999999;
  359. transition: color 0.3s;
  360. }
  361. .modal-content.dark-mode .note-time.data-v-7912e6ab {
  362. color: #888888;
  363. }
  364. .note-delete.data-v-7912e6ab {
  365. width: 40rpx;
  366. height: 40rpx;
  367. display: flex;
  368. align-items: center;
  369. justify-content: center;
  370. }
  371. .delete-icon.data-v-7912e6ab {
  372. font-size: 40rpx;
  373. color: #FF4444;
  374. line-height: 1;
  375. }
  376. .note-content.data-v-7912e6ab {
  377. font-size: 28rpx;
  378. color: #333333;
  379. line-height: 1.8;
  380. transition: color 0.3s;
  381. }
  382. .modal-content.dark-mode .note-content.data-v-7912e6ab {
  383. color: #FFFFFF;
  384. }
  385. .empty-notes.data-v-7912e6ab {
  386. display: flex;
  387. justify-content: center;
  388. align-items: center;
  389. padding: 100rpx 0;
  390. }
  391. .empty-text.data-v-7912e6ab {
  392. font-size: 28rpx;
  393. color: #999999;
  394. transition: color 0.3s;
  395. }
  396. .modal-content.dark-mode .empty-text.data-v-7912e6ab {
  397. color: #666666;
  398. }
  399. /* 字号选择弹窗 */
  400. .fontsize-modal.data-v-7912e6ab {
  401. position: fixed;
  402. top: 0;
  403. left: 0;
  404. right: 0;
  405. bottom: 0;
  406. background-color: rgba(0, 0, 0, 0.5);
  407. z-index: 1000;
  408. display: flex;
  409. align-items: center;
  410. justify-content: center;
  411. }
  412. .modal-content-small.data-v-7912e6ab {
  413. width: 500rpx;
  414. background-color: #FFFFFF;
  415. border-radius: 20rpx;
  416. padding: 40rpx;
  417. box-sizing: border-box;
  418. transition: background-color 0.3s;
  419. }
  420. .modal-content-small.dark-mode.data-v-7912e6ab {
  421. background-color: #2A2A2A;
  422. }
  423. .fontsize-title.data-v-7912e6ab {
  424. font-size: 32rpx;
  425. font-weight: bold;
  426. color: #333333;
  427. text-align: center;
  428. margin-bottom: 30rpx;
  429. transition: color 0.3s;
  430. }
  431. .modal-content-small.dark-mode .fontsize-title.data-v-7912e6ab {
  432. color: #FFFFFF;
  433. }
  434. .fontsize-options.data-v-7912e6ab {
  435. display: flex;
  436. flex-direction: column;
  437. }
  438. .fontsize-item.data-v-7912e6ab {
  439. padding: 25rpx;
  440. border-bottom: 1rpx solid #F0F0F0;
  441. text-align: center;
  442. transition: background-color 0.3s, border-color 0.3s;
  443. }
  444. .modal-content-small.dark-mode .fontsize-item.data-v-7912e6ab {
  445. border-bottom-color: #333333;
  446. }
  447. .fontsize-item.data-v-7912e6ab:last-child {
  448. border-bottom: none;
  449. }
  450. .fontsize-item.active.data-v-7912e6ab {
  451. background-color: #F5F5F5;
  452. }
  453. .modal-content-small.dark-mode .fontsize-item.active.data-v-7912e6ab {
  454. background-color: #333333;
  455. }
  456. .fontsize-label.data-v-7912e6ab {
  457. font-size: 30rpx;
  458. color: #333333;
  459. transition: color 0.3s;
  460. }
  461. .modal-content-small.dark-mode .fontsize-label.data-v-7912e6ab {
  462. color: #FFFFFF;
  463. }
  464. /* 文本选择菜单 */
  465. .text-selection-menu.data-v-7912e6ab {
  466. position: fixed;
  467. background-color: #333333;
  468. border-radius: 8rpx;
  469. padding: 0;
  470. z-index: 2000;
  471. box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.3);
  472. min-width: 200rpx;
  473. }
  474. .selection-menu-item.data-v-7912e6ab {
  475. padding: 20rpx 30rpx;
  476. border-bottom: 1rpx solid #444444;
  477. }
  478. .selection-menu-item.data-v-7912e6ab:last-child {
  479. border-bottom: none;
  480. }
  481. .selection-menu-item.data-v-7912e6ab:active {
  482. background-color: #444444;
  483. }
  484. .selection-menu-text.data-v-7912e6ab {
  485. font-size: 28rpx;
  486. color: #FFFFFF;
  487. }
  488. /* 选中文本高亮层 */
  489. .selection-overlay.data-v-7912e6ab {
  490. position: fixed;
  491. top: 0;
  492. left: 0;
  493. right: 0;
  494. bottom: 0;
  495. z-index: 1999;
  496. background-color: transparent;
  497. }