【HTML界面设计(二)】说说模块、登录界面

这篇具有很好参考价值的文章主要介绍了【HTML界面设计(二)】说说模块、登录界面。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

记录很早之前写的前端界面(具体时间有点久远)

一、说说模板

采用 适配器(Adapter)原理 来设计这款说说模板,首先看一下完整效果

【HTML界面设计(二)】说说模块、登录界面

这是demo样图,需要通过业务需求进行修改的部分

【HTML界面设计(二)】说说模块、登录界面

这一部分,就是demo代码了

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<!-- 图片定义为 150*150 -->
		<style>
			#say{
				height: 400px;
				width: 400px;
				background-color: red;
			}
			.go{
				padding: 10px 10px 0px 10px;
			}
			.go>div{
				display: inline-block;
			}
			/* 第一行:Information */
			#userImage{
				position: relative;
				height: 80px;
				width: 80px;
				background-color: blue;
			}
			#userImage+div,#userImage+div+div{
				width: 120px; 
				height: 80px;
			}
			#userName{
				width: 120px;
				height: 40px;
				background-color: blue;
			}
			#sayTime{
				position: relative;
				width: 120px;
				height: 30px;
				background-color: blue;
				top: 10px;
			}
			#operate{
				position: relative;
				margin-left: auto;
				width: 30px;
				height: 20px;
				background-color: blue;
			}
			/* 第二行:text */
			#sayText{
				position: relative;
				height: 30px;
				width: 380px;
				background-color: blue;
			}
			/* 第三行:images */
			#sayImages{
				height: 150px;
				width: 380px;
				background-color: blue;
			}
			/* 第四行:position */
			.go .ps{
				width: 380px;
				text-align: right;
			}
			.ps>div{
				display: inline-block;
			}
			#position{
				width: 80px;
				height: 20px;
				background-color: blue;
			}
			/* 第五行:用户操作 */
			#dianzan,#pinglun,#zhuanfa{
				width: 30px;
				height: 30px;
				background-color: blue;
			}
		</style>
	</head>
	<body>
		<div id="say">
			<div class="go">
				<div id="userImage">
					
				</div>
				<div>
					<div id="userName">
						
					</div>
					<div id="sayTime">
						
					</div>
				</div>
				<div>
					<div id="operate">
						<!-- 操作模块 -->
					</div>
				</div>
			</div>
			<div class="go">
				<div id="sayText">
					
				</div>
			</div>
			<div class="go">
				<div id="sayImages">
					<!-- 建议是添加图片适配器 -->
				</div>
			</div>
			<div class="go">
				<div class="ps">
					<div id="position">
						
					</div>
				</div>
			</div>
			<div class="go">
				<div class="ps">
					<!-- 为了使效果好看,这里最好也是使用适配器(适配器嵌套适配器) -->
					<div id="dianzan">
						
					</div>
					<div id="pinglun">
						
					</div>
					<div id="zhuanfa">
						
					</div>
				</div>
			</div>
		</div>
	</body>
</html>

二、登录界面

效果图(因为我这个项目有二维码登录的需求,所以有一个扫描图标,但demo里没有)
如果需要设计出一个这样的功能,可以参考同栏目下的【全栈开发】基于Spring Boot&Vue&Android扫码授权登录

建议:其实啊,我个人不是很推崇直接前端生成验证码数据,这玩意最好还是交给后端,始终要遵守开发安全原则 后端负责生成,前端负责渲染

【HTML界面设计(二)】说说模块、登录界面

html代码(使用了jQuery库,这里感谢开源者们的辛勤付出)

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8"/>
    <title></title>
    <link rel="stylesheet" href="css/c002.css">
	<script src="js/Jquery.js"></script>
</head>

<body>
    <div class="main">
        <div class="login-title">
            用 户 登 录
        </div>
        <div class="input-data">
            <input type="text" required="" id="userName" />
            <div class="underlineN"></div>
            <label>Name</label>
        </div>
        <div class="input-data">
            <input type="text" required="" id="userPass" />
            <div class="underlineP"></div>
            <label>Password</label>
        </div>
		<div class="login-yzm">
			<canvas id="canvas" width="120" height="40"></canvas>
			<div id="yzm-text">验证码:</div>
			<input type="text" id="yzm-input" >
		</div>
        <div class="login-btn">
            <button onclick="eqNull()"><span>登录</span></button>
			<button onclick=""><span>注册</span></button>
        </div>
    </div>
