登陆页面html

目录

一、需求思路:

二、设计代码思路:

三、代码次序:


一、需求思路:

1、需要有两个切换表单来帮助用户有两种登录方式:用户名+密码登录,以及手机号无密码、动态码登录

2、切换时当前表单背景色变化,且会对应一个全新的登录方式页面,

3、密码需要可做显示或隐藏

4、位置居中,需要添加背景图片

二、设计代码思路:

1、先把个表单用代码编写出来,然后顺序进行设计

2、涉及到的技术知识,稍后总结

三、代码次序:

1、打开VS进行创建文件

2、因为后面涉及到图标添加显示,如user,key,eye,所以要提前添加iconfont相关文件:在head的style后面添加如下代码:

<link rel="preload" href="//at.alicdn.com/t/font_2664780_twk9p2w4qu.woff2" as="font" type="font/woff2" crossorigin="anonymous">

<link rel="stylesheet" href="//at.alicdn.com/t/font_2664780_twk9p2w4qu.css">

3、逻辑代码梳理

 <div tab栏   总的大块级元素>
    <img logo 图片插入  位置:正中间偏上>
    <div class=tab_list>  tab列表  表头表单
        <ul> (需要清除类型样式,不要有标识是否有序无序)
            <li class=current_list title1>用户名登录</i>
            <li class=title2>手机号无密码登录</i>
        </ul>
    </div>
    <div class=tab_content>  tab列表内容
        <div 1 class=content_list>
            <input>用户名、密码
            icon font 可视隐藏
            链接 <a>忘记密码</a>
        </div>
        <div 2>
            <input>手机号无密码登录、输入动态码
            获取动态码
        </div>
        <button>登录</button>按钮
    </div>
  </div>
