【Web APIs】JavaScript 操作元素 ④ ( 修改元素属性示例 | 密码表单标签结构 | 密码输入框样式设置 | 右侧图标按钮设置 | JavaScript 修改元素属性示例 )

news2024/11/15 21:58:51

文章目录

  • 一、案例需求
  • 二、关键要点
    • 1、密码表单标签结构
    • 2、设置盒子样式
    • 3、密码输入框样式设置
    • 4、右侧图标按钮设置
    • 5、盒子模型右侧图标按钮设置
  • 三、JavaScript 修改元素属性示例
  • 四、完整代码示例

JavaScript 中 可以通过 DOM ( 文档对象模型 ) 操作 来 修改网页的 内容 , 结构 , 样式 , 属性 ;


在 【Web APIs】JavaScript 操作元素 ① ( 修改元素内容 | innerText 属性修改元素文本内容 | innerHTML 属性修改元素 HTML 内容 ) 博客中介绍了 使用

  • innerText 属性
  • innerHTML 属性

修改 DOM 元素标签内容的 ;


在 【Web APIs】JavaScript 操作元素 ② ( 修改元素属性 | 直接访问属性 | 使用setAttribute、getAttribute 和 removeAttribute访问属性 ) 博客介绍 通过 DOM 操作 修改元素属性 ;

在 【Web APIs】JavaScript 操作元素 ③ ( 修改表单元素属性 | 表单常用属性 | 表单常用属性修改示例 ) 博客介绍 通过 DOM 操作 修改表单元素属性 ;





一、案例需求



实现一个密码输入框 , 点击右侧按钮可以显示密码 , 再次点击就隐藏密码显示 ;

在这里插入图片描述





二、关键要点




1、密码表单标签结构


密码表单 , 就是将 input 表单标签设置 type 类型为 password ,

<input type="password" name="" id="">

右侧的 眼镜图标 使用 label 标签实现 , 将 input 表单 和 label 放在同一个 div 盒子中 , 并为 div 盒子设置 box 类名 ;

    <div class="box">
        <label for=""></label>
        <input type="password" name="" id="">
    </div>

默认样式如下 :
在这里插入图片描述
在这里插入图片描述


2、设置盒子样式


设置盒子水平居中 : 设置 div 盒子模型的 margin 属性 ,

  • 第一个参数表示上下的外边距 , 设置 100 像素 ;
  • 第二个参数 auto 表示水平方向居中 ;
            /* 上下间距 100 像素,左右自动居中 */
            margin: 100px auto;

设置盒子相对定位 : 盒子模型 内部 需要将 图片 使用绝对定位定位到 右侧 垂直居中 位置 , 则 子元素 绝对定位 , 父容器 必须设置 相对定位 , " 子绝父相 " 原则 ;

            /* 相对定位,相对于其正常位置进行定位 */
            position: relative;

部分代码示例 :

        .box {
            /* 设置外部div的样式 */
            /* 相对定位,相对于其正常位置进行定位 */
            position: relative;
            /* 宽度为 400 像素 */
            width: 400px;
            /* 底部边框为 1 像素实线,颜色为灰色 */
            border-bottom: 1px solid #ccc;
            /* 上下间距 100 像素,左右自动居中 */
            margin: 100px auto;
        }

下图红色矩形框就是 div 盒子模型的范围 , 中间的输入框是 div 内部的 input 表单 ;

在这里插入图片描述


3、密码输入框样式设置


密码输入框样式设置 :

设置 输入框 的 宽度为 370 像素 , 高度设置为 30 像素 , 右侧的 小图标 大小 预留 30 x 30 像素的位置 , 设置后的样式如下 :
在这里插入图片描述

设置 border 属性 , 将边框宽度设置为 0 , 就可以取消上述边框 ;

            /* 去掉边框 */
            border: 0;

取消边框后的样式 , 边框在默认时不显示 , 但是将光标移动到 输入框后 , 有一层选中 外边框显示出来 ;

在这里插入图片描述

设置 outline: none 属性 , 可以取消光标选中后的外边框 ;

            /* 去掉默认的外边框样式 */
            outline: none;

取消外边框的样式如下 :

在这里插入图片描述


部分代码示例 :

	.box input {
            /* 设置 .box 内的输入框样式 */
            /* 输入框宽度为370像素 */
            width: 370px;
            /* 输入框高度为30像素 */
            height: 30px;
            /* 去掉边框 */
            border: 0;
            /* 去掉默认的外边框样式 */
            outline: none;
        }

4、右侧图标按钮设置


设置 右侧 图标按钮 img 标签元素 , 在 label 标签中添加 img 标签子元素 ;

    <div class="box">
        <label for="">
            <img src="images/open.png" alt="" id="eye">
        </label>
        <input type="password" name="" id="">
    </div>

