QQ注册界面仿写(HTML+CSS+JS)

news2024/11/25 20:19:53

在这里插入图片描述

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。
🍎个人主页:Java Fans的博客
🍊个人信条:不迁怒,不贰过。小知识,大智慧。
💞当前专栏:前端案例分享专栏
✨特色专栏:国学周更-心性养成之路
🥭本文内容:QQ注册界面仿写(HTML+CSS+JS)
更多内容点击👇
       JavaScript—实现手风琴画册

文章目录

    • 项目素材
    • 项目展示
    • 项目框架
    • 部分知识思路
    • 项目代码

在这里插入图片描述

项目素材

在这里插入图片描述
各个图片的下载地址如下:

  • true.png 图片下载地址:https://qq-web.cdn-go.cn/zc.qq.com/f59c7d00/v3/img/icon-tick@3x.png
  • 箭头.png 图片下载地址:https://qq-web.cdn-go.cn/zc.qq.com/f59c7d00/v3/img/icon-arrow-right@3x.png
  • 昵称提示.png 图片下载地址:https://qq-web.cdn-go.cn/zc.qq.com/f59c7d00/v3/img/icon-error@3x.png
  • 正确提示.png 图片下载地址:https://qq-web.cdn-go.cn/zc.qq.com/f59c7d00/v3/img/icon-ok@3x.png
  • 注册.gif 图片下载地址:https://qq-web.cdn-go.cn/zc.qq.com/f59c7d00/v3/img/bg-video.mp4

项目展示

【1】整体页面静态效果展示:

在这里插入图片描述

【2】主体部分动态运行效果展示

在这里插入图片描述

项目框架

在这里插入图片描述

  HTML静态页面、CSS样式以及JavaScript动态效果很好的分离了。HTML来布局、创建页面对象,CSS来操控对象的样式,JS来赋予对象动作,分离后便于我们更好的维护代码。

部分知识思路

【1】HTML部分

  此部分中,仁者见仁智者见智,每个人对结构的把握不一,所以编写出来的代码也不一样。我将整体页面分为了头部、主体、尾部三个部分来编写的,主体部分又进行了结构的细化,如下图所示:
在这里插入图片描述
【2】CSS部分

  去除默认的一些样式:

* {
	margin: 0;
	padding: 0;
	border: none;
	transition: all .2s;
}

  添加整体背景动图,全覆盖的方法如下:

	background-image: url("../img/注册.gif");
	background-size: cover;

  输入框的 圆角边框 效果:

border-radius: 4px;

  开启定位的规律是 父相子绝 ,即父元素开启相对定位,然后子元素开启绝对定位;如下面的代码,class名为divTel的元素开启相对定位,class名为aTel的子元素开启绝对定位。

.divTel{
	position: relative;
	border-radius: 5px;
	/*width: 335px;*/
	height: 36px;
	margin-bottom: 26px;
	background: #EEF7FC;
}
.aTel{
	position: absolute;
	left: 5px;
	top: 10px;
	font-size: 14px;
	color: black;
}

【3】JS部分

获取某个元素的方法:
  document.querySelector()

获取某一组集合的元素的方法:
  document.querySelectorAll()

鼠标移入移出事件:下面是鼠标移入移出时输入框的颜色发生变化的效果。

	inputEle.onmouseover=function (){
        this.style.border='1px black solid';
    }
    inputEle.onmouseout=function (){
        this.style.border='1px transparent solid';
    }

鼠标获取焦点和失去焦点事件:

	inputEle.onfocus=function (){

    }
    inputEle.onblur=function (){
        
    }

元素的隐藏显示功能,可通过 display 属性来实现:

  • 隐藏:ele.style.display=‘none’;
  • 显示:ele.style.display=‘block’;

项目代码

【1】HTML静态页面的代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <title>QQ注册</title>
    <link rel="stylesheet" type="text/css" href="https://qq-web.cdn-go.cn/zc.qq.com/f59c7d00/v3/css/index.css">
    <link rel="icon" href="https://imgcache.qq.com/qzone/openapi/favicon.ico?t=20130219" type="image/x-icon">
    <link rel="stylesheet" href="css/register.css">
