HTML5本地存储账号密码

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>HTML5本地存储账号密码</title>
</head>
<style>
    * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
        /* 文本禁止选中: none; */
        user-select: none;
    }
    body {
        background-color: #144756;
    }
    ::placeholder {
        color: #ff9f05;
        text-shadow: 1px 1px 1px #100000;
    }
    button {
        /* 鼠标移入变小手 */
        cursor: pointer;
    }
    button,
    input {
        border: none;
        outline: none;
        height: 32px;
        font-size: 20px;
        background-color: green;
        padding: 0 10px;
    }
    /* 标题开始 */
    .header_title {
        position: fixed;
        top: 160px;
        left: 80px;
        width: 140px;
        height: 66px;
        border-radius: 50%;
        img {
            float: left;
            width: 66px;
            height: 66px;
            border-radius: 50%;
            transition: transform 0.3s ease;
            &:hover {
                transform: scale(1.2);
            }
        }
        h2 {
            background-image: linear-gradient(to top left,
                    rgba(0, 0, 0, 0.2),
                    rgba(0, 0, 0, 0.2) 30%,
                    rgba(0, 0, 0, 0));
            box-shadow: inset 4px 4px 4px rgba(255, 255, 255, 0.6),
                inset -4px -4px 5px rgba(0, 0, 0, 0.6);
            text-shadow: 0px 1px 0px #999,
                0px 2px 0px #888,
                0px 3px 0px #777,
                0px 4px 0px #666,
                0px 5px 0px #555,
                0px 6px 0px #444,
                0px 7px 0px #333,
                0px 8px 7px #001135;
            /* letter-spacing: -8px; */
            color: #ffffff;
            background-color: #f30303;
            border-radius: 50%;
            background-image: linear-gradient(to top left,
                    rgba(0, 0, 0, 0.2),
                    rgba(0, 0, 0, 0.2) 30%,
                    rgba(0, 0, 0, 0));
            box-shadow: inset 4px 4px 4px rgba(255, 255, 255, 0.6),
                inset -4px -4px 5px rgba(0, 0, 0, 0.6);
            border: 0px solid black;
        }
    }
    /* 标题结束 */
    /* 查看按钮开始 */
    .search_text {
        position: relative;
        top: 2px;
        left: 345px;
        /* 首页按钮 开始*/
        .home_page {
            position: absolute;
            top: 0px;
            left: -200px;
            background-color: #4CAF50;
            color: white;
            border: 1px solid #4CAF50;
            &:hover {
                background-color: #ddd;
                color: rgb(245, 5, 5);
            }
        }
        a {
            font-size: 22px;
            float: left;
            margin: 0 15px;
            text-decoration: none;
            transition: background-color .3s;
            border: 1px solid #ddd;
            color: rgb(252, 232, 130);
            &:hover:not(.home_page) {
                background-color: #ddd;
                font-size: 26px;
                color: rgb(255, 255, 255);
            }
        }
        /* 首页按钮 结束*/
        input {
            border-radius: 50px;
            z-index: 5;
            box-shadow: 0px 0px 24px rgba(253, 253, 253, 0.333);
        }
        button {
            position: absolute;
            top: 0.5px;
            left: 203px;
            height: 30px;
            border-radius: 0 50px 50px 0;
            background-color: rgb(255, 0, 0);
            color: #ffffff;
            &:hover {
                background-color: rgb(7, 7, 7);
                color: #ff0101;
            }
            &:active {
                background-color: rgba(255, 209, 3, 0.986);
                color: #fcf9f9;
                box-shadow: inset -2px -2px 3px rgba(255, 255, 255, 0.6),
                    inset 2px 2px 3px rgba(0, 0, 0, 0.6);
            }
        }
        span {
            color: #fffdfd;
            text-shadow: 1px 1px 1px #100000;
        }
    }
    /* 查看按钮结束 */
    /* 显示查看开始 */
    #find_result {
        position: relative;
        top: 2px;
        left: 345px;
        text-shadow: 1px 1px 1px #100000;
        color: #fff;
        span {
            border-radius: 50px;
            user-select: text;
            color: rgb(254, 255, 254);
            padding: 0 10px;
            background-color: rgb(255, 0, 0);
            font-size: 26px;
        }
    }
    /* 显示查看结束 */
    /* 新增输入框开始 */
    .userform {
        display: flex;
        flex-direction: column;
        position: absolute;
        top: 40px;
        left: 30px;
        input:nth-child(1) {
            border-radius: 48px 48px 0 0;
            box-shadow: 0px -8px 24px rgba(255, 255, 255, 0.333);
        }
        input:nth-child(2) {
            position: relative;
            top: 0px;
            left: -25px;
            border-radius: 50px;
            &::placeholder {
                position: relative;
                top: 0px;
                left: 25px;
            }
            background-color: rgba(1, 112, 1, 0.219);
        }
        input:nth-child(3) {
            border-radius: 0 0 48px 48px;
            box-shadow: 0px 8px 24px rgba(255, 255, 255, 0.333);
        }
        input {
            padding: 16px 52px 16px 35px;
            border: none;
            outline: none;
            width: 100%;
            font-size: 16px;
            color: #fffafa;
            background: linear-gradient(to right, rgba(0, 128, 0, 0.292), green);
        }
        button {
            position: absolute;
            top: 0px;
            left: 200px;
            width: 95px;
            height: 95px;
            padding: 2px;
            border-radius: 50%;
            font-size: 60px;
            background-color: green;
            box-shadow: 8px 0px 24px rgba(255, 255, 255, 0.333);
            &:hover {
                background-color: #0c333f;
                color: #ffffff;
            }
            &:active {
                background-color: rgba(255, 209, 3, 0.986);
                color: #fcf9f9;
                box-shadow: inset -2px -2px 3px rgba(255, 255, 255, 0.6),
                    inset 2px 2px 3px rgba(0, 0, 0, 0.6);
            }
            .plus {
                display: block;
                width: 100%;
                height: 100%;
                background: linear-gradient(#fff, #fff), linear-gradient(#fff, #fff);
                background-size: 50% 2px, 2px 50%;
                background-position: center;
                background-repeat: no-repeat;
            }
        }
        button::before {
            content: "";
            position: absolute;
            top: 0px;
            left: -220px;
            width: 100%;
            height: 100%;
            background-color: rgb(1, 84, 1);
            border-radius: 50%;
            z-index: -1;
            box-shadow: -8px 0px 24px rgba(255, 255, 255, 0.333);
        }
    }
    /* 新增输入框结束 */
    /* 表格样式开始 */
    #list {
        table {
            position: relative;
            top: 3px;
            left: 345px;
            text-shadow: 1px 1px 1px #100000;
            color: #ffffff;
            td {
                text-align: center;
                font-size: 20px;
                button {
                    background-color: #0c333f;
                    border-radius: 50%;
                    color: #ffffff;
                    cursor: no-drop;
                }
                input {
                    background-color: #0c333f;
                    /* 鼠标移入变小手 */
                    cursor: pointer;
                }
                ;
            }
            th:nth-child(3n),
            td:nth-child(3n) {
                display: none;
            }
        }
        td:nth-child(2n) {
            /*文本可以选中复制*/
            user-select: text;
            color: green;
            padding: 0 10px;
        }
        button,
        input {
            border: none;
            outline: none;
            height: 32px;
            font-size: 20px;
            background-color: green;
            padding: 0 10px;
        }
        button {
            background-color: rgba(255, 0, 0, 0.064);
            color: #ff0101;
            text-shadow: 1px 1px 1px #100000;
            /* 粗字体 */
            font-weight: bold;
            &:hover {
                background-color: rgb(255, 0, 0);
                color: #ffffff;
            }
            &:active {
                background-color: rgba(255, 209, 3, 0.986);
                color: #fcf9f9;
                box-shadow: inset -2px -2px 3px rgba(255, 255, 255, 0.6),
                    inset 2px 2px 3px rgba(0, 0, 0, 0.6);
            }
        }
        td input {
            &:hover {
                background-color: rgb(7, 7, 7);
                color: #ff0101;
            }
            &:active {
                background-color: rgba(255, 209, 3, 0.986);
                color: #fcf9f9;
                box-shadow: inset -2px -2px 3px rgba(255, 255, 255, 0.6),
                    inset 2px 2px 3px rgba(0, 0, 0, 0.6);
            }
        }
        /* 表格样式结束 */
    }
    /* 复选框样式开始 */
    input[type="checkbox"] {
        margin: 0px 10px;
        -webkit-appearance: none;
        appearance: none;
        width: 25px;
        height: 25px;
        position: relative;
        border-radius: 50%;
    }
    input[type="checkbox"]::after {
        content: "";
        width: 100%;
        height: 100%;
        border: 2px solid #e9f504;
        position: absolute;
        left: -3px;
        top: -3px;
        border-radius: 50%;
    }
    /* 设置复选框点击之后的样式*/
    input[type="checkbox"]:checked::after {
        height: 15px;
        width: 25px;
        border-top: none;
        border-right: none;
        border-radius: 0;
        transform: rotate(-45deg);
        transition: all 0.5s ease-in-out;
    }
    /* 设置复选框点击之后的样式结束*/
    /* 复选框样式结束 */
