Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >前端Demo|实现tab标签切换的登录页面|适合学习前端三件套的同学

前端Demo|实现tab标签切换的登录页面|适合学习前端三件套的同学

作者头像
微笑的小小刀
发布于 2022-04-12 07:38:49
发布于 2022-04-12 07:38:49
1.2K02
代码可运行
举报
文章被收录于专栏:java技术大本营java技术大本营
运行总次数:2
代码可运行

学习了这么多天

我们来做个小练习

下面是预计达到的效果

点击登录会出现登录界面

注册则会出现注册的界面

我们的做界面设计的大致思路

等到写完,再做一些调试

下面是完整代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>运用JavaScript实现的动态页面</title>
    <style>
        /* Reset(重置)浏览器默认样式 */
        *{
            margin: 0;
            padding: 0;
        }
        body{
            background: url("IMG_0275.JPG");
            background-size: cover;
            /* 背景图全覆盖 */
        }
        .work{
            opacity: 0.9;
            filter:alpha(opacity=90);
            /* opacity或者alpha的值强调的是不透明度 */
            width: 340px;
            background: white;
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%,-50%);
            /* 设置top:50%,left:50%,然后使用transform来向左向上平移半个内元素的宽和高 */
            border-radius: 5px;

        }
        .item{
            width: 340px;
            height: 60px;
            background: #eeeeee;
        }
        .item div{
            width: 170px;
            height: 60px;
            display: inline-block;
            color: black;
            font-size: 18px;
            text-align: center;
            line-height: 60px;
            cursor: pointer;
        }
        .content{
            width: 100%;
        }
        .content div{
            margin: 20px 30px;
            display: none;
            text-align: left;
        }
        .content p{
            color: #4a4a4a;
            margin-top: 30px;
            margin-bottom: 6px;
            font-size: 15px;
        }
        .content input[type="text"],.content input[type="password"]{
            width: 100%;
            height: 40px;
            border-radius: 3px;
            border:1px solid #adadad;
            padding: 0 10px;
            box-sizing: border-box;
        }
        .content input[type="submit"]{
            margin-top: 40px;
            width:100%;
            height: 40px;
            border-radius: 5px;
            color:white;
            border:1px solid #adadad;
            background: #00dd60;
            cursor: pointer;
            letter-spacing: 4px;
            margin-bottom: 40px;
        }
        .active{
            background: white;
        }
        .item div:hover{
            background:#f6f6f6;

        }
        .item{
            display:flex;
        }
</style>
</head>

<body>
    <div class="work" >
        <!-- 登录与注册页面切换 -->
        <div class="item">
            <div class="active">登录</div><div>注册</div>
        </div>
        <div class="content">
            <!-- 登录页面 -->
            <div style="display: block;">
                <p>账号</p>
                <input type="text" placeholder="username">
                <p>密码</p>
                <input type="password" placeholder="password">
                <br>
                <input type="submit" value="登录">
            </div>
        <!-- 注册页面 -->
            <div>
                <p>用户名</p>
                <input type="text" placeholder="username">
                <p>密码</p>
                <input type="password" placeholder="password">
                <p>邮箱</p>
                <input type="text" placeholder="email">
                <br>
                <input type="submit" value="注册">
            </div>
        </div>
    </div>
</body>
<script>
    // 实现tab标签切换
    window.onload=function(){
        var item=document.getElementsByClassName("item");
        var it=item[0].getElementsByTagName("div");
        var content=document.getElementsByClassName("content");
        var con=content[0].getElementsByTagName("div");
        for(let i=0;i<it.length;i++){
            //要为每一个盒子绑定事件,所以用到了for循环
            it[i].onclick=function(){
                for(let j=0;j<it.length;j++){
                    it[j].className='';
                    con[j].style.display="none";
                    // 隐藏未点击的盒子
                }
                this.className="active";
                // 点击的那个盒子添加指定类名
                it[i].index=i;
                //循环把i的值赋值给it的index
                con[i].style.display="block";
                //根据索引显示相应的div
            }
        }
    }
</script>
</html>

知识点总结

CSS

1.display:inline-block

不设置宽度时,内容撑开宽度;不会独占一行,支持宽高,代码换行被解析成空格,总而言之,inline-block包含了行内元素和块内元素的特点,即设置了inline-block属性的元素既拥有了block元素可以设置width和height的特性,又保持了inline元素不换行的特性。

2.display:none

可以隐藏我们需要藏起来的区域,我们点击“登录界面”时,“注册界面”就是这么被隐藏起来的。

3.display:block

使用后此元素将显示为块级元素,前后会带有换行符;