</head>
<body>
<!--头部-->
<div class="header-wrap">
    <div class="header-wrap__inner">
        <div class="header-wrap__hd"><a href="javascript:void(0);" class="header-wrap__logo" title="腾讯QQ"
                                        data-bind="click: home"></a></div>
        <div class="nav-wrap__inner">
            <div class="nav-wrap__item">
                <div class="lianghao-wrap" data-bind="visible: isChs(), hasHover: lianghaoEntryHovered">
                    <div class="lianghao-wrap__hd"><a class="lianghao-wrap__text lianghao-wrap__text-link"
                                                      href="https://haoma.qq.com/shop.html#from=zc"
                                                      onclick="monitor(2759877)" target="_blank">QQ靓号</a>
                    </div>
                </div>
            </div>
            <div class="nav-wrap__item">
                <div class="lang-wrap__hd"><span class="nav-wrap__text lang-wrap__text">简体中文<i
                        class="lang-wrap__icon lang-wrap__icon-down"></i></span></div>
            </div>
            <div class="nav-wrap__item"><span class="nav-wrap__text" data-bind="click: feedback">意见反馈</span>
            </div>
        </div>
    </div>
</div>
<!--主体部分-->
<div class="divMain">
    <!--欢迎注册-->
    <div>
        <div class="welcome">欢迎注册QQ</div>
        <div class="header">每一天,乐在沟通。</div>
    </div>
    <!--注册表单-->
    <form action="" method="post">
        <!--昵称-->
        <div>
            <input class="inputIn" type="text" placeholder="昵称">
            <div class="divIn" style="display: none"><img src="img/昵称提示.png"><span>昵称不能为空</span></div>
        </div>
        <!--密码-->
        <div>
            <input class="inputIn" type="password" placeholder="密码">
            <div class="divIn" style="display: none"><img src="img/昵称提示.png"><span>密码不能为空</span></div>
        </div>
        <!--手机号码-->
        <div>
            <div class="divTel">
                <a class="aTel">+86</a>
                <i class="icon-arrow"></i>
                <input class="inputTel" type="text" placeholder="手机号码">
                <div class="divIn" style="display: none"><img src="img/昵称提示.png"><span>手机号不能为空</span></div>
                <input type="text" placeholder="短信验证码" style="display: none;">
            </div>
        </div>
        <!--确认阅读-->
        <div>
            <div class="divTrue">
                <input class="inputCb" type="checkbox">
                <span class="agreement-wrap__text">我已阅读并同意
                <a href="https://ti.qq.com/agreement/index.html" class="text-link">服务协议</a><a href="https://ti.qq.com/doc/redirect/qq-privacy-guild" class="text-link">QQ隐私保护指引</a>
            </span>
            </div>
        </div>
    </form>
    <!--立即注册-->
    <div>
        <input id="get_acc" type="submit" class="btn-submit" value="立即注册" tabindex="8">
    </div>
</div>
<!--尾部-->
<div class="footer">Copyright  © 1998-2022 Tencent All Rights Reserved.</div>

<script type="text/javascript" src="js/register.js"></script>
<script type="text/javascript" src="https://captcha.gtimg.com/1/tcaptcha-frame.32287577.js"></script>

</body>
</html>

【2】CSS样式代码