</style>
<body>
    <div class="header_title">
        <img src="file:///D:\My homepage\img\jpg\tuzi3.jpg" alt="与妖为邻">
        <h2>账号</h2>
        <h2>密码</h2>
    </div>
    <div>
        <form class="search_text" onsubmit="findOne(event)" action="#">
            <a href="file:///C:\Users\90917\Desktop\备忘录.html" class="home_page">首页</a>
            <input type="text" id="search_site" name="search_site" placeholder="请输入账号查看密码" />
            <button onclick="findOne()">查看</button> <span>提示:有个问题是账号和密码一样才能删除。虽然有点乱,但也记录了很多新知识</span>
        </form>
        <hr />
        <p id="find_result">
        </p>
        <hr />
        <form class="userform" action="#">
            <input type="text" id="keyname" name="keyname" class="text" placeholder="请输入账号" />
            <input type="password" id="sitename" name="sitename" class="text" placeholder="请输入密码" />
            <input type="text" id="siteurl" name="siteurl" placeholder="请输入说明" />
            <button onclick="save()"> <i class="plus"></i></button>
        </form>
    </div>
    <div id="list">
    </div>
    <script>
        //保存数据  
        userAll();
        function save() {
            var site = new Object;
            site.keyname = document.getElementById("keyname").value;
            site.sitename = document.getElementById("sitename").value;
            site.siteurl = document.getElementById("siteurl").value;
            var tode = JSON.stringify(site); //将对象转换为JSON字符串
            localStorage.setItem(site.keyname, tode);
            // alert("保存成功");
            userAll();
            // 清空输入框
            document.getElementById("keyname").value = "";
            document.getElementById("sitename").value = "";
            document.getElementById("siteurl").value = "";
        }
        //查询数据    
        function findOne(event) {
            event.preventDefault(); // 阻止表单提交
            var search_site = document.getElementById("search_site").value;
            var siteurl = localStorage.getItem(search_site);
            var site = JSON.parse(siteurl);
            var find_result = document.getElementById("find_result");
            find_result.innerHTML = '<span>' + search_site + '</span>' + "的密码是:" + '<span>' + site.sitename + '</span>';
        }
        //显示数据
        function userAll() {
            var list = document.getElementById("list");
            if (localStorage.length > 0) {
                var result = "<table border='1'>";
                result += "<tr><th>序号</th><th>账号</th><th>密码</th><th>说明</th><th> <button id='delete'>删除</button></th></tr>";
                for (var i = 0; i < localStorage.length; i++) {
                    var keyname = localStorage.key(i);
                    var tode = localStorage.getItem(keyname);
                    try {
                        var site = JSON.parse(tode);
                        result += "<tr>" +
                            "<td>" + '<button>' + (i + 1) + '</button>' + "</td>" +
                            "<td>" + site.keyname + "</td>" +
                            "<td>" + site.sitename + "</td>" +
                            "<td>" + site.siteurl + "</td>" +
                            "<td> <input type='checkbox' name='checkbox'></td>" +
                            "</tr>";
                    } catch (e) {
                        console.error("Error parsing JSON for key: " + keyname, e);
                    }
                }
                result += "</table>";
                list.innerHTML = result;
                document.body.innerHTML = document.body.innerHTML.replace(/undefined/ig, "<span style='color: red; font-size: 10px;'>$&</span>");
            } else {
                list.innerHTML = "数据为空...";
            }
            // 重新绑定删除按钮事件
            var deleteBtn = document.getElementById("delete");
            deleteBtn.onclick = function () {
                if (confirm("是否删除所选?")) {
                    var checkboxes = document.getElementsByName("checkbox");
                    for (var i = 0; i < checkboxes.length; i++) {
                        if (checkboxes[i].checked) {
                            var keyname = checkboxes[i].parentNode.previousElementSibling.previousElementSibling.textContent;
                            localStorage.removeItem(keyname);
                            checkboxes[i].parentNode.parentNode.parentNode.removeChild(checkboxes[i].parentNode.parentNode);
                            // i--;
                            i = i - 1; // 恢复到之前的索引
                        }
                    }
                    userAll();
                }
            };
            // 重新绑定删除按钮事件结束
        };
    </script>