默认的样式如下 :
在这里插入图片描述

设置 img 标签的 样式 , 要将 img 标签设置到 div 容器的右侧 , 并且必须脱离标准流 , 可以使用 浮动 , 定位 两种方式 , 这里使用 绝对定位 设置该 img 标签位置 ;

将图片放置在 布局右侧 , 距离顶部 和 右侧 各 2 像素 , 如果将 图片大小设置为 24x24 像素 , 则底部距离图片也有 2 像素 ;

            /* 绝对定位,相对于最近的非static定位父元素 */
            position: absolute;
            /* 距离父元素顶部 2 像素 */
            top: 2px;
            /* 距离父元素右侧 2 像素 */
            right: 2px;

设置的效果如下 :
在这里插入图片描述

设置 img 标签大小为 24 x 24 像素 , 即可实现如下效果 :

            /* 图片宽度高度为24像素 */
            width: 24px;
            height: 24px;

在这里插入图片描述


5、盒子模型右侧图标按钮设置


部分代码示例 :

        .box {
            /* 设置外部div的样式 */
            /* 相对定位,相对于其正常位置进行定位 */
            position: relative;
            /* 宽度为 400 像素 */
            width: 400px;
            /* 底部边框为 1 像素实线,颜色为灰色 */
            border-bottom: 1px solid #ccc;
            /* 上下间距 100 像素,左右自动居中 */
            margin: 100px auto;
        }
        
        .box input {
            /* 设置 .box 内的输入框样式 */
            /* 输入框宽度为370像素 */
            width: 370px;
            /* 输入框高度为30像素 */
            height: 30px;
            /* 去掉边框 */
            border: 0;
            /* 去掉默认的外边框样式 */
            outline: none;
        }
        
        .box img {
            /* 设置 .box 内的图片样式 */
            /* 绝对定位,相对于最近的非static定位父元素 */
            position: absolute;
            /* 距离父元素顶部 2 像素 */
            top: 2px;
            /* 距离父元素右侧 2 像素 */
            right: 2px;
            /* 图片宽度高度为24像素 */
            width: 24px;
            height: 24px;
        }




三、JavaScript 修改元素属性示例



首先 , 获取 DOM 元素 ;

然后 , 设置 flag 标志位 , 用于记录 当前 密码表单的状态 , 如果当前值为 0 说明是 密码状态 , 此时 密码是隐藏的 , 如果当前值为 1 说明是 文本状态 , 此时 密码是显示的 ;

最后 , 设置 DOM 元素的 点击事件 , 根据 flag 值 设置 密码表单 的显示样式 ;


不分代码示例 :

        // 1. 获取 DOM 元素
        // 获取页面中第一个 img 元素
        var show_password = document.querySelector('img');
        // 获取页面中第一个 input 元素
        var password = document.querySelector('input');

        // 2. 注册事件处理程序
        // 定义一个标志位,用于记录密码显示状态,默认为隐藏状态
        var flag = 0;
        show_password.onclick = function() {
            // 点击一次之后,flag 一定要变化
            if (flag == 0) {
                // 如果密码是隐藏状态 , 点击按钮显示密码
                // 将密码字段的类型设置为文本,以显示密码内容
                password.type = 'text';

                // 更换显示密码的图标为“打开眼睛”的图标
                show_password.src = 'images/open.png';

                // 更新标志位,表示密码现在是显示状态
                flag = 1;
            } else {
                // 如果密码是显示状态 , 点击按钮隐藏密码
                // 将密码字段的类型重新设置为密码,隐藏密码内容
                password.type = 'password';

                // 更换显示密码的图标为“关闭眼睛”的图标
                show_password.src = 'images/close.png';

                // 更新标志位,表示密码现在是隐藏状态
                flag = 0;
            }
        }




四、完整代码示例



完整代码示例 :

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <!-- 设置 meta 视口标签 -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no,maximum-scale=1.0,minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>JavaScript</title>
    <style>
        .box {
            /* 设置外部div的样式 */
            /* 相对定位,相对于其正常位置进行定位 */
            position: relative;
            /* 宽度为 400 像素 */
            width: 400px;
            /* 底部边框为 1 像素实线,颜色为灰色 */
            border-bottom: 1px solid #ccc;
            /* 上下间距 100 像素,左右自动居中 */
            margin: 100px auto;
        }
        
        .box input {
            /* 设置 .box 内的输入框样式 */
            /* 输入框宽度为370像素 */
            width: 370px;
            /* 输入框高度为30像素 */
            height: 30px;
            /* 去掉边框 */
            border: 0;
            /* 去掉默认的外边框样式 */
            outline: none;
        }
        
        .box img {
            /* 设置 .box 内的图片样式 */
            /* 绝对定位,相对于最近的非static定位父元素 */
            position: absolute;
            /* 距离父元素顶部 2 像素 */
            top: 2px;
            /* 距离父元素右侧 2 像素 */
            right: 2px;
            /* 图片宽度高度为24像素 */
            width: 24px;
            height: 24px;
        }
    </style>