<script>
    window.addEventListener('DOMContentLoaded',function(params){
   1、//显示与隐藏 密码操作

        //先找到id为eye 的元素进行赋值给eye
        //给赋值的eye变量添加单击监听事件,
        //window.alert('ok');此时eye监听事件是好用的
        //找到id为password的元素赋值给password,并把password的类型赋值为type
        //进行判断,password的类型是否为password,是,则变更属性为text,否则,则变更为password属性
        //获取该元素的类样式名称列表
        //循环遍历如果类型 是password且元素列表中元素是icon-eye,则把icon-eye替换成 icon-eye2,睁眼换闭眼
        //如果类型 是text且元素列表中元素是icon-eye2,则把icon-eye2替换成 icon-eye,闭眼换睁眼 
               

  2、 //切换tab表单,并作判断循环切换登录样式

        //外部循环添加事件监听
        //内部循环调整css样式
        //当前下标的表头 需要移除当前的样式,红色
        //并且把对应的下标的列表内容清除样式
        //当前单击选择的表头名字添加current_list样式     
        //当前与表头下标对应的item列表内容的样式设置为block,
        //即页面只显示这一个块状元素,其他元素跟他在同一行的会*换行,
        //挤到下一行那里去,
       
</script>
<body background="./css/img/beijing.jpg" style="display: block;">
<!-- tab栏 -->
    <div class = "tab">
        <img class = "logo" src="./css/img/logo.png" style="width: 140px; height: 50px;">`
        <br>
    <!-- tab列表 表头 -->
     <div class="tab_list" >
         <ul>
            <li class="current_list title1" >用户名登录</li>
            <li class="title1">手机无密码登陆</li>
         </ul>
     </div>
     <!-- 列表内容 -->
     <div class="tab_content" >
         <div class="content_list" style="display: block;">
•            <i class="iconfont icon-user" style="position: absolute; margin-left: 23px; font-size: 20px;"></i> 
•            <input class="inpupt" type="text" placeholder="用户名" autocomplete="off" style="width: 247px;padding-left: 56px;height: 25px;" >
•            <br>
             <i class="iconfont icon-key" style="position: absolute; margin-left: 23px; margin-top: 1px;font-size: 20px;"></i>          
•            <input class="inpupt" id ="password" type="password" placeholder="密码" autocomplete="off" style="width: 247px;padding-left: 56px;height: 25px;">
•            <i id="eye" class="iconfont icon-eye" style="position: absolute; margin-left: -34px; margin-top: 1px;font-size: 20px;"></i>
•            <br>
             <div class="forgetpsw" style="position:absolute; margin-left:279px; font-size: 11px; margin-top: -18px;"> 忘记密码
•            </div>
•         </div> 
•         <br> 
          <div class="content_list" style="display:none" >
•           <input class="inpupt" type="text" placeholder="手机号码" autocomplete="off" style="width: 270px;padding-left: 39px;height: 25px;" >
            <div class="forgetpsw" style="position:absolute; margin-left:259px; font-size: 11px; margin-top: -49px;">    获取动态码
•           </div>
            <br>
•           <input class="inpupt" type="text" placeholder="动态码" autocomplete="off" style="width: 270px;padding-left: 39px;height: 25px;">   
•        </div> 
     </div> 
  <button id="btn" style="background-color: red;font-size: 10px; width: 200px;height: 30px;">登录</button>`
    </div>
<div class="text1" style="font-size: 10px;line-height: 40px; margin-left: 158px;">登录即同意
    <a href="">
        <span style="color: red;">《使用协议》</span>
    </a>
    <a href="">
        <span style="color: red;">《隐私权条款》</span>
    </a>
</div>
<!-- 下方链接内容 --> 
    <div class="line_low">
        <a  href="">
            <img src="./css/img/qq.jfif" style="width: 14px;">
            <span id="wb_connect_btn" >QQ登录</span>
        </a>
        <a  href="">
            <img src="./css/img/weixin.jfif" style="width: 14px;">
            <span id="wb_connect_btn">微信登录</span>
        </a> 
        <a  href="">
            <img src="./css/img/weibo.jfif" style="width: 14px;">
            <span id="wb_connect_btn">微博登录</span>
        </a>
    </div>
    <br>
<!-- 下方链接内容 --> 
    <div class="line_low1">
            <a  href="" >123456789@qq.com</a>&nbsp;
            <a  href="" >联系客服</a>&emsp;
            <a  href="" >帮助中心</a>
    </div>
`</body>`
​
<script>
    window.addEventListener('DOMContentLoaded',function(params){
    //显示与隐藏 密码操作
    //先找到id为eye 的元素进行赋值给eye
        let eye = window.document.querySelector('#eye');
        //给赋值的eye变量添加单击监听事件,
        eye.addEventListener('click',function(params){
            //window.alert('ok');此时eye监听事件是好用的
            //找到id为password的元素赋值给password,并把password的类型赋值为type
           let password = window.document.querySelector('#password');
           let type =password.type;
           //进行判断,password的类型是否为password,是,则变更属性为text,否则,则变更为password属性
           if ('password' == type  ) {
                password.type ='text';
           } else {
            password.type ='password';
           }
           //获取该元素的类样式名称列表
           let list = eye.classList;
           window.console.log(list);
           //循环遍历如果类型 是password且元素列表中元素是icon-eye,则把icon-eye替换成 icon-eye2,睁眼换闭眼
           for (let index = 0; index < list.length; index++) {
                const element = list[index];
                if ('password' == type && "icon-eye" == element) {
                    list.replace('icon-eye','icon-eye2');
                    //如果类型 是text且元素列表中元素是icon-eye2,则把icon-eye2替换成 icon-eye,闭眼换睁眼
                } else if('text' == type && "icon-eye2" == element) {
                    list.replace('icon-eye2','icon-eye');
                }
            }
        })
        //切换tab表单,并作判断循环切换登录样式
       let titles = window.document.querySelectorAll('.title1');
       window.console.log(titles);
       let content_lists = window.document.querySelectorAll('.content_list');
       window.console.log(content_lists);
       //外部循环添加事件监听
       for (let index = 0; index < titles.length; index++) {
            const title = titles[index];
            title.addEventListener('click',function(params){
                //内部循环调整css样式
                for (let index = 0; index < titles.length; index++) {
                    //当前下标的表头 需要移除当前的样式,红色
                    titles[index].classList.remove('current_list');
                    window.console.log(titles[index]);
                    //并且把对应的下标的列表内容清除样式
                    content_lists[index].style.display = 'none';
                }     
                //当前单击选择的表头名字添加current_list样式     
                title.classList.add('current_list');
                //当前与表头下标对应的item列表内容的样式设置为block,
                //即页面只显示这一个块状元素,其他元素跟他在同一行的会*换行,
                //挤到下一行那里去,
                content_lists[index].style.display = 'block';      
                window.console.log(content_lists[index]);
            });
        }        
    });
</script>
注意:背景图片设置的时候,要铺满整个页面且norepeat
     `background-color:#f7f7f7;`
•     `background-position: center;`
•     `background-repeat: no-repeat;`
•     `background-size: 100%;`
​

上一篇:密码框后的小眼睛怎么写?


下一篇:摄像机的实现之美