</body>
</html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/582061.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[论文笔记]SEARCHING FOR ACTIVATION FUNCTIONS

引言 今天带来另一篇激活函数论文SEARCHING FOR ACTIVATION FUNCTIONS的笔记。 作者利用自动搜索技术来发现新的激活函数。通过结合详尽的搜索和基于强化学习的搜索&#xff0c;通过实验发现最佳的激活函数 f ( x ) x ⋅ sigmoid ( β x ) f(x) x \cdot \text{sigmoid}(βx…

Android 学习 鸿蒙HarmonyOS 4.0 第二天(项目结构认识)

项目结构认识 和 了解&#xff1a; 工程目录下的结构如下&#xff1a; 首先能看到有两个.开头的文件&#xff0c;分别是.hvigor 和 .idea。这两个文件夹都是与构建有关系的&#xff0c; 如果你开发过安卓app&#xff0c;构建完会生成一个apk安装包&#xff0c;鸿蒙则是生成hap…

android 分区存储(沙盒存储)适配总结

目录 一、分区存储概念 1.外部存储分类 2.分区存储如何影响文件访问 二、分区适配方案 1. 应用分区存储的文件访问规定 (1).应用专属目录--私有目录 (2).共享目录文件--公有目录 2.MediaStore API介绍 3.Storage Access Framework介绍 三、所有文件访问权限 四、总结…