</head>

<body>
    <div class="box">
        <label for="">
            <img src="images/close.png" alt="" id="">
        </label>
        <input type="password" name="" id="">
    </div>

    <script>
        // 注意 : HTML 文档加载顺序是从上到下加载 
        // 这里要先加载标签 , 然后加载 JavaScript 脚本

        // 页面加载后 , 会自动执行该 JavaScript 脚本

        // 1. 获取 DOM 元素
        // 获取页面中第一个 img 元素
        var show_password = document.querySelector('img');
        // 获取页面中第一个 input 元素
        var password = document.querySelector('input');

        // 2. 注册事件处理程序
        // 定义一个标志位,用于记录密码显示状态,默认为隐藏状态
        var flag = 0;
        show_password.onclick = function() {
            // 点击一次之后,flag 一定要变化
            if (flag == 0) {
                // 如果密码是隐藏状态 , 点击按钮显示密码
                // 将密码字段的类型设置为文本,以显示密码内容
                password.type = 'text';

                // 更换显示密码的图标为“打开眼睛”的图标
                show_password.src = 'images/open.png';

                // 更新标志位,表示密码现在是显示状态
                flag = 1;
            } else {
                // 如果密码是显示状态 , 点击按钮隐藏密码
                // 将密码字段的类型重新设置为密码,隐藏密码内容
                password.type = 'password';

                // 更换显示密码的图标为“关闭眼睛”的图标
                show_password.src = 'images/close.png';

                // 更新标志位,表示密码现在是隐藏状态
                flag = 0;
            }
        }
    </script>
</body>

</html>

执行效果 :

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

牛客JS题(四十六)斐波那契数列

注释很详细&#xff0c;直接上代码 涉及知识点&#xff1a; 递归斐波那契数列 题干&#xff1a; 我的答案 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><style>/* 填写样式 */</style></head><body><!-…

宝马销量崩了,不卷价格就卷铺盖

文 | AUTO芯球 作者 | 雷慢 宝马这回真天塌了&#xff0c; 还记得7月初宝马宣布涨价吗&#xff0c; 我当初就劝我那准备宝马i3的同学说&#xff0c; 别急&#xff0c;怎么涨上去的就会怎么跌回去。 这不&#xff0c;一涨价&#xff0c;价格是保住了&#xff0c;但是销量惨…

【获取本机简要配置信息】(bat)

输出结果(示例)如下 如果提示 ‘系统找不到指定的路径’ 请把set Log那行的路径换一下&#xff0c;换成一个存在的路径就行 比如直接放C盘 set LogC:\本机配置信息.txt 如果提示 “客户端没有所需的特权” 请右键后选择 “以管理员身份运行” 上代码 echo off::设置信息保存路…

【17】暴力递归改dp(下)

目录 一.两人玩游戏 二.象棋游戏 三.鲍勃存活 四.凑钱方案数问题 一.两人玩游戏 题目&#xff1a;有一个正整数数组&#xff0c;A和B两个人轮流拿数组的最左或最右的数值&#xff0c;返回最终的最高分数。 暴力递归版本 public static int win1(int[] arr) {if (arr null…

Chat App 项目之解析(三)

Chat App 项目介绍与解析&#xff08;一&#xff09;-CSDN博客文章浏览阅读76次。Chat App 是一个实时聊天应用程序&#xff0c;旨在为用户提供一个简单、直观的聊天平台。该应用程序不仅支持普通用户的注册和登录&#xff0c;还提供了管理员登录功能&#xff0c;以便管理员可以…

webflux源码解析(1)-主流程

目录 1.关键实例的创建1.1 实例创建1.2 初始化 2.处理请求的关键流程2.1 从ReactorHttpHandlerAdapter开始2.1 DispatcherHandler的初始化2.2查找mapping handler2.3 处理请求(执行handler)2.4 返回结果处理 3.webflux的配置装配参考&#xff1a; WebFlux是Spring 5.0框架推出的…

算法的学习笔记—对称的二叉树(牛客)

&#x1f600;前言 在算法的世界中&#xff0c;二叉树是一个极其重要的数据结构。它不仅广泛应用于各种算法的设计中&#xff0c;也是面试中常见的考察点之一。今天&#xff0c;我们将深入探讨一个经典的二叉树问题——对称的二叉树&#xff0c;并且会展示如何通过Java代码来解…

