当前位置: 首页 > news >正文

React 新拟态登录页面使用教程

项目介绍

YggJS RLogin 是一个专为 React 应用开发的登录页面组件库,提供多种精美的登录界面设计。新拟态登录页面(NeumorphismLoginPage)是我们最新推出的组件,采用新拟态(Neumorphism)设计风格,具有柔和内凹输入框、低饱和米白背景、微凸按钮等特色,为用户提供现代化且具有实体触感的登录体验。

安装说明

使用 pnpm 安装

pnpm add yggjs_rlogin

使用 npm 安装

npm install yggjs_rlogin

使用 yarn 安装

yarn add yggjs_rlogin

界面预览

在这里插入图片描述

登录页面介绍

YggJS RLogin 目前提供四种不同风格的登录页面组件:

  1. LoginPage - 基础登录页面
  2. MinimalLoginPage - 极简风格登录页面
  3. GlassLoginPage - 磨砂玻璃风格登录页面
  4. NeumorphismLoginPage - 新拟态风格登录页面(本文档重点)

新拟态登录页面介绍

新拟态设计(Neumorphism)是一种结合了扁平化设计和拟物化设计的现代UI风格,通过巧妙的阴影和高光效果,创造出元素从背景中"浮出"或"凹入"的视觉效果。

设计特色

  • 柔和内凹输入框:输入框采用内凹设计,营造出嵌入式的视觉效果
  • 低饱和米白背景:使用柔和的米白色渐变背景,减少视觉疲劳
  • 微凸按钮:登录按钮采用微凸设计,提供清晰的交互反馈
  • 实体触感:通过精心设计的阴影和高光,营造出真实的物理触感
  • 响应式设计:完美适配各种屏幕尺寸

技术特点

  • 100vh/100vw 全屏设计,无滚动条
  • 内置表单验证功能
  • 支持密码显示/隐藏切换
  • 完整的 TypeScript 类型支持
  • 无障碍访问支持
  • 加载状态处理

使用示例

基础用法

