news 2026/7/2 15:23:23

纯手搓css样式:科技感弹窗边框

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
纯手搓css样式:科技感弹窗边框

pc端科技感的弹窗样式,纯手搓,先看一下实现的效果:

以上实现是react+ts:

// 页面布局importscreenStylefrom'./index.less';<div className={`${screenStyle.modalOverlay}${isModalOpen?screenStyle.modalVisible:''}`}onClick={handleCloseModal}><div className={screenStyle.modalContent}onClick={(e)=>e.stopPropagation()}>{/* 装饰边框 */}<div className={screenStyle.modalBorder}><div className={screenStyle.cornerTopLeft}></div><div className={screenStyle.cornerTopRight}></div><div className={screenStyle.cornerBottomLeft}></div><div className={screenStyle.cornerBottomRight}></div><div className={screenStyle.borderLineTop}></div><div className={screenStyle.borderLineBottom}></div><div className={screenStyle.borderLineLeft}></div><div className={screenStyle.borderLineRight}></div></div>{/* 弹窗头部 */}<div className={screenStyle.modalHeader}><div className={screenStyle.modalTitle}><span className={screenStyle.titleIcon}></span>预警监管详情</div><div className={screenStyle.modalClose}onClick={handleCloseModal}></div></div>{/* Tab切换 */}<div className={screenStyle.modalTabs}><div className={`${screenStyle.tabItem}${activeTab==='temperature'?screenStyle.tabActive:''}`}onClick={()=>handleTabChange('temperature')}><span className={screenStyle.tabIcon}>🌡️</span>体温</div><div className={`${screenStyle.tabItem}${activeTab==='lesion'?screenStyle.tabActive:''}`}onClick={()=>handleTabChange('lesion')}><span className={screenStyle.tabIcon}>🔬</span>病变</div><div className={`${screenStyle.tabItem}${activeTab==='weighing'?screenStyle.tabActive:''}`}onClick={()=>handleTabChange('weighing')}><span className={screenStyle.tabIcon}>⚖️</span>称重区</div></div>{/* 表格内容 */}<div className={screenStyle.modalTableWrapper}><div className={screenStyle.modalTable}><div className={screenStyle.tableHeader}>{columns.map((col)=>(<div key={col.key}>{col.title}</div>))}</div><div className={screenStyle.tableBody}>{getCurrentData().map((item)=>(<div className={screenStyle.tableRow}key={item.id}><div className={screenStyle.warningImage}>{item.imageUrl?(<img src={item.imageUrl}alt={item.image}className={screenStyle.thumbnailImage}onClick={()=>handlePreviewImage(item.imageUrl!)}onError={(e)=>{// 图片加载失败时显示占位(e.targetasHTMLImageElement).style.display='none';constparent=(e.targetasHTMLImageElement).parentElement;if(parent){constplaceholder=document.createElement('span');placeholder.textContent='📷';placeholder.className=screenStyle.imagePlaceholder;parent.appendChild(placeholder);}}}/>):(<span className={screenStyle.imagePlaceholder}>📷</span>)}{/* <span className={screenStyle.imageLabel}>{item.image}</span> */}</div><div>{item.type}</div><div>{item.time}</div><div>{item.slaughterhouse}</div><div><span className={screenStyle.statusTag}style={{color:getStatusColor(item.status)}}>{item.status}</span></div><div>{item.processor}</div></div>))}</div></div></div>{/* 底部信息 */}<div className={screenStyle.modalFooter}><span className={screenStyle.footerInfo}>{getCurrentData().length}条预警记录</span></div></div></div>
//index.less样式.modalOverlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,70%);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:9999;opacity:0;visibility:hidden;transition:all0.3s ease;&.modalVisible{opacity:1;visibility:visible;}}.modalContent{position:relative;width:800px;max-height:80vh;background:linear-gradient(145deg,rgba(0,20,50,95%),rgba(0,10,30,98%));border:1px solidrgba(0,180,255,30%);border-radius:12px;padding:24px 28px 20px;box-shadow:0060pxrgba(0,100,255,15%),inset0060pxrgba(0,100,255,5%);overflow-y:auto;transform:scale(0.95)translateY(20px);transition:all0.3s ease;.modalOverlay.modalVisible&{transform:scale(1)translateY(0);}&::-webkit-scrollbar{width:4px;}&::-webkit-scrollbar-track{background:rgba(0,40,80,30%);border-radius:2px;}&::-webkit-scrollbar-thumb{background:rgba(0,180,255,40%);border-radius:2px;}}// ===== Tab 样式 =====.modalTabs{display:flex;gap:4px;margin-bottom:16px;padding:4px;background:rgba(0,40,80,30%);border-radius:8px;border:1px solidrgba(0,180,255,10%);.tabItem{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 20px;border-radius:6px;cursor:pointer;font-size:14px;color:rgba(255,255,255,60%);transition:all0.3s ease;position:relative;user-select:none;.tabIcon{font-size:16px;}&:hover{color:rgba(255,255,255,80%);background:rgba(0,180,255,5%);}&.tabActive{color:#00d4ff;background:rgba(0,180,255,15%);box-shadow:0020pxrgba(0,180,255,10%);&::after{content:'';position:absolute;bottom:-1px;left:20%;right:20%;height:2px;background:linear-gradient(90deg,transparent,#00d4ff,transparent);box-shadow:0010pxrgba(0,180,255,50%);}}}}// ===== 表格样式 =====.modalTableWrapper{background:rgba(0,20,40,30%);border-radius:8px;border:1px solidrgba(0,180,255,8%);overflow:hidden;max-height:400px;overflow-y:auto;&::-webkit-scrollbar{width:4px;}&::-webkit-scrollbar-track{background:rgba(0,40,80,20%);border-radius:2px;}&::-webkit-scrollbar-thumb{background:rgba(0,180,255,30%);border-radius:2px;}}.modalTable{width:100%;font-size:13px;.tableHeader{display:grid;grid-template-columns:1.2fr1.2fr1.5fr1.2fr 1fr 1fr;background:rgba(0,40,80,40%);padding:10px 16px;color:#00d4ff;font-weight:600;font-size:13px;letter-spacing:0.5px;border-bottom:1px solidrgba(0,180,255,15%);position:sticky;top:0;z-index:10;>div{text-align:center;text-shadow:0010pxrgba(0,180,255,20%);}}.tableBody{.tableRow{display:grid;grid-template-columns:1.2fr1.2fr1.5fr1.2fr 1fr 1fr;padding:8px 16px;color:#b8d4e8;font-size:13px;text-align:center;align-items:center;border-bottom:1px solidrgba(255,255,255,3%);transition:background0.25s ease;&:hover{background:rgba(0,180,255,4%);}&:last-child{border-bottom:none;}>div{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:04px;}.warningImage{display:flex;align-items:center;justify-content:center;gap:8px;span:first-child{font-size:18px;}span:last-child{font-size:12px;color:rgba(255,255,255,50%);}}.statusTag{display:inline-block;padding:2px 12px;border-radius:12px;font-size:12px;font-weight:500;background:rgba(255,255,255,6%);border:1px solid currentcolor;opacity:0.9;}}}}// ===== 底部信息 =====.modalFooter{display:flex;justify-content:flex-end;align-items:center;padding-top:14px;margin-top:12px;border-top:1px solidrgba(0,180,255,10%);.footerInfo{color:rgba(255,255,255,40%);font-size:12px;letter-spacing:0.5px;}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 15:18:18