急急急!微信朋友圈删除了怎么恢复?

微信朋友圈是我们与朋友分享生活点滴的重要平台&#xff0c;但有时候微信出现异常&#xff0c;导致我们编辑好的朋友圈被删除了&#xff0c;这时候该怎么办呢&#xff1f; 幸运的是&#xff0c;微信提供了一种简单的方式来恢复已删除的朋友圈内容。微信朋友圈删除了怎么恢复&a…

react 学习笔记二:ref、状态、继承

基础知识 1、ref 创建变量时&#xff0c;需要运用到username React.createRef()&#xff0c;并将其绑定到对应的节点。在使用时需要获取当前的节点&#xff1b; 注意&#xff1a;vue直接使用里面的值&#xff0c;不需要再用this。 2、状态 组件描述某种显示情况的数据&#…

tkinter中是否有必要使用类

1. 问题背景 在使用tkinter编写事件驱动程序时&#xff0c;Fredrik Lundh的教程中提到&#xff0c;创建一个类&#xff08;App&#xff09;作为框架&#xff0c;并以类的实例运行程序&#xff0c;这样会更好&#xff0c;而不是直接启动程序。 以下是问题&#xff1a; 在tkin…

【Go语言快速上手(五)】文件操作协程操作

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Go语言专栏⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Go语言知识   &#x1f51d;&#x1f51d; GO快速上手 1. 前言2. GO语言的文件操…

武汉星起航:挂牌上海股权中心,开启资本新篇章助力跨境电商飞跃

2023年10月30日&#xff0c;武汉星起航电子商务有限公司在上海股权托管交易中心成功挂牌展示&#xff0c;标志着这家在跨境电商领域拥有卓越声誉的企业正式迈入了资本市场的大门。对于武汉星起航来说&#xff0c;这不仅是其发展历程中的一个重要里程碑&#xff0c;更是对其业务…

Python学习笔记------异常

当检测到错误时&#xff0c;Python解释器就无法继续执行了&#xff0c;反而出现一些错误提示&#xff0c;就是所谓异常&#xff08;bug&#xff09; 1、异常的捕获方法 任何程序运行过程中都可能出现异常&#xff0c;我们可以在力所能及的范围内&#xff0c;对可能出现的bug提…

C语言趣味代码(四)

这一篇主要编写几个打字练习的小程序&#xff0c;然后通过这些小程序的实现来回顾复习我们之前学过的知识&#xff0c;然后通过这写打字练习的小程序来提升我们的打字技术和编程技术。 1. 打字练习 1.1 基本打字练习 1.1.1 基本实现 首先我们来制作一个用于计算并显示输入一…