块级元素特点:总是以一个块的形式表现出来,占领一整行。若干同级块元素会从上之下依次排列(使用float属性除外)。

4.box-sizing: border-box

在了解它之前,我们先要知道盒子模型是什么。

盒子模型是指:外边距(margin)+ border(边框) + 内边距(padding)+ content(内容)可以把每一个容器,比如div,都看做是一个盒子模型。

比如,我们给一个div设置的宽高为500px,但实际你设置的只是content,之后你又设置了padding:10px;border:1px solid red;这时div的宽高就会变为522px (content 500px + padding 20px + border 2px),相当于一个元素的实际宽高是由:padding + border + content 组成。加了box-sizing:border-box属性,padding和border的值就不会在影响元素的宽高,相当于把padding和border的值都算在content里,盒子模型会自动根据padding和border的值来调整content的值,就不需要手动调整,省时又省力。

JavaScript

tab标签切换

利用for循环遍历“登录”和“注册”div块;

选中的div进行 onclick 事件时,首先删除所有div的类名,隐藏所有的div盒子

然后给当前点击的按钮添加指定类名,给当前所点击按钮相关联的盒子添加指定属性

E N D

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java技术大本营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Web前端基础(03)
本节所有的代码: https://download.csdn.net/download/qq_44273429/12729648 未完待续,,, 下一节链接: Web前端基础(04)
海拥
2021/08/23
5340
Web前端进阶高薪必会的54个CSS重难点知识梳理(1)
本次我把CSS中的重难点整理出来,总共54个核心知识点,供大家复习,希望能帮到大家。这些重难点是进阶高薪必需要掌握的知识点,同时也是面试必问的内容。
艾编程
2022/12/05
1.8K0
Web前端进阶高薪必会的54个CSS重难点知识梳理(1)
50道CSS基础面试题
23 0 0 50道CSS基础面试题 1 介绍一下标准的CSS的盒子模型?与低版本IE的盒子模型有什么不同的? 标准盒子模型:宽度=内容的宽度(content)+ border + padding + margin 低版本IE盒子模型:宽度=内容宽度(content+border+padding)+ margin 2 box-sizing属性? 用来控制元素的盒子模型的解析模式,默认为content-box context-box:W3C的标准盒子模型,设置元素的 height/width 属性
慕白
2018/07/06
1.6K0
《CSS 世界》读书笔记-流与宽高
1. 前言 在学习 CSS 的过程中,我经常会被数不清的属性和特性弄得晕头转向。作为前端新手,经常会坐在显示器前花很多很多时间去 “追” 视觉稿,也经常会在 “为什么这个属性不生效” 和 “为什么这个属性生效了但是不是我想要的效果” 之间摇摆,直到我开始看张鑫旭老师的《CSS 世界》,才开始渐渐地走进 CSS 世界,才明白原来 CSS 的背后也是有一套 “物理” 和 “魔法” 法则。遵循着法则,很多问题也许会迎刃而解。 因为在阅读本书 CSS 的 “流” 相关内容时让我有了一种恍然大悟的感觉,所以才有了此篇
用户1097444
2022/07/12
1.4K0
《CSS 世界》读书笔记-流与宽高
CSS盒子模型最详解
举例子: 结论 1.在HTML中所有的标签都可以设置 宽度/高度 == 指定可以存放内容的区域 内边距 == 填充物 边框 == 手机盒子自己 外边距 == 盒子和盒子之间的间隙
贵哥的编程之路
2020/11/03
4360
CSS盒子模型最详解
自动切换背景的登录页面
本文讲解如何美化登录页面,给登录页面加上一个不断随着时间自动切换的背景的功能,这样更好看。
GeekLiHua
2025/01/21
1620
自动切换背景的登录页面
148道 CSS 与 JavaScript 基础面试题
本篇文章主要分享 CSS 与 JavaScript 基础面试题。CSS 和 JavaScript 都是前端基础知识,是前端学习中一定要学的内容,也是前端面试中必不可少的内容。
前端小tips
2021/12/12
1.2K0
148道 CSS 与 JavaScript 基础面试题
前端面试题归类-css
网页看着不方便,想要文档可以私聊我。要是有错别字和错误的地方,请各位大佬直接指出,谢谢啦!!
肥晨
2023/02/16
1.8K0
CSS学习笔记(基础篇)
CSS 指层叠样式表 (Cascading Style Sheets)(级联样式表)
Daotin
2018/08/31
4.7K0
CSS学习笔记(基础篇)
【CSS】947- 十几个 CSS 高级技巧汇总
「列举一下效果」 设置input的placeholder的字体样式 单行和多行文本超出省略号 负边距使用技巧 定位同时设置方位情况 相邻兄弟选择器之常用场景 outline属性的妙用技巧 隐藏滚动条或更改滚动条样式 纯CSS绘制三角形 虚线框绘制技巧 卡券效果制作 隐藏文本的常用两种方法 表格边框合并 「1-1. 设置input 的placeholder的字体样式」 设置input占位符的样式 input::-webkit-input-placeholder { /* Chrome/Opera/Sa
pingan8787
2021/05/14
4620
【CSS】947- 十几个 CSS 高级技巧汇总
CSS魔法堂:重新认识Box Model、IFC、BFC和Collapsing margins
前言                                   盒子模型作为CSS基础中的基础,曾一度以为掌握了IE和W3C标准下的块级盒子模型即可,但近日在学习行级盒子模型时发现原来当初是
^_^肥仔John
2018/01/18
1.1K0
CSS魔法堂:重新认识Box Model、IFC、BFC和Collapsing margins
前端面试题2(CSS)
对BFC规范(块级格式化上下文:block formatting context)的理解?
keyWords
2018/09/19
3K0
html总结01
lesson01~lesson02基础 <!DOCTYPE html> <html lang="en"> <!-- ########################## lesson01 #########################--> <head> <!-- 注释:对代码的解释说明的文字,不会执行 --> <meta charset="UTF-8"> <title>网页的标题</title> <!-- link标签,是用来引入一个外部的css文
周小董
2019/03/25
2.4K0
面试官:对下面的 CSS 题目回答一遍
在标准模型中,如果你给盒设置 width 和 height,实际设置的是 content box。padding 和 border 再加上设置的宽高一起决定整个盒子的大小
公众号---人生代码
2021/04/22
1.3K0
前端-CSS-更改标签样式-长宽字体-背景-边框-显示方式-定位-透明度-扩展点-02
目录 控制标签元素样式 长宽属性、字体属性、文本对齐、文本装饰、首行缩进 背景属性、边框属性、圆角 display 显示方式 盒子模型 margin、padding... float浮动 overflow 清除溢出(超出div大小的部分) position 定位 对文档流的影响 z-index 层级 opacity 标签整体透明度 去掉li 前面的标识 文本垂直居中 单行文本居中 作业案例 关于自适应(不需要了解) 控制标签元素样式 小心得: 样式有继承(遗传)效果(子元素将继承父元素的样式,如果子元素
suwanbin
2019/09/26
1.6K0
前端-CSS-更改标签样式-长宽字体-背景-边框-显示方式-定位-透明度-扩展点-02
前端开发面试题答案(二)
(2)盒模型:内容(content)、填充(padding)、边界(margin)、边框(border);
疯狂的技术宅
2019/03/28
1.4K0
【Web APIs】JavaScript 操作元素 ⑥ ( 关闭对话框案例 | display 属性简介 | 页面标签结构和样式 | 盒子模型细节 | 绝对布局要点 - 设置负值即可超出父容器模型 )
在 【Web APIs】JavaScript 操作元素 ① ( 修改元素内容 | innerText 属性修改元素文本内容 | innerHTML 属性修改元素 HTML 内容 ) 博客中介绍了 使用
韩曙亮
2024/08/09
2880
【Web APIs】JavaScript 操作元素 ⑥ ( 关闭对话框案例 | display 属性简介 | 页面标签结构和样式 | 盒子模型细节 | 绝对布局要点 - 设置负值即可超出父容器模型 )
Css详细介绍
(就近原则): !important > id > class > tag (!important 比内联优先级高)
FGGIT
2024/10/15
1910
前端课程——盒子模型
盒子模型又称为框模型,HTML页面所有的元素都具有盒子模型,该模型用于设计HTML页面和实现HTML页面布局。
Dreamy.TZK
2020/04/09
1.2K0
十几个CSS高级常见技巧汇总(虚线框、三角形、优惠券卡券、滚动条、多行溢出...)
来自:CSDN ,作者:前端一零仙人 链接:https://blog.csdn.net/weixin_41556756/article/details/114196921 「列举一下效果」 设置input的placeholder的字体样式 单行和多行文本超出省略号 负边距使用技巧 定位同时设置方位情况 相邻兄弟选择器之常用场景 outline属性的妙用技巧 隐藏滚动条或更改滚动条样式 纯CSS绘制三角形 虚线框绘制技巧 卡券效果制作 隐藏文本的常用两种方法 表格边框合并 「1-1. 设置input 的pl
微芒不朽
2022/09/13
6610
相关推荐
Web前端基础(03)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验