当前位置:   article > 正文

第21次修改了可删除可持久保存的前端html备忘录:重新布局

第21次修改了可删除可持久保存的前端html备忘录:重新布局

第21次修改了可删除可持久保存的前端html备忘录:更改了布局

  1. <!DOCTYPE html>
  2. <html lang="zh">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>与妖为邻备忘录</title>
  7. </head>
  8. <style>
  9. /* ******制定统一规则 开始 */
  10. * {
  11. margin: 0;
  12. padding: 0;
  13. box-sizing: border-box;
  14. list-style: none;
  15. user-select: none;
  16. color: #fffbfb;
  17. text-shadow: 1px 1px 1px #000;
  18. }
  19. input,
  20. button {
  21. cursor: pointer;
  22. border-radius: 5px;
  23. font-size: 18px;
  24. border: 1px solid rgb(134, 133, 133);
  25. color: rgb(252, 223, 4);
  26. background-color: #ff02029c;
  27. }
  28. /* ******制定统一规则 结束 */
  29. /* **页面背景样式:.body_background 开始*/
  30. body {
  31. position: relative;
  32. width: 100%;
  33. height: 100vh;
  34. .body_background {
  35. position: absolute;
  36. object-fit: contain;
  37. min-width: 100%;
  38. min-height: 100%;
  39. object-fit: cover;
  40. position: fixed;
  41. right: 0;
  42. bottom: 0;
  43. width: auto;
  44. height: auto;
  45. z-index: -100;
  46. filter: grayscale(20%);
  47. }
  48. }
  49. /* **页面背景样式:.body_background*****结束 */
  50. /* 头部标题.header_title 开始 */
  51. .header_title {
  52. position: fixed;
  53. top: 2px;
  54. left: 2px;
  55. width: 140px;
  56. height: 66px;
  57. border-radius: 50%;
  58. color: rgb(255, 255, 255);
  59. /* 图片 img*/
  60. img {
  61. float: left;
  62. width: 66px;
  63. height: 66px;
  64. border-radius: 50%;
  65. transition: transform 0.3s ease;
  66. &:hover {
  67. transform: scale(1.1);
  68. }
  69. }
  70. h2 {
  71. background-color: #f30303;
  72. border-radius: 50%;
  73. background-image: linear-gradient(to top left,
  74. rgba(0, 0, 0, 0.2),
  75. rgba(0, 0, 0, 0.2) 30%,
  76. rgba(0, 0, 0, 0));
  77. box-shadow: inset 4px 4px 4px rgba(255, 255, 255, 0.6),
  78. inset -4px -4px 5px rgba(0, 0, 0, 0.6);
  79. border: 0px solid black;
  80. }
  81. .my_name {
  82. letter-spacing: -8px;
  83. }
  84. }
  85. /* 头部标题.header_title 结束 */
  86. /* **********头部中心.header_center 开始 */
  87. .header_center {
  88. height: 66px;
  89. color: rgb(255, 255, 255);
  90. text-align: center;
  91. max-width: 1450px;
  92. margin: 0 auto;
  93. .summary {
  94. position: fixed;
  95. top: 0;
  96. left: 10%;
  97. }
  98. /* 当前时间 #current_time 开始*/
  99. #current_time {
  100. position: fixed;
  101. color: #ffea00;
  102. font-size: 30px;
  103. top: 20px;
  104. left: 50%;
  105. }
  106. /* 当前时间 #current_time 结束*/
  107. /* 头部导航区.header_nav 开始 */
  108. .header_nav {
  109. position: fixed;
  110. top: 35px;
  111. left: 15%;
  112. font-size: 20px;
  113. border-bottom: 2px solid #f6f4db;
  114. .header_pagination {
  115. display: inline-block;
  116. /* 在第一个分页链接和最后一个分页链接添加圆角: */
  117. li:first-child a {
  118. border-top-left-radius: 5px;
  119. border-bottom-left-radius: 5px;
  120. }
  121. li:last-child a {
  122. border-top-right-radius: 5px;
  123. border-bottom-right-radius: 5px;
  124. }
  125. li {
  126. list-style: none;
  127. display: inline;
  128. .active {
  129. background-color: #4CAF50;
  130. color: white;
  131. border: 1px solid #4CAF50;
  132. &:hover {
  133. background-color: #ddd;
  134. color: rgb(245, 5, 5);
  135. }
  136. }
  137. a {
  138. float: left;
  139. margin: 0 15px;
  140. text-decoration: none;
  141. transition: background-color .3s;
  142. border: 1px solid #ddd;
  143. color: rgb(252, 232, 130);
  144. &:hover:not(.active) {
  145. background-color: #ddd;
  146. font-size: 26px;
  147. color: rgb(255, 255, 255);
  148. }
  149. }
  150. }
  151. }
  152. }
  153. /* 头部导航区.header_nav 结束 */
  154. #openButton {
  155. font-size: 20px;
  156. &:hover {
  157. background-color: #4CAF50;
  158. color: white;
  159. font-size: 24px;
  160. }
  161. }
  162. }
  163. /* **********头部中心.header_center 结束 */
  164. /* ***常用网站 .right_websites开始 */
  165. .right_websites {
  166. position: fixed;
  167. top: 75px;
  168. right: 0;
  169. width: 170px;
  170. text-align: center;
  171. a {
  172. text-decoration: none;
  173. margin: 10px 0px;
  174. color: #fca885;
  175. display: flex;
  176. justify-content: center;
  177. &:hover {
  178. color: #ff0303;
  179. text-shadow: 1px 1px 1px #ffffff;
  180. font-size: 22px;
  181. }
  182. }
  183. }
  184. /* ***常用网站 .right_websites结束 */
  185. /* ****备忘内容区:.memo_content_area *****开始 */
  186. .memo_content_area {
  187. border: 1px solid rgb(134, 133, 133);
  188. max-width: 1300px;
  189. margin: 0px 170px;
  190. font-size: 20px;
  191. /* 文本操作窗口按钮#abb_window和删除按钮.delete 开始 */
  192. #abb_window,
  193. .delete {
  194. position: sticky;
  195. top: 0px;
  196. background: #f30303;
  197. &:hover {
  198. background: #000;
  199. }
  200. }
  201. /* 文本操作窗口按钮#abb_window和删除按钮.delete 结束 */
  202. sub {
  203. position: sticky;
  204. top: 0px;
  205. color: rgb(252, 181, 181);
  206. text-shadow: 1px 1px 1px #030303;
  207. box-shadow:
  208. inset -2px -2px 3px rgba(255, 255, 255, 0.6),
  209. inset 2px 2px 3px rgba(0, 0, 0, 0.6);
  210. margin: 0px 10px;
  211. user-select: text;
  212. border-radius: 20px;
  213. }
  214. span {
  215. user-select: text;
  216. color: #037915;
  217. text-shadow: 1px 1px 1px #fffcfc;
  218. }
  219. .finish {
  220. text-decoration: underline;
  221. text-decoration-color: rgb(255, 0, 0);
  222. background-color: rgb(191, 210, 255);
  223. color: rgb(255, 250, 250);
  224. text-shadow: 1px 1px 1px #030303;
  225. box-shadow:
  226. inset -2px -2px 3px rgba(255, 255, 255, 0.6),
  227. inset 2px 2px 3px rgba(0, 0, 0, 0.6);
  228. }
  229. a {
  230. text-decoration: none;
  231. color: #ebf704;
  232. }
  233. /* 隐藏的文本操作框.login布局开始 ***************************/
  234. .login {
  235. /* display: none; */
  236. width: 380px;
  237. height: 195px;
  238. position: fixed;
  239. background-color: #03510385;
  240. top: 350px;
  241. left: 360px;
  242. border-radius: 15px 15px 0 0;
  243. z-index: 9999;
  244. transform: translate(-90%, -90%);
  245. border-radius: 15px;
  246. .login-title {
  247. border-radius: 15px 15px 0 0;
  248. width: 100%;
  249. line-height: 40px;
  250. height: 40px;
  251. font-size: 20px;
  252. position: relative;
  253. cursor: move;
  254. background-color: #9bed9b85;
  255. .cl1ose-login {
  256. margin: 0 10px;
  257. }
  258. #closeBtn {
  259. position: absolute;
  260. float: right;
  261. padding: 0px 10px 0px 10px;
  262. top: -2px;
  263. right: 5px;
  264. font-size: 38px;
  265. font-style: normal;
  266. cursor: pointer;
  267. &:hover {
  268. color: #6b6b6b;
  269. }
  270. }
  271. }
  272. /* ****************编辑文本区 .edit_text 开始 */
  273. .edit_text {
  274. #myForm {
  275. display: flex;
  276. flex-direction: column;
  277. box-sizing: border-box;
  278. border-radius: 10px;
  279. margin: 10px;
  280. padding: 5px;
  281. background-color: #c4a32c;
  282. input[type="file"] {
  283. margin: 3px;
  284. height: 30px;
  285. background-color: #11b711a7;
  286. }
  287. textarea {
  288. font-size: 20px;
  289. margin: 3px;
  290. height: 50px;
  291. color: #ffffff;
  292. text-shadow: 1px 1px 1px #000;
  293. background-color: #062506b5;
  294. &::placeholder {
  295. font-size: 20px;
  296. color: #ffffff;
  297. }
  298. }
  299. .abb-text,
  300. input[type="reset"] {
  301. width: 55px;
  302. margin: 3px 58px;
  303. }
  304. }
  305. /* ****编辑文本区 .edit_text 结束 */
  306. }
  307. /* 隐藏的文本操作框.login布局结束 ***************************/
  308. }
  309. }
  310. /* **************************备忘内容区:.memo_content_area *****结束 */
  311. </style>
  312. <body>
  313. <!-- ------------- 页面背景 .body_background -->
  314. <div class="body_background">
  315. <video autoplay loop muted width="100%" height="100%">
  316. <source src="file:///D:\My homepage\Video\泰国普吉岛卡伦海滩.mp4" type="video/mp4">
  317. </video>
  318. </div>
  319. <!-- --------------页面背景 .body_background -->
  320. <!-- -------头部标题.header_title 开始 -->
  321. <div class="header_title">
  322. <img src="file:///D:\My homepage\image\jpg\tuzi3.jpg" alt="与妖为邻">
  323. <h2 class="my_name">与妖为邻</h2>
  324. <h2 class="memo">备忘录</h2>
  325. </div>
  326. <!-- 头部中心.header_center -------开始 -->
  327. <div class="header_center">
  328. <div class="summary">浏览器主页,整理本地资源!备忘日常生活、各类教程、网页素材!第21次更改:0.1.0</div>
  329. <div id="current_time">当前时间</div>
  330. <div class="header_nav">
  331. <ul class="header_pagination">
  332. <li><a class="active" href="#">首页</a></li>
  333. <li><a href="file:///C:\Users\90917\Desktop\备忘录.html">日志</a></li>
  334. <li><a href="#">相册</a></li>
  335. <li><a href="#">更多</a></li>
  336. <li><a href="#">联系我</a></li>
  337. </ul>
  338. <button id="openButton">打开本地文件</button>
  339. </div>
  340. </div>
  341. <!-- 头部中心 .header_center 结束-->
  342. <!-- 常用网站 .right_websites开始-->
  343. <div class="right_websites">
  344. <span>常用网站</span>
  345. <hr />
  346. <ul>
  347. <li><a href="https://cn.bing.com/search?q=%E7%BF%BB%E8%AF%91&qs=
  348. n&form=QBRE&sp=-1&lq=0&sm=csrmain&pq=%E7%BF%BB%E8%AF%91&sc
  349. =10-2&sk=&cvid=08CF7C75398B4C3C97E7AEC5D3D0921F&ghsh=0&ghacc=0&ghpl=" title="在线翻译" class=""
  350. target="_blank">在线翻译</a></li>
  351. <li><a href="https://www.bilibili.com/" title="bilibili" class="" target="_blank">哔哩哔哩</a></li>
  352. <li><a href="https://www.runoob.com/" title=" 菜鸟教程" class="" target="_blank">菜鸟教程</a></li>
  353. <li><a href="https://www.baidu.com/" title="百度一下" class="" target="_blank">百度一下</a></li>
  354. <li><a href="https://blog.csdn.net/lulei5153?spm=1011.2415.3001.5343" title="与妖为邻CSDN博客" class="" target="_blank">与妖为邻的CSDN博客</a>
  355. </li>
  356. </ul>
  357. </div>
  358. <!-- 常用网站 .right_websites结束-->
  359. <hr>
  360. <!-- ------------备忘内容区:.memo_content_area *****开始 ----------------------------------------------->
  361. <div class="memo_content_area" id="memo">
  362. <button id="abb_window" href="javascript:;">添加文本窗口</button>
  363. <button id="delete" class="delete">对选择进行删除</button>
  364. <sub class="a_button"> &lt;button class="a-href"&gt;
  365. &lt;a href="输入网站地址" target="_blank"&gt;
  366. 输入网站名称
  367. &lt;/a&gt; &lt;/button&gt;
  368. </sub>
  369. <!-- ------------------编辑文本区 .edit_text 开始-->
  370. <div id="login" class="login">
  371. <div class="edit_text ">
  372. <div id="title" class="login-title">
  373. <span class="cl1ose-login">文本操作</span>
  374. <i href="javascript:void(0);" id="closeBtn">&times</i>
  375. </div>
  376. <div>
  377. <form id="myForm">
  378. <input type="file" name="inputfile" accept="text/plain, text/css, text/html, text/javascript, text/markdown"
  379. class="background3D" />
  380. <textarea class="up-textarea" name="uptextarea" rows="1" cols="30%"
  381. placeholder="选择本地txt、js、css或html文件,文件内容会被自动读取"></textarea>
  382. <div>
  383. <button type="text" class="abb-text">添加</button>
  384. <input type="reset" value="重置">
  385. </div>
  386. </form>
  387. </div>
  388. </div>
  389. <!-- ------------------编辑文本区 .edit_text 结束-->
  390. </div>
  391. <!-- ------------备忘内容区:.memo_content_area *****结束 ------------------------------------------------>
  392. </div>
  393. </body>
  394. <script>
  395. /* *********当前时间*current_time********************************************************* */
  396. var current_time = document.getElementById("current_time");
  397. function showTime(time) {
  398. var now = new Date();
  399. var year = now.getFullYear();
  400. var month = now.getMonth();
  401. var day = now.getDate();
  402. var hour = now.getHours();
  403. var minu = now.getMinutes();
  404. var second = now.getSeconds();
  405. month = month + 1;
  406. var arr_work = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");
  407. var week = arr_work[now.getDay()];
  408. month = month < 10 ? "0" + month : month;//时间月份个位补0
  409. day = day < 10 ? "0" + day : day;
  410. hour = hour < 10 ? "0" + hour : hour;
  411. minu = minu < 10 ? "0" + minu : minu;
  412. second = second < 10 ? "0" + second : second;
  413. var time = year + "年" + month + "月" + day + "日 " + week + " " + hour + ":" + minu + ":" + second;
  414. current_time.innerHTML = time;
  415. }
  416. window.setInterval("showTime(current_time)", 1000);
  417. /* *********************当前时间.current_time 结束***************************************************** */
  418. /****提示弹窗无需点击的函数*****开始*****************************************/
  419. function displayAlert(type, data, time) {
  420. var prompt = document.createElement("div");
  421. if (type == "success") {
  422. prompt.style.width = "200px";
  423. prompt.style.backgroundColor = "#009900";
  424. } else if (type == "error") {
  425. prompt.style.width = "280px";
  426. prompt.style.backgroundColor = "#990000";
  427. } else if (type == "info") {
  428. prompt.style.backgroundColor = " #e6b800";
  429. prompt.style.width = "600px";
  430. } else {
  431. return;
  432. }
  433. prompt.id = "prompt";
  434. prompt.style.textAlign = "center";
  435. prompt.style.position = "fixed";
  436. prompt.style.height = "60px";
  437. prompt.style.marginLeft = "-100px";
  438. prompt.style.marginTop = "-30px";
  439. prompt.style.left = "30%";
  440. prompt.style.top = "30%";
  441. prompt.style.color = "white";
  442. prompt.style.fontSize = "25px";
  443. prompt.style.borderRadius = "20px";
  444. prompt.style.textAlign = "center";
  445. prompt.style.lineHeight = "60px";
  446. if (document.getElementById("") == null) {
  447. document.body.appendChild(prompt);
  448. prompt.innerHTML = data;
  449. setTimeout(function () {
  450. document.body.removeChild(prompt);
  451. }, time);
  452. }
  453. }
  454. /****提示弹窗无需点击的函数*****结束*****************************************/
  455. /*
  456. /***********************备忘内容区:.memo_content_area *****开始*******************************/
  457. var uptext = document.querySelector(".up-textarea");
  458. var addto = document.querySelector(".abb-text");
  459. var text = document.querySelector(".memo_content_area");
  460. /*************添加事件*****************/
  461. addto.onclick = function () {
  462. inserhtml(uptext.value, '');
  463. // 添加后清空输入框
  464. uptext.value = '';
  465. // 焦点放回输入框
  466. uptext.focus();
  467. savetodo();
  468. }
  469. /*************savetodo函数****************/
  470. var savetodo = function () {
  471. let todoarr = [];
  472. let todojs = {};
  473. var econtent = document.querySelectorAll('.JS_content');
  474. for (let index = 0; index < econtent.length; index++) {
  475. todojs.name = econtent[index].innerHTML;
  476. todojs.finish = econtent[index].classList.contains('finish');
  477. todoarr.push(todojs);
  478. todojs = {};
  479. }
  480. save(todoarr);
  481. }
  482. var loadtodo = function () {
  483. let todoarr = load();
  484. for (let index = 0; index < todoarr.length; index++) {
  485. inserhtml(todoarr[index].name, todoarr[index].finish ? 'finish' : '');
  486. }
  487. }
  488. /*********本地持久储存(localStorage)函数*****************************/
  489. var save = function (arr) {
  490. /**JSON.stringify(arr) 先将数组转换为字符串 *localStorage.todotext 然后将字符串保存到本地的todotext中*/
  491. localStorage.todotext = JSON.stringify(arr);
  492. }
  493. /**
  494. *读取函数,把todotext转成数组
  495. *然后返回数组*/
  496. var load = function (arr) {
  497. var arr = JSON.parse(localStorage.todotext);
  498. return arr;
  499. }
  500. /**********************finish样式函数*****************************/
  501. /**********************按钮点击事件*****************************/
  502. text.onclick = function () {
  503. var tg = event.target;
  504. // 获取父元素下的所有子元素
  505. var tgkids = tg.parentElement.children;
  506. /*******************************对复选框的点击事件******************************/
  507. if (tgkids[0].checked) {
  508. tgkids[1].classList.add("finish");
  509. }
  510. else {
  511. tgkids[1].classList.remove("finish");
  512. }
  513. // 保存更改的样式
  514. savetodo();
  515. /***********************对选择的进行删除********************************************/
  516. var Select = document.getElementById("delete");
  517. Select.onclick = function () {
  518. if (confirm("是否删除所选?")) {
  519. var check = document.getElementsByName("checkbox");
  520. for (var i = 0; i < check.length; i++) {
  521. if (check[i].checked) {
  522. check[i].parentElement.remove();
  523. i--;
  524. // 删除后保存
  525. savetodo();
  526. }
  527. }
  528. }
  529. }
  530. }
  531. var inserhtml = function (val, cls) {
  532. text.insertAdjacentHTML("beforeend",
  533. `<div>
  534. <input type="checkbox" name='checkbox'>
  535. <span class='JS_content ${cls}'>${val}</span> </div>`
  536. )
  537. }
  538. loadtodo();
  539. /********************文本操作框*****************************************/
  540. // 1. 获取元素
  541. var login = document.querySelector('.login');
  542. var mask = document.querySelector('#memo');
  543. // 2. 点击弹出层这个链接link,让mask和login显示出来
  544. abb_window.addEventListener('click', function () {
  545. mask.style.display = 'block';
  546. login.style.display = 'block';
  547. });
  548. // 3. 点击closeBtn就隐藏mask和login
  549. closeBtn.addEventListener('click', function () {
  550. // mask.style.display = 'none';
  551. login.style.display = 'none';
  552. });
  553. // 4. 开始拖拽
  554. //(1)当我们鼠标按下,就获得鼠标在盒子内的坐标
  555. title.addEventListener('mousedown', function (e) {
  556. var x = e.pageX - login.offsetLeft;
  557. var y = e.pageY - login.offsetTop;
  558. //(2)鼠标移动的时候,把鼠标在页面中的坐标,减去鼠标在盒子内的坐标就是模态框的left和top值
  559. document.addEventListener('mousemove', move);
  560. function move(e) {
  561. login.style.left = e.pageX - x + 'px';
  562. login.style.top = e.pageY - y + 'px';
  563. }
  564. //(3)鼠标弹起,就让鼠标移动事件移除
  565. document.addEventListener('mouseup', function () {
  566. document.removeEventListener('mousemove', move);
  567. });
  568. });
  569. /**************************打开URL按钮的JavaScript******************************************/
  570. // 获取打开URL按钮元素
  571. var openBtn = document.getElementById("openButton");
  572. // 添加点击事件处理程序
  573. openBtn.addEventListener('click', function () {
  574. // 获取文件路径
  575. // 这里假设您已经有一个函数来获取文件路径,例如 prompt('请输入文件路径', 'D:/前端学习', '_blank');
  576. var filePath = prompt("请输入网站地址或者本地文件路径", "D:/备忘录信息");
  577. if (filePath) {
  578. // 使用window.location对象的assign()方法导航到指定文件
  579. // window.location.assign(filePath);
  580. // 或者使用window.open()方法打开新窗口导航到指定文件
  581. window.open(filePath);
  582. } else {
  583. displayAlert('info', '未提供有效的文件路径!', 1500);
  584. // alert("未提供有效的文件路径!");
  585. }
  586. });
  587. /**************************本地文件读取的函数******************************************/
  588. window.onload = function () {
  589. var text = document.getElementsByName('uptextarea')[0],
  590. inputFile = document.getElementsByName('inputfile')[0];
  591. //上传文件
  592. inputFile.onchange = function () {
  593. console.log(this.files);
  594. var reader = new FileReader();
  595. reader.readAsText(this.files[0], 'UTF-8');
  596. reader.onload = function (e) {
  597. // urlData就是对应的文件内容
  598. var urlData = this.result;
  599. text.value = urlData;
  600. };
  601. };
  602. };
  603. /**************************复制文本******************************************/
  604. var oContent = document.getElementById('memo');
  605. oContent.ondragend = function () {
  606. document.execCommand("Copy");
  607. // alert("复制成功")
  608. displayAlert('error', '复制成功!', 1500);
  609. };
  610. </script>
  611. </html>

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/384168
推荐阅读
相关标签
  

闽ICP备14008679号