MuleSoft与大语言模型协同的AI编排实践

1. 项目概述&#xff1a;当企业级集成平台遇上大语言模型&#xff0c;不是叠加&#xff0c;而是重定义工作流“AI Orchestration in Action: How MuleSoft and LLMs Fuel the Future of Enterprise AI”——这个标题里藏着一个正在发生的静默革命。它不是讲怎么用ChatGPT写周报…

作者头像 李华
网站建设 2026/7/2 15:17:39

如何快速构建现代化管理后台:vue-fastapi-admin 完全指南

如何快速构建现代化管理后台&#xff1a;vue-fastapi-admin 完全指南 【免费下载链接】vue-fastapi-admin ⭐️ 基于 FastAPIVue3Naive UI 的现代化轻量管理平台 A modern and lightweight management platform based on FastAPI, Vue3, and Naive UI. 项目地址: https://git…

作者头像 李华
网站建设 2026/7/2 15:16:38

LTC6904与STM32实现高精度可编程方波发生器

1. 项目背景与核心价值在嵌入式系统开发中&#xff0c;精确的时序控制往往是项目成败的关键。无论是驱动步进电机、生成音频信号&#xff0c;还是为传感器提供时钟基准&#xff0c;稳定的方波脉冲都是不可或缺的基础元素。传统方案依赖微控制器的定时器直接生成脉冲&#xff0c…

作者头像 李华
网站建设 2026/7/2 15:14:56

TM4C1299驱动WS2812:PWM+DMA实现智能灯光控制

1. 项目背景与核心价值 在嵌入式开发领域&#xff0c;灯光控制一直是个既基础又充满创意的方向。WS2812智能LED灯带以其独特的单线控制方式和丰富的色彩表现&#xff0c;成为创客和工程师们的宠儿。而TI的TM4C1299NCZAD作为一款高性能ARM Cortex-M4微控制器&#xff0c;其丰富的…

作者头像 李华
网站建设 2026/7/2 15:12:52

告别Monkey:Fastbot智能遍历测试实战指南与避坑

1. 项目概述&#xff1a;为什么我们需要告别Monkey&#xff1f; 如果你是一名Android开发或者测试工程师&#xff0c;对“Monkey”这个名字一定不会陌生。作为Android SDK自带的压力测试工具&#xff0c; adb shell monkey 命令几乎是每个移动端质量保障流程的起点。它简单、…

作者头像 李华
网站建设 2026/7/2 15:11:38

渗透测试范围界定:从目标到边界的实战指南

1. 项目概述&#xff1a;为什么说“范围界定”是渗透测试成败的第一道防线&#xff1f;干了这么多年渗透测试&#xff0c;我见过太多项目从一开始就“跑偏”了。客户说&#xff1a;“帮我测一下系统安不安全。” 测试团队一头扎进去&#xff0c;一周后交出一份报告&#xff0c;…

作者头像 李华