import { NeumorphismLoginPage } from 'yggjs_rlogin'
import 'yggjs_rlogin/styles.css'function App() {const handleLogin = async (payload: { username: string; password: string }) => {console.log('登录信息:', payload)// 处理登录逻辑}return (<NeumorphismLoginPage onLogin={handleLogin} />)
}

自定义配置

import { NeumorphismLoginPage } from 'yggjs_rlogin'
import 'yggjs_rlogin/styles.css'function App() {const handleLogin = async (payload: { username: string; password: string }) => {// 模拟登录请求await new Promise(resolve => setTimeout(resolve, 1500))alert(`登录成功!用户名: ${payload.username}`)}const customLogo = (<div style={{width: '80px',height: '80px',borderRadius: '50%',background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',display: 'flex',alignItems: 'center',justifyContent: 'center',color: 'white',fontSize: '24px',fontWeight: 'bold',boxShadow: '8px 8px 16px rgba(0, 0, 0, 0.1), -8px -8px 16px rgba(255, 255, 255, 0.8)',margin: '0 auto'}}>LOGO</div>)return (<NeumorphismLoginPageonLogin={handleLogin}title="新拟态登录"logo={customLogo}usernameLabel="用户名或邮箱"passwordLabel="登录密码"submitLabel="立即登录"/>)
}

自定义验证规则

import { NeumorphismLoginPage, customRule } from 'yggjs_rlogin'
import 'yggjs_rlogin/styles.css'function App() {const handleLogin = async (payload: { username: string; password: string }) => {// 登录逻辑}const customUsernameRules = [customRule((value: string) => {if (value.length < 5) return '用户名至少需要5个字符'if (!/^[a-zA-Z0-9_]+$/.test(value)) return '用户名只能包含字母、数字和下划线'return true})]const customPasswordRules = [customRule((value: string) => {if (value.length < 8) return '密码至少需要8个字符'if (!/(?=.*[a-z])(?=.*[A-Z])(?=.*\d)/.test(value)) {return '密码必须包含大小写字母和数字'}return true})]return (<NeumorphismLoginPageonLogin={handleLogin}usernameRules={customUsernameRules}passwordRules={customPasswordRules}/>)
}

验证码功能

所有登录页面组件都支持可选的验证码功能,默认不显示。

启用验证码
import { NeumorphismLoginPage } from 'yggjs_rlogin'
import 'yggjs_rlogin/styles.css'function App() {const handleLogin = async (payload: {username: string;password: string;captcha?: string}) => {console.log('登录信息:', payload)// 当启用验证码时,payload.captcha 包含用户输入的验证码}return (<NeumorphismLoginPageonLogin={handleLogin}showCaptcha={true}captchaLabel="图形验证码"/>)
}
自定义验证码配置
import { NeumorphismLoginPage } from 'yggjs_rlogin'
import 'yggjs_rlogin/styles.css'function App() {const handleLogin = async (payload: {username: string;password: string;captcha?: string}) => {// 处理登录逻辑}return (<NeumorphismLoginPageonLogin={handleLogin}showCaptcha={true}captchaLabel="安全验证码"captchaConfig={{length: 6,        // 验证码长度width: 150,       // 图片宽度height: 50        // 图片高度}}/>)
}
自定义验证码验证规则
import { NeumorphismLoginPage, customRule, validateCaptcha } from 'yggjs_rlogin'
import 'yggjs_rlogin/styles.css'function App() {const handleLogin = async (payload: {username: string;password: string;captcha?: string}) => {// 处理登录逻辑}// 自定义验证码验证规则const customCaptchaRules = [customRule((value: string) => {if (!value) return '请输入验证码'if (value.length !== 4) return '验证码必须为4位'// 这里可以添加更多自定义验证逻辑return true})]return (<NeumorphismLoginPageonLogin={handleLogin}showCaptcha={true}captchaRules={customCaptchaRules}/>)
}

代码解释

组件属性

export type NeumorphismLoginPageProps = {onLogin: (payload: { username: string; password: string; captcha?: string }) => void | Promise<void>title?: stringlogo?: string | React.ReactNodeusernameLabel?: stringpasswordLabel?: stringsubmitLabel?: stringusernameRules?: Rule[]passwordRules?: Rule[]showCaptcha?: booleancaptchaLabel?: stringcaptchaRules?: Rule[]captchaConfig?: CaptchaConfig
}
属性说明
  • onLogin (必需): 登录回调函数,接收用户名、密码和可选的验证码
  • title: 登录页面标题,默认为"登录"
  • logo: Logo,可以是图片URL或React组件
  • usernameLabel: 用户名输入框标签,默认为"用户名"
  • passwordLabel: 密码输入框标签,默认为"密码"
  • submitLabel: 登录按钮文本,默认为"登录"
  • usernameRules: 用户名验证规则数组
  • passwordRules: 密码验证规则数组
  • showCaptcha: 是否显示验证码,默认为false
  • captchaLabel: 验证码输入框标签,默认为"验证码"
  • captchaRules: 验证码验证规则数组
  • captchaConfig: 验证码配置选项

验证规则

组件支持多种内置验证规则:

import {required,minLen,maxLen,emailRule,usernameRule,passwordRule,customRule
} from 'yggjs_rlogin'// 内置规则示例
const rules = [required('此字段为必填'),minLen(6, '最少6个字符'),maxLen(20, '最多20个字符'),emailRule('请输入有效邮箱'),usernameRule('用户名格式不正确'),passwordRule('密码格式不正确'),customRule((value) => value.includes('@') ? true : '必须包含@符号')
]

验证码配置

验证码配置接口 CaptchaConfig

interface CaptchaConfig {length?: number      // 验证码长度,默认4位width?: number       // 验证码图片宽度,默认120pxheight?: number      // 验证码图片高度,默认40pxrefreshable?: boolean // 是否可刷新,默认true
}

验证码工具函数

组件库还提供了验证码相关的工具函数:

import {generateCaptcha,     // 生成验证码文本validateCaptcha,     // 验证验证码generateCaptchaSVG,  // 生成验证码SVGcreateCaptchaData    // 创建验证码数据
} from 'yggjs_rlogin'// 生成4位验证码
const captchaText = generateCaptcha(4)// 验证用户输入
const isValid = validateCaptcha('ABC4', 'abc4') // true,不区分大小写// 生成验证码图片
const svg = generateCaptchaSVG('ABC4', 120, 40)// 创建完整的验证码数据
const captchaData = createCaptchaData({length: 4,width: 120,height: 40
})

样式设计介绍

新拟态设计原理

新拟态设计通过以下技术实现:

  1. 双向阴影:同时使用深色和浅色阴影,创造立体效果
  2. 背景融合:元素背景色与页面背景色保持一致
  3. 微妙渐变:使用极其微妙的渐变增强立体感
  4. 交互反馈:hover和active状态提供清晰的视觉反馈

关键CSS技术

/* 内凹效果 */
.input-container {box-shadow: inset 8px 8px 16px rgba(0, 0, 0, 0.1),inset -8px -8px 16px rgba(255, 255, 255, 0.8);
}/* 微凸效果 */
.button {box-shadow: 12px 12px 24px rgba(0, 0, 0, 0.1),-12px -12px 24px rgba(255, 255, 255, 0.8);
}

颜色方案

  • 主背景色:#f0f0f0 系列米白色
  • 阴影色:rgba(0, 0, 0, 0.1) 浅黑色
  • 高光色:rgba(255, 255, 255, 0.8) 半透明白色
  • 文字色:#555555 中性灰色
  • 错误色:#d63384 温和红色

总结

新拟态登录页面为现代Web应用提供了一种全新的视觉体验。通过精心设计的阴影效果和交互反馈,它不仅美观现代,还具有出色的用户体验。

主要优势

  1. 视觉吸引力:独特的新拟态设计风格
  2. 用户体验:直观的交互反馈和无障碍支持
  3. 技术完善:完整的TypeScript支持和测试覆盖
  4. 易于集成:简单的API设计,快速集成到现有项目
  5. 高度可定制:支持自定义样式、验证规则和交互逻辑
  6. 安全增强:可选的验证码功能,提供额外安全保护

适用场景

  • 现代化Web应用
  • 企业级管理系统
  • 创意设计项目
  • 移动端适配项目
  • 需要独特视觉效果的登录页面
  • 需要额外安全验证的应用

示例项目

项目提供了完整的示例项目,展示不同配置的使用方法:

  • 基础版本examples/c04_neumorphism_login - 包含首页导航、基础登录页面和带验证码的登录页面
  • 综合演示examples/c05_comprehensive_demo - 展示所有登录页面组件的完整功能

每个示例都使用 React Router 实现页面导航,提供:

  • 首页:功能介绍和导航
  • 基础登录页面:不带验证码的登录体验
  • 安全登录页面:带验证码的安全登录体验

通过使用新拟态登录页面,您可以为用户提供既美观又实用的登录体验,提升应用的整体品质和用户满意度。

http://www.dtcms.com/a/339027.html

相关文章:

  • 星图云开发者平台新功能速递 | 微服务管理器:无缝整合异构服务,释放云原生开发潜能
  • C++入门自学Day14-- Stack和Queue的自实现(适配器)
  • [Android] 显示的内容被导航栏这挡住
  • STM32 定时器(输出模式)
  • 开源游戏引擎Bevy 和 Godot
  • 开源AI工具Midscene.js
  • 第9章 React与TypeScript
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(17):文法+单词第5回3-复习
  • 指针的应用学习日记
  • GraphQL 与 REST 在微服务架构中的对比与设计实践
  • RadioIrqProcess函数详细分析与流程图
  • C#语言的语法(数据类型)
  • 清空 github 仓库的历史提交记录(创建新分支)
  • 神经网络中的那些关键设计:从输入输出到参数更新
  • STranslate:一键聚合翻译+OCR,效率翻倍
  • 云端赋能,智慧运维:分布式光伏电站一体化监控平台研究
  • 卫生许可证识别技术:通过OCR与NLP实现高效合规管理,提升审核准确性与效率
  • Git#revert
  • 如何解析PDF中的复杂表格数据
  • 星链之供应链:SpaceX供应链韧性密码,70%内部制造+模块化设计,传统航天企业如何追赶?
  • 四大常用排序算法
  • 【线性基】P4301 [CQOI2013] 新Nim游戏|省选-
  • Voice Agents:下一代语音交互智能体的架构革命与产业落地
  • 大语言模型中的归一化实现解析
  • elasticsearch8.12.0安装分词
  • 【Spring Boot把日志记录到文件里面】
  • 郑州续面事件的技术视角:网络传播机制与舆情应对技术方案
  • Git+Jenkins实战(一)
  • Windows系统维护,核心要点与解决方案
  • Spring Boot 4 的 11 项重大变更全面解析!