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

如何使用 CSS 实现黑色遮罩效果

最近在工作中遇见了一个需求,鼠标经过盒子出现黑色遮罩,遮罩中有相关的编辑按钮,点击以后,进行图片上传并且展示,由于当时没有思路,思考了好久,所以在完成开发后进行总结,使用的技术栈是React+less+Antd,过程和解答过程都在下边了

需求描述

在这里插入图片描述
初始化页面如下,其中图标和配图部分需要支持上传图片,上传完成后需要在最右侧进行展示,鼠标经过对应的上传上传图标盒子时,需要展示的效果如下
在这里插入图片描述

实现思路

我们直接看代码,如下

// 触发头像图片选择
const handleImageClick = () => {fileInputRef.current.click();
};
// 处理头像图片上传
const handleImageChange = async event => {const file = event.target.files[0];let formData = new FormData();if (file) {const imageUrl = URL.createObjectURL(file);updateKey("logoPath",imageUrl)formData.append("file", file);try {const res = await upload(appid, formData);updateKey("logoPath", res.data)} catch (error) {console.log(error);}}
};
<div className="icon-wrapper" onClick={handleImageClick}>{/* 预览图片 */}<imgsrc={changeImageFormat(addAllData?.logoPath) || icon}alt="icon"width={64}height={64}className="icon-img"/>{/* 编辑按钮 */}<div className="overlay"><imgsrc={edit}alt="edit"className="edit-icon"width={20}height={20}/></div>{/* 隐藏的文件上传按钮 */}<inputtype="file"ref={fileInputRef}style={{ display: "none" }}onChange={handleImageChange}/>
</div>
.icon-wrapper {position: relative;display: inline-block;width: 64px;height: 64px;cursor: pointer;.icon-img {margin-top: 4px;border-radius: 12px;object-fit: cover;}.overlay {position: absolute;top: 0;left: 0;width: 100%;height: 100%;background: rgba(0, 0, 0, 0.4);display: flex;justify-content: center;align-items: center;opacity: 0;transition: opacity 0.3s ease-in-out;border-radius: 12px;margin-top: 4px;cursor: pointer;.edit-icon {width: 24px;height: 24px;}}&:hover .overlay {opacity: 1; // 鼠标悬停时显示}
}

逻辑部分

在外层icon-wrapper盒子上,绑定了handleImageClick方法,在这个方法中,来触发input的点击事件。接下来是我们需要展示的图片,接下来就是我们的遮罩盒子以及编辑图标,为了实现相应的点击效果,在下方使用了一个input来获取到本地上传图片的选择部分,然后通过handleImageChange方法进行图片的上传,到这里逻辑部分就结束了。

那么当鼠标经过的时候,如何实现相关的黑色遮罩以及编辑图标呢,这时候就要到我们的less文件中查看了。

样式实现

首先,给icon-wrapper盒子添加了一个相对定位,然后给我们的overlay盒子添加了一个绝对定位,同时给了一个0.4的黑色背景颜色以及一个transition为0.3s的缓入动画,但是现在还没有结束,还需要接入鼠标经过的变化,当鼠标经过的时候,将透明度改为1,这样就可以将黑色遮罩完全显示出来,我这边使用了less,&:hover .overlay,&符号的意思是,当前元素的父元素,所以这行代码的意思是,当鼠标停留在当前元素的父元素,也就是icon-wrapper上的时候,overlay盒子的透明度变为1。

这样,就实现了我们需要的效果了,如果你也需要实现类似的功能,希望可以帮到你!

相关文章:

如何使用 CSS 实现黑色遮罩效果

最近在工作中遇见了一个需求&#xff0c;鼠标经过盒子出现黑色遮罩&#xff0c;遮罩中有相关的编辑按钮&#xff0c;点击以后&#xff0c;进行图片上传并且展示&#xff0c;由于当时没有思路&#xff0c;思考了好久&#xff0c;所以在完成开发后进行总结&#xff0c;使用的技术…...

ChatGPT课件分享(37页PPT)

资料解读&#xff1a;ChatGPT课件分享 详细资料请看本解读文章的最后内容。 近年来&#xff0c;人工智能技术的迅猛发展引发了全球范围内的广泛关注&#xff0c;尤其是以OpenAI为代表的公司在自然语言处理领域的突破性进展&#xff0c;彻底改变了人机交互的方式。本文将详细解…...

开源模型时代的 AI 开发革命:Dify 技术深度解析

开源模型时代的AI开发革命&#xff1a;Dify技术深度解析 引言&#xff1a;AI开发的开源新纪元 在生成式AI技术突飞猛进的2025年&#xff0c;开源模型正成为推动行业创新的核心力量。据统计&#xff0c;全球超过80%的AI开发者正在使用开源模型构建应用&#xff0c;这一趋势不仅…...

无人机扩频技术对比!

一、技术原理与核心差异 FHSS&#xff08;跳频扩频&#xff09; 核心原理&#xff1a;通过伪随机序列控制载波频率在多个频点上快速跳变&#xff0c;收发双方需同步跳频序列。信号在某一时刻仅占用窄带频谱&#xff0c;但整体覆盖宽频带。 技术特点&#xff1a; 抗干扰…...

C语言_数据结构总结4:不带头结点的单链表

纯C语言代码&#xff0c;不涉及C 0. 结点结构 typedef int ElemType; typedef struct LNode { ElemType data; //数据域 struct LNode* next; //指针域 }LNode, * LinkList; 1. 初始化 不带头结点的初始化&#xff0c;即只需将头指针初始化为NULL即可 void Init…...

Zama TFHE-rs v1.0 发布

1. 引言 2025年2月&#xff0c;Zama 发布了 TFHE-rs v1.0&#xff0c;这是 TFHE-rs 库的第一个稳定版本。这标志着一个重要的里程碑&#xff0c;稳定了 x86 CPU 后端的高级 API&#xff0c;同时确保了向后兼容性。——即&#xff0c;现在可以依赖 TFHE-rs API&#xff0c;而不…...

AArch64架构及其编译器

—1.关于AArch64架构 AArch64是ARMv8-A架构的64位执行状态&#xff0c;支持高性能计算和大内存地址空间。它广泛应用于现代处理器&#xff0c;如苹果的A系列芯片、高通的Snapdragon系列&#xff0c;以及服务器和嵌入式设备。 • 编译器&#xff1a;可以使用GCC、Clang等编译器编…...

【ISP】对于ISP的关键算法补充

本篇是对于ISP的关键算法进行补充说明&#xff0c; 后面我们将开始逐渐深入讨论ISP的pipeline 1. 非局部均值&#xff08;NLM, Non-Local Means&#xff09; 原理 非局部均值&#xff08;NLM&#xff09;是一种基于 块匹配&#xff08;Patch Matching&#xff09; 的去噪算法…...

几种常见的虚拟环境工具(Virtualenv、Conda、System Interpreter、Pipenv、Poetry)的区别和特点总结

在 PyCharm 中创建虚拟环境是一个非常直接的过程&#xff0c;可以帮助你管理项目依赖&#xff0c;确保不同项目之间的依赖不会冲突。 通过 PyCharm 创建虚拟环境 打开 PyCharm 并选择或创建一个项目。 打开项目设置&#xff1a; 在 Windows/Linux 上&#xff0c;可以通过点击…...

Ubuntu安装问题汇总

参考文章&#xff1a; 【Ubuntu常用快捷键总结】 【王道Python常用软件安装指引】 1. 无法连接虚拟设备 sat0:0 【问题】&#xff1a;出现下图所示弹框。 【问题解决】&#xff1a; 点击 “否” 。 点击左上角的 “虚拟机” → “设置…” → “CD/DVD (SATA)” &#xff0c;…...

Ceph(1):分布式存储技术简介

1 分布式存储技术简介 1.1 分布式存储系统的特性 &#xff08;1&#xff09;可扩展 分布式存储系统可以扩展到几百台甚至几千台的集群规模&#xff0c;而且随着集群规模的增长&#xff0c;系统整体性能表现为线性增长。分布式存储的水平扩展有以下几个特性&#xff1a; 节点…...

从0开始的操作系统手搓教程43——实现一个简单的shell

目录 添加 read 系统调用&#xff0c;获取键盘输入 :sys_read putchar和clear 上班&#xff1a;实现一个简单的shell 测试上电 我们下面来实现一个简单的shell 添加 read 系统调用&#xff0c;获取键盘输入 :sys_read /* Read count bytes from the file pointed to by fi…...

【Spring】基础/体系结构/核心模块

概述&#xff1a; Spring 是另一个主流的 Java Web 开发框架&#xff0c;该框架是一个轻量级的应用框架。 Spring 是分层的 Java SE/EE full-stack 轻量级开源框架&#xff0c;以 IoC&#xff08;Inverse of Control&#xff0c;控制反转&#xff09;和 AOP&#xff08;Aspect…...

01 音视频知识学习(视频)

图像基础概念 ◼像素&#xff1a;像素是一个图片的基本单位&#xff0c;pix是英语单词picture的简写&#xff0c;加上英 语单词“元素element”&#xff0c;就得到了“pixel”&#xff0c;简称px&#xff0c;所以“像素”有“图像元素” 之意。 ◼ 分辨率&#xff1a;是指图像…...

vue3自定义hooks遇到的问题

问题 写了一个输入查询参数和url返回加载中状态、请求方法、接口返回列表的hooks&#xff0c;出现的结果是只有请求方法有效&#xff0c;加载状态无效&#xff0c;接口返回了数据&#xff0c;页面却不显示数据。 代码如下 只展示部分关键代码 import { ref, toRefs, toRef, o…...

用Python和Docker-py打造高效容器化应用管理利器

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着容器化技术的发展,Docker已成为现代化应用部署的核心工具。然而,手动管理容器在规模化场景下效率低下。本文深入探讨如何利用Python结…...

liunx磁盘挂载和jar启动命令

一、磁盘挂载 查看历史磁盘挂载命令&#xff1a;history | grep mount 查看所有挂载硬盘命令&#xff1a;mount 磁盘挂载命令&#xff1a;mount -t cifs -o usernamesh**,passwordP!ss**** //192.168.1.2/attachmentfilesShare2.2/pdfCert /home/nybzg/cnfai1/pdfCert 二、j…...

gbase8s rss集群通信流程

什么是rss RSS是一种将数据从主服务器复制到备服务器的方法 实例级别的复制 (所有启用日志记录功能的数据库) 基于逻辑日志的复制技术&#xff0c;需要传输大量的逻辑日志,数据库需启用日志模式 通过网络持续将数据复制到备节点 如果主服务器发生故障&#xff0c;那么备用服务…...

使用 OpenSSL 和 Python 实现 AES-256-CBC 加密与解密(安全密钥管理)

环境 OpenSSLPython 使用 OpenSSL 加密 1. 生成 AES 密钥和 IV 强烈推荐使用方法一&#xff08;Python secrets 模块&#xff09;&#xff0c;因为它更安全。 方法一: Python 的 secrets 模块&#xff08;安全方式&#xff09; 不要使用 OpenSSL 的 rand 命令直接生成密钥…...

1-001:MySQL的存储引擎有哪些?它们之间有什么区别?

MySQL 存储引擎 ├── InnoDB&#xff08;默认引擎&#xff09; │ ├── 事务支持&#xff1a;支持 ACID 和事务&#xff08;事务日志、回滚、崩溃恢复&#xff09; │ ├── 锁机制&#xff1a;支持行级锁&#xff0c;提高并发性能 │ ├── 外键支持&#xff1a;支持外键…...

持续集成与部署(CI/CD)实践指南:测试工程师的效率革命之路

一、引言 在当今快速发展的软件开发领域&#xff0c;效率和质量是至关重要的。随着软件项目的规模和复杂度不断增加&#xff0c;传统的开发和测试流程逐渐暴露出诸多问题&#xff0c;如开发周期长、集成困难、测试覆盖不足以及部署风险高等。持续集成&#xff08;Continuous I…...

C盘清理技巧分享:释放空间,提升电脑性能

目录 1. 引言 2. C盘空间不足的影响 3. C盘清理的必要性 4. C盘清理的具体技巧 4.1 删除临时文件 4.2 清理系统还原点 4.3 卸载不必要的程序 4.4 清理下载文件夹 4.5 移动大文件到其他盘 4.6 清理系统缓存 4.7 使用磁盘清理工具 4.8 清理Windows更新文件 4.9 禁用…...

如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统

我在业余时间开发了一款自己的独立产品&#xff1a;升讯威在线客服与营销系统。陆陆续续开发了几年&#xff0c;从一开始的偶有用户尝试&#xff0c;到如今线上环境和私有化部署均有了越来越多的稳定用户。 随时近来 AI 大模型的火热&#xff0c;越来越多的客户&#xff0c;问…...

能否调整爬虫以支持多页商品列表?

当然可以&#xff01;调整爬虫以支持多页商品列表是一个常见的需求&#xff0c;尤其是在商品数量较多时。通过分析目标网站的分页机制&#xff0c;可以实现自动翻页并获取多页商品列表。以下是如何调整爬虫代码以支持多页商品列表的详细步骤和代码示例。 一、分析分页机制 首…...

【AI智能体报告】开源AI助手的革命:OpenManus深度使用报告

一、引言&#xff1a;当开源智能体走进生活 2025年3月&#xff0c;MetaGPT团队用一场"开源闪电战"改写了AI Agent的竞争格局。面对商业产品Manus高达10万元的邀请码炒作&#xff0c;他们仅用3小时便推出开源替代品OpenManus&#xff0c;首日即登顶GitHub趋势榜。 …...

Python 逆向工程:2025 年能破解什么?

有没有想过在复杂的软件上扭转局面&#xff1f;到 2025 年&#xff0c;Python 逆向工程不仅仅是黑客的游戏&#xff0c;它是开发人员、安全专业人员和好奇心强的人解开编译代码背后秘密的强大方法。无论您是在剖析恶意软件、分析 Python 应用程序的工作原理&#xff0c;还是学习…...

自动同步多服务器下SQL脚本2.0

考虑到1.0的适用场景太过苛刻&#xff0c;一次只支持读取至多一个版本的脚本变化&#xff0c;想涉及多个脚本的连续读取就有困难&#xff0c;于是有了2.0。 该版本支持读取多个版本的sql脚本&#xff0c;并且如果某一脚本出现sql问题【如重复插入相同名称的字段】&#xff0c;…...

深度学习与大模型-张量

大家好&#xff01;今天我们来聊聊张量&#xff08;Tensor&#xff09;。别被这个词吓到&#xff0c;其实它没那么复杂。 什么是张量&#xff1f; 简单来说&#xff0c;张量就是一个多维数组。你可以把它看作是一个装数据的容器&#xff0c;数据的维度可以是一维、二维&#…...

DeepSeek+Maxkb+Ollama+Docker搭建一个AI问答系统

DeepSeekMaxkbOllamaDocker搭建一个AI问答系统 文章目录 DeepSeekMaxkbOllamaDocker搭建一个AI问答系统前言一、创建同一内网的网络二、拉取两个镜像三、启动Ollama以及调试Maxkb4.Maxkb创建一个应用并建立知识库5、应用效果总结 前言 我觉得只要是使用Docker技术&#xff0c;…...

江科大51单片机笔记【12】DS18B20温度传感器(上)

写在前言 此为博主自学江科大51单片机&#xff08;B站&#xff09;的笔记&#xff0c;方便后续重温知识 在后面的章节中&#xff0c;为了防止篇幅过长和易于查找&#xff0c;我把一个小节分成两部分来发&#xff0c;上章节主要是关于本节课的硬件介绍、电路图、原理图等理论…...