ip网络广播前置放大器SV-7031 接纯后级功放

ip网络广播前置放大器SV-7031 接纯后级功放 感谢您使用我们的网络前置放大器SV-7031。 SV-7031具有1路AC200V OUT电源输出&#xff0c;1路AC200V IN电源输入&#xff1b;RJ45 网络接口&#xff0c;具有网络音频广播、本地广播功能。 18123651365 ip网络广播前置放大器SV-703…

vue-cli+vue3+vite+ts 搭建uniapp项目全过程(一)

unapp官方提供了cli 脚手架创建 uni-app 项目的文档 Vue3/Vite版要求 node 版本 18、20使用Vue3/Vite版创建不会提示选择模板&#xff0c;目前只支持创建默认模板 本文以vue3vitets为例 1、初始化项目 npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project 执行完生成…

就业班 第三阶段(tomcat) 2401--4.28 day1 tomcat1安装配置及单机多实例

企业 Tomcat 运维 文章目录 企业 Tomcat 运维一、Tomcat 简介1、Tomcat好帮手---JDK2、安装Tomcat & JDK1、系统环境说明2 、安装JDK3、安装Tomcat 二、Tomcat目录介绍1、tomcat主目录介绍2、webapps目录介绍3、Tomcat配置介绍&#xff08;conf&#xff09;4、Tomcat的管理…

Linux-管道通信

1. 管道概念 管道&#xff0c;是进程间通信的一种方式&#xff0c;在Linux命令中“ | ”就是一种管道&#xff0c;它可以&#xff0c;连接前一条命令&#xff0c;和后一条命令&#xff0c;把前面命令处理完的内容交给后面&#xff0c;例如 cat filename | grep hello …

本地部署 Meta Llama3-8b

Meta Llama 3(8B) Instruct model performance Meta Llama 3(8B) Pre-trained model performance 使用 Ollama 运行 Llama3 访问 Tags llama3&#xff0c;选择你想运行的模型&#xff0c;例如&#xff0c;8b-instruct-q8_0 拷贝并运行命令&#xff0c;ollama run llama3:8b-…

秋招后端开发面试题 - Java语言基础(上)

目录 Java基础上前言面试题Java 语言的特点JVM JDK JRE什么是跨平台性&#xff1f;原理是什么&#xff1f;什么是字节码?采用字节码的好处是什么?Java 和 C 的区别&#xff1f;注释&#xff1f;关键字关键字 instanceof类型转换关键字 this 和 super关键字 final finally fin…

Android数据恢复:如何在手机上恢复丢失的文件和照片

我们都有 我们错误地从手机中删除重要内容的时刻。确实如此 不一定是我们的错。其他人可以对您的手机数据执行此操作 有意或无意。这在某个时间点发生在我们所有人身上。 但是&#xff0c;今天市场上有各种各样的软件可以 帮助恢复已删除的文件。这些类型的软件被归类为数据恢复…

Linux命令大全 以及搭建hadoop

Liunx系统目录 ├── bin -> usr/bin # 用于存放二进制命令 ├── boot # 内核及引导系统程序所在的目录 ├── dev # 所有设备文件的目录&#xff08;如磁盘、光驱等&#xff09; ├── etc # 配置文件默认路径、服务启动命令存放目录 ├── home # 用户家目录&#…

UEFI安全启动模式下安装Ubuntu的NVIDIA显卡驱动

UEFI安全启动模式下安装ubuntu的nvidia显卡驱动 实践设备&#xff1a;华硕FX-PRO&#xff08;NVIDIA GeForce GTX 960M&#xff09; 一、NVIDIA官网下载驱动 1.1在浏览器地址栏输入https://www.nvidia.cn/drivers/lookup/进入网站&#xff0c;接着手动驱动搜索&#xff0c;并…

【C语言】:动态内存管理

1、为什么要有动态内存分配2、动态内存管理函数2.1 malloc2.2 free2.3 calloc2.4 realloc 3、常见的动态内存的错误3.1 对NULL指针的解引用操作3.2 对动态开辟空间的越界访问3.3 对非动态开辟内存使用free释放3.4 使用free释放一块动态开辟内存的一部分3.5 对同一块动态内存多次…