* {
	margin: 0;
	padding: 0;
	border: none;
	transition: all .2s;
}
body{
	background-image: url("../img/注册.gif");
	background-size: cover;
	overflow-y: hidden;
}
input{
	border-radius: 5px;
	width: 304px;
	height: 36px;
	/*margin-bottom: 26px;*/
	background: #EEF7FC;
	color: #999;
	font-size: 14px;
	padding: 0 8px;
}
form>div{
	margin-bottom: 26px;
}
.inputIn{
	border: 1px transparent solid;
}
.divIn img{
	width: 16px;
	height: 16px;
	margin-top: 10px;
}
.divIn span{
	position: absolute;
	z-index: 1;
	padding-left: 5px;
	margin-top: 15px;
	font-size: 12px;
	color: #ff5765;
	line-height: 0.5;
	/*height: 30px;*/
}
.divMain{
	width: 320px;
	height: 391px;
	/*background: yellowgreen;*/
	margin: 220px auto 0 auto;
}
.welcome {
	width: 320px;
	height: 57px;
	font-size: 38px;
	line-height: 1.5;
	font-weight: 500;
	margin-bottom: 8px;
	color: #000;
}
.header {
	width: 320px;
	height: 23px;
	font-size: 18px;
	margin-bottom: 32px;
	line-height: 1.3;
	color: #000;
}
.divTel{
	position: relative;
	border-radius: 5px;
	/*width: 335px;*/
	height: 36px;
	margin-bottom: 26px;
	background: #EEF7FC;
}
.inputTel{
	/*position: absolute;*/
	float: right;
	width: 236px;
	border: 0;

}
.aTel{
	position: absolute;
	left: 5px;
	top: 10px;
	font-size: 14px;
	color: black;
}
.divTel div{
	margin-top: 10px;
}
.icon-arrow{
	background-image: url("../img/箭头.png");
	display: inline-block;
	margin-left: 40px;
	margin-top: 10px;
	width: 16px;
	height: 16px;
	vertical-align: text-bottom;
	background-position: 50% 50%;
	background-size: cover;
}
.divTrue{
	margin-top: -15px;
	margin-bottom: 29px;
}
.agreement-wrap__text {
	/*display: inline-block;*/
	line-height: 1.5;
	font-size: 12px;
	margin-left: 6px;
	color: black;
	position: absolute;
}
.inputCb{
	width: 16px;
	height: 16px;
	margin-bottom: 0;
	border-radius: 50%;
}

.text-link{
	outline: 0;
	text-decoration: none;
	color: #359eff;
}
.btn-submit {
	display: block;
	margin-top: 12px;
	padding: 11px 0;
	width: 100%;
	height: 100%;
	font-size: 14px;
	line-height: 1.5;
	cursor: pointer;
	color: white;
	background: #0085ff;
	border-radius: 4px;
}
.footer{
	margin-bottom: 13px;
	width:100%;
	height:35px;
	line-height:35px;
	position:fixed;
	bottom:0px;
	left:0px;
	font-size:12px;
	color:#999;
	text-align:center;
}

【3】JavaScript动态效果代码

var inputEles = document.querySelectorAll(".inputIn");
for (var inputEle of inputEles) {
    inputEle.onmouseover=function (){
        this.style.border='1px black solid';
    }
    inputEle.onmouseout=function (){
        this.style.border='1px transparent solid';
    }
    inputEle.onfocus=function (){
        this.style.border='1px #549DF8 solid';
        var ele= this.nextElementSibling;
        ele.style.display='none';
        this.onmouseout=null;
        this.onmouseover=null;

        this.parentElement.style.marginBottom='26px';
    }
    inputEle.onblur=function (){
        if(this.value==''){
            this.style.border='1px #FF5B5B solid';
            var ele= this.nextElementSibling;
            ele.style.display='block';

            this.parentElement.style.marginBottom='16px';
        }
        this.onmouseout=null;
        this.onmouseover=null;
    }
}
var inputEle1 = document.querySelector(".inputTel");
var divEle1 = document.querySelector(".divTrue");
inputEle1.onfocus=function (){
    var ele= this.nextElementSibling;
    ele.style.display='none';
    divEle1.style.marginTop='-15px'
}
inputEle1.onblur=function (){
    if(this.value==''){
        var ele= this.nextElementSibling;
        ele.style.display='block';
        divEle1.style.marginTop='35px'
    }
}

  码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识点击关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

在这里插入图片描述

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

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

相关文章