</body>

	<script type="text/javascript" src="js/c002.js"></script>
</html>

css代码

* {
    margin: 0;
    padding: 0;
    outline: none;
    box-sizing: border-box;
}


/* 设置自适应屏幕大小 */

body {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    background: linear-gradient(-135deg, #50c8c2, #4158d0);
}


/* 标题设计 */

.login-title {
    text-align: center;
    font-size: 20px;
    padding-bottom: 20px;
}


/* 输入框设计 */

.main {
    width: 450px;
    background-color: #fff;
    padding: 30px;
    box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
}


/* 模块规格 */
/* 输入框、验证码 */

.main .input-data,.login-yzm {
    width: 100%;
    height: 40px;
    margin: 10px;
    position: relative;
}


/* 输入框规格设计 */

.main .input-data input {
    width: 100%;
    height: 100%;
    border: none;
    border-bottom: 2px solid silver;
    font-size: 17px;
}


/* 动画效果 */

.input-data input:focus~label,
.input-data input:valid~label {
    transform: translateY(-20px);
    font-size: 15px;
    color: #4158D0;
}


/* 输入框文本提醒动画 */

.main .input-data label {
    position: absolute;
    bottom: 10px;
    left: 0;
    color: grey;
    pointer-events: none;
    transition: all 0.3s ease;
}


/* 动画设计 */

.main .input-data .underlineN {
    position: absolute;
    bottom: 0px;
    height: 2px;
    width: 100%;
}

.input-data .underlineN::before {
	background: #4158D0;
    position: absolute;
    content: "";
    height: 100%;
    width: 100%;
    transform: scaleX(0);
    transition: transform 0.3s ease;
}

.input-data input:focus~.underlineN:before,
.input-data input:valid~.underlineN:before {
    transform: scaleX(1);
}

.main .input-data .underlineP {
    position: absolute;
    bottom: 0px;
    height: 2px;
    width: 100%;
}

.input-data .underlineP::before {
	background: #4158D0;
    position: absolute;
    content: "";
    height: 100%;
    width: 100%;
    transform: scaleX(0);
    transition: transform 0.3s ease;
}

.input-data input:focus~.underlineP:before,
.input-data input:valid~.underlineP:before {
    transform: scaleX(1);
}


/* 按钮设计 */

.login-btn {
    text-align: center;
}

.login-btn button {
    background: radial-gradient(circle, rgba(247, 150, 192, 1) 0%, rgba(118, 174, 241, 1) 100%);
    border: none;
    color: #fff;
    font-family: 'Lato', sans-serif;
    border-radius: 10px;
    cursor: pointer;
    padding: 10px 30px;
    position: relative;
    top: 20px;
}


/* 按钮触摸和移出 */

.login-btn button:hover {
    background: transparent;
    color: #76aef1;
}

.login-btn button::before,
.login-btn button::after {
    content: '';
    position: absolute;
    width: 1px;
    height: 1px;
    box-shadow: -1px -1px 20px 0px rgba(255, 255, 255, 1), -4px -4px 5px 0px rgba(255, 255, 255, 1), 10px 10px 20px 0px rgba(0, 0, 0, .4), 6px 6px 5px 0px rgba(0, 0, 0, .3);
    transition: all 0.8s ease;
    padding: 0;
}

.login-btn button::before {
    top: 0;
    right: 0;
}

.login-btn button::after {
    bottom: 0;
    left: 0;
}

.login-btn button:hover::before,
.login-btn button:hover::after {
    height: 100%;
}

.login-btn button span::before,
.login-btn button span::after {
    position: absolute;
    content: '';
    width: 0px;
    box-shadow: -1px -1px 20px 0px rgba(255, 255, 255, 1), -4px -4px 5px 0px rgba(255, 255, 255, 1), 10px 10px 20px 0px rgba(0, 0, 0, .4), 6px 6px 5px 0px rgba(0, 0, 0, .3);
    transition: all 0.8s ease;
}

.login-btn button span::before {
    top: 0;
    left: 0;
}

.login-btn button span::after {
    bottom: 0;
    right: 0;
}

.login-btn button span:hover::before,
.login-btn button span:hover::after {
    width: 100%;
}

/* 验证码 */
/* 布局 */
.login-yzm #canvas,#yzm-text{
	float: left;
}

.login-yzm #yzm-text,#yzm-input{
	position: relative;
	left: 50px;
	top: 10px;
}

/* 输入框样式 */
.login-yzm #yzm-input{
	height: 30px;
	width: 80px;
}

