HTML5前端实现毛玻璃效果的可拖拽登录框

server/2024/12/29 16:57:47/

要实现一个毛玻璃效果的可拖拽登录框,我们可以利用 CSS3 的 backdrop-filter 属性来实现毛玻璃效果,同时通过 JavaScript 来实现拖拽功能。毛玻璃效果通常指的是模糊并半透明的背景效果,适用于背景中的图像或色彩。

下面是一个实现毛玻璃效果的可拖拽登录框的示例代码:

示例代码:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>毛玻璃效果 登录框</title><style>/* 设置全屏背景图片 */body, html {height: 100%;margin: 0;font-family: Arial, sans-serif;display: flex;justify-content: center;align-items: center;background: url('https://vcg03.cfp.cn/creative/vcg/800/new/VCG211178020258.jpg') no-repeat center center fixed;background-size: cover;}/* 添加毛玻璃效果 */.background {position: absolute;top: 0;left: 0;width: 100%;height: 100%;backdrop-filter: blur(8px) saturate(1.2);filter: blur(8px);z-index: 1;}/* 可拖拽的登录框样式 */.login-box {position: absolute;left: 50%;  /* 水平居中 */top: 50%;   /* 垂直居中 */transform: translate(-50%, -50%); /* 确保完全居中 */z-index: 2;width: 300px;padding: 30px;background-color: rgba(255, 255, 255, 0.3);border-radius: 15px;box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);color: white;text-align: center;cursor: move;/* 添加flex布局使内容垂直居中 */display: flex;flex-direction: column;justify-content: center;align-items: center;gap: 15px; /* 统一设置内容间距 */}.login-box h2 {margin: 0;font-size: 24px;color: #fff;width: 100%;text-align: center;}.login-box input {width: calc(100% - 24px); /* 考虑padding的宽度 */padding: 12px;margin: 0; /* 移除原有margin */border-radius: 8px;border: none;font-size: 16px;background-color: rgba(255, 255, 255, 0.6);text-align: center; /* 输入框文本居中 */}.login-box button {width: 100%;padding: 12px;background-color: #4CAF50;color: white;border: none;border-radius: 8px;font-size: 16px;cursor: pointer;margin: 0; /* 移除原有margin */}.login-box button:hover {background-color: #45a049;}</style>
</head>
<body><!-- 毛玻璃背景 --><div class="background"></div><!-- 登录框 --><div class="login-box" id="loginBox"><h2>登录</h2><input type="text" placeholder="用户名" id="username" required><input type="password" placeholder="密码" id="password" required><button>登录</button></div><script>const loginBox = document.getElementById('loginBox');loginBox.onmousedown = function(event) {let offsetX = event.clientX - loginBox.getBoundingClientRect().left;let offsetY = event.clientY - loginBox.getBoundingClientRect().top;document.onmousemove = function(event) {loginBox.style.left = event.clientX - offsetX + 'px';loginBox.style.top = event.clientY - offsetY + 'px';};document.onmouseup = function() {document.onmousemove = null;document.onmouseup = null;};};</script>
</body>
</html>
代码说明:
  1. 毛玻璃效果

    • 通过 backdrop-filter: blur(8px) saturate(1.2) 使背景有模糊效果,并轻微增加饱和度(让背景更生动)。同时,使用 filter: blur(8px) 作为兼容性处理,确保效果在更多浏览器中生效。
    • backdrop-filter 只对背景内容有效,因此它会影响到整个背景图像,使其模糊处理。
  2. 可拖拽登录框

    • 使用 JavaScript 监听鼠标事件,计算鼠标与登录框位置的偏移量,实现在鼠标拖动时更新登录框的位置。
    • 在鼠标按下时,记录鼠标的偏移,拖动时更新 loginBoxlefttop 属性,实现位置更新。
  3. 登录框样式

    • 登录框使用了 rgba(255, 255, 255, 0.3) 的半透明白色背景,以确保既能看到毛玻璃效果,又保持登录框内容的可见性。
    • 输入框和按钮的样式为现代化设计,带有圆角、阴影和适当的背景色。
  4. 响应式设计

    • 由于背景图片的 background-size: cover,它会自动调整大小以适应屏幕尺寸,可以确保在不同设备上有较好的显示效果。
进一步的改进:
  • 表单验证:你可以使用 JavaScript 对用户名和密码进行验证,确保它们符合要求。
  • 响应式布局:通过 CSS 的 @media 查询,适应不同屏幕尺寸,使界面在手机、平板和桌面设备上都能良好显示。
  • 动画效果:可以给登录框添加进入动画,提升用户体验。
总结:

这段代码通过 CSS3 的毛玻璃效果和 JavaScript 实现了一个具有背景虚化效果的可拖拽登录框,适合现代网页设计,并且具有较好的交互性和美观性。


http://www.ppmy.cn/server/153887.html

相关文章

CKA认证 | Day7 K8s存储

第七章 Kubernetes存储 1、数据卷与数据持久卷 为什么需要数据卷&#xff1f; 容器中的文件在磁盘上是临时存放的&#xff0c;这给容器中运行比较重要的应用程序带来一些问题。 问题1&#xff1a;当容器升级或者崩溃时&#xff0c;kubelet会重建容器&#xff0c;容器内文件会…

基于NodeMCU的物联网空调控制系统设计

最终效果 基于NodeMCU的物联网空调控制系统设计 项目介绍 该项目是“物联网实验室监测控制系统设计&#xff08;仿智能家居&#xff09;”项目中的“家电控制设计”中的“空调控制”子项目&#xff0c;最前者还包括“物联网设计”、“环境监测设计”、“门禁系统设计计”和“小…

助你通过AI培训师中级考试的目录索引

嘿&#xff0c;各位看官&#xff01;在您正式踏入接下来的知识小宇宙之前&#xff0c;咱先唠唠几句… 家人们&#xff0c;我跟你们说&#xff0c;我脑一热报名了那个 AI 培训师考试。本想着开启一场知识的奇幻之旅&#xff0c;结果呢&#xff0c;学视频内容的时候&#xff0c;那…

项目整合管理--项目管理的通用流程及细节讲解

文章目录 1 概述与核心概念1.1 概述1.2 核心概念1.3 项目整合管理的发展趋势和新兴实践1.4 项目裁剪内容时需要考虑的因素 2 制定项目章程3 制定项目管理计划4 指导与管理项目工作5 管理项目知识6 监控项目工作7 实施整体变更控制8 结束项目或阶段 1 概述与核心概念 1.1 概述 …

Docker--Bitnami/mysql

Bitnami package for MySQL What is MySQL? MySQL is a fast, reliable, scalable, and easy to use open source relational database system. Designed to handle mission-critical, heavy-load production applications. Overview of MySQL⁠ Trademarks: This software l…

ping指令的实现与icmp协议的讲解

icmp协议 icmp属于一个网络层的协议&#xff0c;一般被封装到IP报文中&#xff0c;主要功能是如果IP报文出现目的地不可达&#xff0c;时间超过等情况出现时&#xff0c;就会将返回一个差错检测报文&#xff0c;里面包括了IP报文丢失的原因 常见的报错信息有 目的地不可达时间…

改版-活着就好 20241228(32天过年!!!)

亲爱的朋友们&#xff0c;大家早上好&#xff01;&#x1f31e; 今天是 28 号&#xff0c;星期六&#xff0c;2024 年 12 月的第二十八天&#xff0c;同时也是第 52 周的第六天&#xff0c;农历甲辰 [龙] 年十一月廿八日。在这美好的清晨&#xff0c;阳光轻柔地洒下&#xff0c…

负载均衡式在线OJ系统测试报告(Jmeter性能测试、Selenium自动化测试脚本)

负载均衡式在线OJ系统测试报告 文章目录 一、绪论1.项目背景及意义2.在线OJ系统概述 二、项目功能1.概述2.详细介绍2.1编译运行服务2.1.1编译服务2.1.2运行服务 2.2负载均衡服务及主服务器搭建2.2.1主机对象的设计2.2.2负载均衡模块的设计2.2.3主服务器搭建 2.3通用模块2.3.1日…