整合当地商圈资源,异业联盟打出促消费花式组合拳

如今的市场竞争白热化&#xff0c;大商家逐渐形成垄断的格局。许多行业的第一品牌跟第二品牌主宰着市场&#xff0c;为了打破这种局面&#xff0c;小商家联合起来对抗大商家&#xff0c;所以异业联盟因此诞生。那么建立异业联盟对大家有什么好处呢&#xff1f; 异业联盟针对于商…

RK3568平台开发系列讲解(工具命令篇)Android Debug Bridge常用命令

🚀返回专栏总目录 文章目录 一、工作常用的adb命令二、ADB的原理沉淀、分享、成长,让自己和他人都能有所收获!😄 📢ADB-Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。安卓调试桥 (Android Debug Bridge, adb)…

uniapp 之 扫普通二维码进入小程序

前言 因项目的需求&#xff0c;需要我完成 在微信的扫一扫中&#xff0c;扫后端定义的二维码进入小程序中 这个需求说简单也很简单&#xff0c;说难也不难&#xff0c;就是花费了我几天的时间 需要在 开发 ---> 开发管理 下的开发设置 中的 一直往下滑 直到出现 扫普通…

11、Redis_事务_秒杀案例

文章目录11、Redis_事务_秒杀案例11.1 解决计数器和人员记录的事务操作11.2 Redis事务--秒杀并发模拟11.2.1 联网11.2.2 无网络11.2.3 测试及结果11.2.3.1 通过ab测试11.2.3.2 超卖11.3 超卖问题11.4 利用乐观锁淘汰用户&#xff0c;解决超卖问题。11.5 继续增加并发测试11.5.1…

发布一个简单的npm包简单流程(图文并茂,你必懂)

目录 前言&#xff1a; 1.发布前的代码基本配置 A.创建文件夹 B.npm init/npm init -y初始化项目 C.配置package.json文件 D.创建index.js文件 E.创建README.md文件 F.最基本的目录结构 2.账号注册 3.登录npm账号 A.使用cmd进行登录 B.使用nrm工具 C.成功登录 4.发…

1、浮动(float)

提示&#xff1a;我们一般网页上下用标准流&#xff0c;左右用浮动来写 1.1传统网页布局三种方式 网页布局本质——用css来摆放盒子&#xff0c;把盒子摆放到相应位置。css提供了三种传统布局简单方式&#xff0c;说就是盒子如何进行排列顺序&#xff1a; 普通流&#xff08;或…

面试蚂蚁(P7)竟被MySQL难倒,奋发图强后二次面试入职蚂蚁金服

爱因斯坦说过“耐心和恒心总会得到报酬的”&#xff0c;我也一直把这句话当做自己的座右铭&#xff0c;这句箴言在今年也彻底在“我”身上实现了。 每一个程序员都拥有一座大厂梦&#xff0c;我也不例外&#xff0c;去年面试蚂蚁金服&#xff0c;竟然被MySQL问倒了&#xff0c…

【Flask框架】——16 Jinja2模板

文章目录Jinja2模板一、Jinja2模板介绍1.模板传参2.语法二、表达式三、控制语句1.条件判断语句2.for循环语句&#xff1a;四、过滤器1.什么是过滤器2.字符串的过滤器3.数值过滤器4.列表相关过滤器5.字典相关过滤器6.自定义过滤器五、测试器1.Jinja2中内置的测试器2.自定义测试器…

配置NTP时间同步之Linux

一&#xff1a;NTP是网络时间同步协议&#xff0c;就是用来同步网络中各个计算机的时间的协议。 二&#xff1a;NTP服务端配置 1.检查系统是否安装了NTP包&#xff08;Linux一般自带NTP4.2&#xff09;&#xff0c;没有安装我们直接使用yum命令在线安装&#xff1a; yum inst…

Spring Boot整合Swagger3.0及Knife4j