js代码文章来源地址https://www.toymoban.com/news/detail-489568.html

var canvas = document.getElementById("canvas"); //演员
var context = canvas.getContext("2d"); //舞台,getContext() 方法可返回一个对象,该对象提供了用于在画布上绘图的方法和属性。
var input = document.getElementById("yzm-input"); //获取输入框
var num //定义容器接收验证码

//主函数
$(document).ready(main)

function main() {
	//验证用户名是否符合规格
	validation_userName()
	draw();
}

//输入框区域
function validation_userName() {
	var timer = null;
	// 输入的值
	var editor_start = 0;    
	// 对比时间的值 
	var editor_end = 0;
	$("#userName").keyup(function() {
	    clearTimeout(timer) // 每次滚动前 清除一次
	    timer = setTimeout(save_html_message_fun(), 2000);
	})
}

function save_html_message_fun() {
	editor_end = $("#userName").val();
	if(editor_end.length < 8) {
		//输入不满足条件时
		$('#userName').nextAll('div').append("<style>.input-data .underlineN::before{background: red}</style>")
	} else {
		$('#userName').nextAll('div').append("<style>.input-data .underlineN::before{background: #4158D0}</style>")
	}
}

// 被动触发触发事件
// 为空判断
function eqNull() {
	var userName = $('#userName').val()
	if(userName == '') {
		alert("用户名不能为空!")
	} else if(userName.length < 8) {
		alert("请输入正确的账号")
	} else if($('#userPass').val() == '') {
		alert("密码不能为空!")
	} else if($("#yzm-input").val() != num){
		reset()
		alert("验证码错误!")
	} else {
		alert("ok" + userName)
	}
}

//验证码区域
canvas.onclick = function() {
	reset()
}

function reset() {
	context.clearRect(0, 0, 120, 40); //在给定的矩形内清除指定的像素
	draw();
}

// 随机颜色函数
function getColor() {
	var r = Math.floor(Math.random() * 256);
	var g = Math.floor(Math.random() * 256);
	var b = Math.floor(Math.random() * 256);
	return "rgb(" + r + "," + g + "," + b + ")";
}

function draw() {
	context.strokeRect(0, 0, 120, 40); //绘制矩形(无填充)
	var aCode = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"];
	// 绘制字母
	var arr = [] //定义一个数组用来接收产生的随机数
	for (var i = 0; i < 4; i++) {
		var x = 20 + i * 20; //每个字母之间间隔20
		var y = 20 + 10 * Math.random(); //y轴方向位置为20-30随机
		var index = Math.floor(Math.random() * aCode.length); //随机索引值
		var txt = aCode[index];
		context.font = "bold 20px 微软雅黑"; //设置或返回文本内容的当前字体属性
		context.fillStyle = getColor(); //设置或返回用于填充绘画的颜色、渐变或模式,随机
		context.translate(x, y); //重新映射画布上的 (0,0) 位置,字母不可以旋转移动,所以移动容器
		var deg = 90 * Math.random() * Math.PI / 180; //0-90度随机旋转
		context.rotate(deg); // 	旋转当前绘图
		context.fillText(txt, 0, 0); //在画布上绘制“被填充的”文本
		context.rotate(-deg); //将画布旋转回初始状态
		context.translate(-x, -y); //将画布移动回初始状态
		arr[i] = txt //接收产生的随机数
	}
	num = arr[0] + arr[1] + arr[2] + arr[3] //将产生的验证码放入num
	// 绘制干扰线条
	for (var i = 0; i < 8; i++) {
		context.beginPath(); //起始一条路径,或重置当前路径
		context.moveTo(Math.random() * 120, Math.random() * 40); //把路径移动到画布中的随机点,不创建线条
		context.lineTo(Math.random() * 120, Math.random() * 40); //添加一个新点,然后在画布中创建从该点到最后指定点的线条
		context.strokeStyle = getColor(); //随机线条颜色
		context.stroke(); // 	绘制已定义的路径
	}
	// 绘制干扰点,和上述步骤一样,此处用长度为1的线代替点
	for (var i = 0; i < 20; i++) {
		context.beginPath();
		var x = Math.random() * 120;
		var y = Math.random() * 40;
		context.moveTo(x, y);
		context.lineTo(x + 1, y + 1);
		context.strokeStyle = getColor();
		context.stroke();
	}

}