趋动VAICP技术认证全球考试正式上线

8月18日&#xff0c;趋动科技主办的VAICP(VirtAl Certified Professional) Al算力池化专家认证考试正式在 Pearson VUE上线。 即日起&#xff0c;凡参加过VAICP培训的学员&#xff0c;可立即通过Pearson VUE官网注册参加考试&#xff0c;官网链接&#xff1a;https://home.pea…

是肯定,更是动力 | 一封封感谢信纷至沓来,全视通服务获赞誉

在全视通的故事里&#xff0c;有那么一群人&#xff0c;他们穿梭于全国各地&#xff0c;奔波于各种交付调试、维检。山河湖海&#xff0c;严寒酷暑&#xff0c;从晨曦至夜幕&#xff0c;他们只为兑现那份让客户更加满意的承诺。他们是使命必达的守护者——全视通服务团队。他们…

串口UART

常见通信接口 串口定义 串口定义&#xff1a; 通用串行异步收发器 通用&#xff1a;UART的应用非常广泛&#xff0c;应用领域&#xff1a;工控行业&#xff0c;电力系统等串行&#xff1a;处理器和外设之间只需连接一根信号线&#xff0c;处理器和外设数据传输是一个bit位一…

CORS跨域问题全解:原理、问题与解决方案

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

【Qt】QDesigner 源码 控件图片资源路径

qttools-5.12.12-designer-1\qttools-5.12.12-designer\qttools-5.12.12\src\designer\src\components\formeditor\images\win qttools-5.12.12-designer-1\qttools-5.12.12-designer\qttools-5.12.12\src\designer\src\components\formeditor\images\widgets

docker部署drawio

1&#xff09;介绍Drawio.io GitHub&#xff1a;GitHub - jgraph/drawio: draw.io is a JavaScript, client-side editor for general diagramming. Draw.io是一款开源的绘制流程图的工具&#xff0c;拥有大量免费素材和模板。程序本身支持中文在内的多国语言&#xff0c;创建…

【源码+文档+调试讲解】健美操评分系统

摘 要 健美操评分系统采用B/S架构&#xff0c;数据库是MySQL。系统的搭建与开发采用了先进的JAVA进行编写&#xff0c;使用了springboot框架。该系统从三个对象&#xff1a;由管理员、裁判员和用户来对系统进行设计构建。主要功能包括首页&#xff0c;个人中心&#xff0c;裁判…

2024潜力市场:工商业屋顶光伏项目开发!

随着全球对可再生能源的日益重视和“双碳”目标的持续推进&#xff0c;工商业屋顶光伏项目作为分布式光伏的主要类型之一&#xff0c;正迎来前所未有的发展机遇。 一、技术成熟度与成本降低 近年来&#xff0c;光伏技术的飞速发展显著提升了光伏组件的转换效率&#xff0c;并降…

记git仓库由局域网迁移到外网

项目管理平台&#xff1a;gitlab 一台云主机 流程&#xff1a; 1.外网机器上搭建gitlab 2.项目网站上新建空白项目 3.本机就项目切换到主分支&#xff0c;切换源&#xff1a;git remote set-url origin http://x.x.x.x:yyy/zzzz/new.git 4.登陆新平台的账号&#xff0c;使…

【吸引力法则】探究人生欲:追求深度体验与宇宙链接

文章目录 什么是人生欲&#xff1f;唤醒人生欲&#xff1a;克服配得感的三大障碍1 第一大障碍&#xff1a;法执的压制2 第二大障碍&#xff1a;家庭的继承2.1 家庭创伤的代际传递2.2 家庭文化基因的传递2.2.1 “成年人最大的美德是让自己的生活过得更加精彩。”2.2.2 荷欧波诺波…

【数据分享】1999—2022年地级市地区生产总值及一二三产构成数据(Shp/Excel格式)

在之前的文章中&#xff0c;我们分享过基于2000-2023年《中国城市统计年鉴》整理的1999-2022年地级市的人口相关数据、各类用地面积数据、污染物排放和环境治理相关数据、房地产投资情况和商品房销售面积、社会消费品零售总额和年末金融机构存贷款余额、一般公共预算收支状况、…

第二十三节、血量更新逻辑的实现

一、创建代码 引入命名空间 using UnityEngine.UI; 调用UI必须有这个代码 二、ScriptObject类 1、是一个持久化存储文件的类型 接收所有的事件方法 先继承SO类&#xff0c;然后创建项目菜单 2、进行订阅 放入事件类&#xff0c;关联代码&#xff0c;即可进行广播 传递给这…

【什么是依赖倒置原则?】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…