一、什么是 Swagger Swagger是一组围绕 OpenAPI 规范构建的开源工具&#xff0c;可帮助您设计、构建、记录和使用 REST API。主要的 Swagger 工具包括&#xff1a; Swagger Editor – 基于浏览器的编辑器&#xff0c;您可以在其中编写 OpenAPI 规范。 Swagger UI – 将 OpenA…

非零基础自学Golang 第7章 函数 7.8 知识拓展

非零基础自学Golang 文章目录非零基础自学Golang第7章 函数7.8 知识拓展7.8.1 函数参数传递的本质7.8.2 Go内置函数第7章 函数 7.8 知识拓展 7.8.1 函数参数传递的本质 在讲述参数传递前&#xff0c;我们首先要了解两个基本概念&#xff1a;值传递和引用传递。 值传递&…

API接口DTO测试数据构造的一个方式

自动化测试中&#xff0c;经常需要构造请求参数&#xff0c;例如JSON格式的参数&#xff0c;简单的好说&#xff0c;可以手工修改或是用 Postman、Jmeter 等工具结合简单的代码进行处理&#xff0c; 但当数据传输对象&#xff08;DTO&#xff09;很复杂&#xff0c;部分字段依赖…

同样是项目经理,为啥就干不过他?

早上好&#xff0c;我是老原。 很多人和我抱怨说&#xff0c;做工作太难了&#xff0c;领导针对我&#xff0c;同样都是项目经理&#xff0c;就老是挑我的刺&#xff0c;找我的麻烦。 其实在我看来&#xff0c;工作其实没有那么难&#xff0c;80%的工作问题&#xff0c;都是沟…

C#语言实例源码系列-虚拟键盘

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 &#x1f449;关于作者 众所周知&#xff0c;人生是一个漫长的流程&#xff0c;不断克服困难&#xff0c;不断反思前进的过程。在这个过程中…

guitar pro8吉他谱软件好用吗?2023GTP全新功能解析

我们常见的GTP格式吉他谱就是用这款软件制作出来的曲谱&#xff0c;也只能用这款软件打开查看。看介绍感觉还不错&#xff0c;原生支持Apple的芯片了。这也是一款能陪着我们一起进步&#xff0c;提升自己的软件。我们在练习吉他等乐器的过程中&#xff0c;音阶与和弦的熟练掌握…

ffmpeg-AVBuffer、AVBufferRef、引用计数机制

目录 引用计数 定义 优点 AVBuffer AVBufferRef av_buffer_create av_buffer_ref av_buffer_unref 参考&#xff1a; 引用计数 定义 引用计数是一种内存管理的方式&#xff0c;当一份内存可能被多个对象使用&#xff0c;可以通过引用计数的方式实现内存复用。 优点 …

深入理解Maven的各项配置

深入理解Maven的各项配置1. Introduction1.1 Big Data -- Postgres2. Install2.1 Maven Install2.2 Config Setting.xml2.3 Local Package Install Maven3. Project4.AwakeningMaven Document: https://maven.apache.org/. Maven Download: https://maven.apache.org/download.…

基于微信小程序的好物分享系统ssm框架-计算机毕业设计

项目介绍 我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;好物分享系统小程序被用户普遍使用&#xff0c;为方便用户…

【技术应用】mybatis数据库操作(insert、update、delete)返回值为0的场景

【技术应用】mybatis数据库操作insert、update、delete返回值为0的场景一、前言二、数据库异常处理三、insert操作返回值为: 0四、update操作返回值为: 0五、delete操作返回值为: 0六、总结一、前言 最近在review项目组成员代码时&#xff0c;发现代码中有很多mybatis执行数据…

涉及准考证相关需要关注的一系列问题,涉及防疫、考点信息、计算器等内容

12月14日起可以打印准考证&#xff01;这是一件操作并不复杂的工作&#xff0c;但打印下来以后可能会遇到一些细节问题&#xff0c;对此我们梳理出来供大家参考&#xff0c;有则改之&#xff0c;无则更好&#xff01; 1.有关省份个人健康申报表等如何填写&#xff1f;如您报考点…