到了这里,关于【HTML界面设计(二)】说说模块、登录界面的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【MATLAB】制作二阶系统的时域分析GUI界面:登录界面的设计和二阶系统时域分析界面

    首先,在命令行窗口输入guide,进入gui向导进行创建GUI,如图: 使用静态文本标识标题和账号密码名称: 双击静态文本,在检查器页面中修改名称: 还可以修改字体大小(根据需求设置合适大小): 然后设置两个可编辑文本作为输入框(同样可修改参数): 最后设置一个“

    2024年04月28日
    浏览(37)
  • HTML网页设计基础——用户注册界面

    要求网页中显示如下信息: 首先对网页布局进行分析,包含两个部分,标题和表格部分: 定义表格----将网页中的表单元素根据上图所示放入不同的行和列中。 代码如下: 注意: 该实例包含的行和单元格的个数比较多,在书写代码的时候注意不要漏写,可以使用空格隔开,

    2024年02月07日
    浏览(40)
  • 实习记录(5)——PyQT5界面设计及交互

    首先按照甲方PPT上给的界面做了,在写内部逻辑的时候发现有不少问题,没考虑到使用者的感受,甚至我觉得根本用不了。于是我和小哥讨论了一下之后,我按照我的想法做了一个新的页面出来,能实现需求的同时,让使用的人体验更好也更直观。 昨天安装成功了PyQT5,今天

    2023年04月24日
    浏览(40)
  • Python 使用tkinter设计Windows网页或应用的用户注册登录界面

    上一篇:Python 自定义模块和包设计英语生词本(文件版)-CSDN博客 紧接上一篇博文,当我们熟练掌握自定义模块和包、掌握文件的的读取与写入、掌握正则表达式内置模块\\\"re\\\"、掌握GUI(图形界面)的部分组件后,接着我们将要以上的知识点结合起来,设计一个GUI(图形界面

    2024年02月03日
    浏览(50)
  • Android开发之实现简单的用户登录及登陆界面的UI设计(五)

    登陆界面的UI设计 编写Java代码,进行简单的用户账号和密码判断

    2024年02月11日
    浏览(50)
  • 一文搞定dhtmlx-gantt调度界面,vue下使用dhtmlxgantt进行项目甘特图模块设计开发(前端界面显示篇(1))

    前言: 本文基于在较为成熟完整的项目,进行甘特图模块开发的内容。并不涉及node相关下载、安装及vue的相关使用。 1 需安装的模块 (1) dhtmlxgantt是进行甘特图开发过程中所用到的插件库,用于跨浏览器和跨平台应用程序的功能较为齐全的Gantt图表。其祖家组件为一个JavaScr

    2024年02月11日
    浏览(52)
  • 【日常收支账本】【Day06】设计可视化账本界面——用Dataframe存放各动账记录,并用QChart展示数据

    https://github.com/LinFeng-BingYi/DailyAccountBook 可视化账本的需求: 一段时间内支出总额、变化趋势、支出结构; 一段时间内收入总额、变化趋势、收入结构; 一段时间内净收入总额、变化趋势; 总资产,分为可用资产和固定资产,忽略非本人名下资产(特指代管存款,如家庭基金

    2024年02月05日
    浏览(55)
  • 人工智能交互系统界面设计(Tkinter界面设计)

    在现代信息化时代,图形化用户界面(Graphical User Interface, GUI)已经成为各种软件应用和设备交互的主流方式,与传统的命令行界面(CLI)相比,GUI 具有直观性、易用性、交互性、可视化和多任务处理等优势。设计良好的用户交互界面可以让用户以更加直观、友好的方式与计

    2024年01月16日
    浏览(47)
  • 【UI 设计】触摸界面设计

    触摸界面设计是一种以触摸操作为主的用户界面设计。以下是一些触摸界面设计的要点: 界面布局:设计简洁、直观的界面布局,使用户可以快速找到所需的功能和信息。避免过于拥挤的布局,保持按钮和菜单的大小适中,以便用户能够准确地点击它们。 可视化元素:使用

    2024年02月06日
    浏览(39)
  • python美化图形化界面设计,pythontkinter界面美化

    大家好,本文将围绕python美化图形化界面设计展开说明,pythontkinter界面美化是一个很多人都想弄明白的事情,想搞清楚python美化输出模块需要先了解以下几个事情。 PyQt,一个基于Qt的Python接口包,可以直接使用Qt的控件薯轿茄,还可以使用QSS进行界面美化,下面我简单介绍一

    2024年02月08日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包