react+antdMobie实现消息通知页面样式
一、实现效果

二、代码
import React, { useEffect, useState } from 'react';
import style from './style/index.less';
import { CapsuleTabs, Ellipsis, Empty, SearchBar, Tag } from 'antd-mobile';
//消息通知页面
export default function Notification(props) {const [options, setOptions] = useState([{label: '最近',value: 'zj',checked: true,},{label: '评审通知',value: 'pstz',checked: false,},{label: '政策制度',value: 'zczd',checked: false,},{label: '知识库',value: 'zsk',checked: false,},{label: '常见问题',value: 'cjwt',checked: false,},]);const [list, setList] = useState([{title: '通知公告名称1111',ywlx: 'pstz',content: '公告简介:公告简介公告简介公告简介公告简介公告简介公告简介公告简介公告简介公告简介公告简介介公告简介公告简介公告简介公告简介',},{title: '通知公告名称1111',ywlx: 'zczd',content: '公告简介:公告简介公告简介公告简介公告简介公告简介公告简介公告简介公告简介公告简介公告简介介公告简介公告简介公告简介公告简介',},{title: '通知公告名称1111',ywlx: 'zsk',content: '公告简介:公告简介公告简介公告简介公告简介公告简介公告简介公告简介公告简介公告简介公告简介介公告简介公告简介公告简介公告简介',},{title: '通知公告名称1111',ywlx: 'cjwt',content: '公告简介:公告简介公告简介公告简介公告简介公告简介公告简介公告简介公告简介公告简介公告简介介公告简介公告简介公告简介公告简介',},{title: '通知公告名称1111',ywlx: 'pstz',content: '公告简介:公告简介公告简介公告简介公告简介公告简介公告简介公告简介公告简介公告简介公告简介介公告简介公告简介公告简介公告简介简介公告简介公告简简介公告简介公告简简介公告简介公告简',},]);const [checkedList, setCheckedList] = useState([]);useEffect(() => {setCheckedList(list);}, [props]);//切换条件const toggle = (item, index) => {const element = document.getElementById('option');if (element) {element.scroll({top: 0,left: 50 * Number(index), // 计算目标位置behavior: 'smooth',});}const newoptions = options.map((res) => {return {...res,checked: res == item,};});setOptions(newoptions);toggleList(item);};const toggleList = (item) => {if (item.value == 'zj') {setCheckedList(list);} else {const newList = list.filter((res) => {return res.ywlx == item.value;});setCheckedList(newList);}};return (<><div className={style.container}><div className={style.top}><SearchBarplaceholder="输入事项名称或者关键字"className={style.search}style={{'--background': 'rgba(255, 255, 255, 0.35)','--height': '32px','--placeholder-color': 'rgba(255, 255, 255, 0.65)',}}/></div><div className={style.option} id="option">{options.map((item, index) => {return (<divkey={index}className={`${item.checked ? style.checked : style.block}`}onClick={() => {toggle(item, index);}}>{item.label}</div>);})}</div><div className={style.content}>{checkedList.map((item, index) => {return (<div key={index} className={style.card}><div style={{ display: 'flex', alignItems: 'center', borderBottom: '1px solid #979797' }}>{item.ywlx == 'pstz' && <Tag color="#2db7f5">评审通知</Tag>}{item.ywlx == 'zczd' && <Tag color="#1ac4c4">政策制度</Tag>}{item.ywlx == 'zsk' && <Tag color="#87d068">知识库</Tag>}{item.ywlx == 'cjwt' && <Tag color="#cf1322">常见问题</Tag>}<span className={style.title}>{item.title}</span></div><div className={style.desc}><Ellipsis direction="end" content={item.content} rows={2} /></div></div>);})}{checkedList.length == 0 && <Empty style={{ padding: '64px 0' }} imageStyle={{ width: 128 }} description="暂无数据" />}</div></div></>);
}
三、css样式
::-webkit-scrollbar {width: 0px;
}.container {height: 100vh;width: 100%;overflow-y: auto;overflow-x: hidden;position: fixed;font-size: 14px;.top {background-color: #BF120D;height: 90px;display: flex;align-items: center;.search {width: 95%;margin: auto;padding-top: 20px;}}.option {display: flex;align-items: center;overflow-x: auto;min-height: 70px;.block {color: #979797;font-weight: 400;border-radius: 6px;border: 1px solid #979797;margin: 0px 10px;padding: 5px 10px;min-width: 100px;text-align: center;}.checked {color: #fff;background-color: #BF120D;font-weight: 400;border-radius: 6px;border: 1px solid #BF120D;margin: 0px 10px;padding: 5px 10px;min-width: 100px;text-align: center;position: relative;}.checked::after {content: '';position: absolute;left: 50%;bottom: -10px;/* 小箭头的位置调整 */width: 0;height: 0;border-left: 10px solid transparent;border-right: 10px solid transparent;border-top: 10px solid #BF120D;/* 小箭头的颜色 */transform: translateX(-50%);}}.content {position: relative;margin-bottom: 10%;.card {padding: 10px;border-radius: 8px;margin: 10px auto;width: 96%;background-color: #fff;display: flex;align-items: center;.title {font-weight: 600;display: flex;align-items: center;line-height: 0.3rem;font-size: 0.18rem;}.sj {text-align: end;color: #999;}}}// 消息明细.detail_content {padding: 10px;background-color: #fff;.title {font-size: 0.16rem;font-weight: 700;line-height: 0.4rem;text-align: center;}.qt {display: flex;align-items: center;justify-content: space-between;color: #999;line-height: 0.4rem;}}}
相关文章:
react+antdMobie实现消息通知页面样式
一、实现效果 二、代码 import React, { useEffect, useState } from react; import style from ./style/index.less; import { CapsuleTabs, Ellipsis, Empty, SearchBar, Tag } from antd-mobile; //消息通知页面 export default function Notification(props) {const [opti…...
Git 撤销一个已经push到远端仓库的commit
在 Git 中,撤销一个已经推送到远程仓库的改动有几种不同的方法,具体取决于你是否想要完全删除改动,还是只是恢复文件的某个状态。以下是常见的几种方法: git revert 撤销特定的commit git revert 是最安全的方法,因为…...
lambda表达式底层实现
一、lambda 代码 & 反编译 原始Java代码 假设我们有以下简单的Java程序,它使用Lambda表达式来遍历并打印一个字符串列表: import java.util.Arrays; import java.util.List;public class LambdaExample {public static void main(String[] args) {…...
鸿蒙NEXT开发-组件事件监听和状态管理(基于最新api12稳定版)
注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…...
《More Effective C++》的学习
引用与指针 没有所谓的null reference reference一定需要代表某个对象,所以C要求reference必须有初值。 QString &s; 使用reference可能比使用pointer更高效。 因为reference一定是有效的,而指针可能为空(需要多加一个判断࿰…...
Leetcode面试经典150题-322.零钱兑换
给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数量是无限的。 示…...
python17_len()函数
len()函数 A B "" C "hello world" D 18 E 18def len_test(s):try:# 尝试计算字符串的长度length len(s)return lengthexcept TypeError:# 如果不是字符串,则返回 None 或者提示错误return Noneif __name__ "__main__":# 单…...
车视界系统小程序的设计
管理员账户功能包括:系统首页,个人中心,汽车品牌管理,汽车颜色管理,用户管理,汽车信息管理,汽车订单管理系统管理 微信端账号功能包括:系统首页,汽车信息,我…...
SQLCMD命令行工具导入数据并生成对应的日志文件
SQLCMD是一个命令行工具,专门用于在Microsoft SQL Server数据库上运行SQL脚本和管理任务。它提供了一种交互式和自动化的方式来执行SQL命令和脚本,并允许用户与SQL Server数据库进行高效的交互。以下是关于SQLCMD的详细介绍: 主要功能 执行SQL脚本: SQLCMD可以执行包含SQL…...
tauri中加载本地文件图片或者下载网络文件图片后存储到本地,然后通过前端页面展示
有一个需求是需要将本地上传的文件或者网络下载的文件存储到本地,并展示在前端页面上的。其实如果只是加载本地文件,然后展示还是挺简单的,可以看我的文章:tauri程序加载本地图片或者文件在前端页面展示-CSDN博客 要想实现上述需…...
QSqlDatabase在多线程中的使用
Qt中多线程使用数据库_qt数据库管理类支持多数据库,多线程-CSDN博客 1. 代码: #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPushButton> #include <QSqlDatabase> #include <QSqlQuery> #include <QSqlError>…...
【无人机设计与控制】Multi-UAV|多无人机多场景路径规划算法MATLAB
摘要 本研究探讨了多无人机路径规划问题,提出了三种不同算法的对比分析,包括粒子群优化(PSO)、灰狼优化(GWO)和鲸鱼优化算法(WOA)。利用MATLAB实现了多场景仿真实验,验证…...
Visual Studio C# 编写加密火星坐标转换
Visual Studio C# 编写加密火星坐标转换 1、WGS84坐标转GCJ02火星坐标2、GCJ02火星坐标转WGS84坐标(回归计算)3、GCJ02火星坐标转BD09百度坐标4、BD09百度坐标转GCJ02火星坐标(回归计算)5、坐标公共转换类6、地图显示7、程序简单界…...
微服务-流量染色
1. 功能目的 通过设置请求头的方式将http请求优先打到指定的服务上,为微服务开发调试工作提供便利 请求报文难模拟:可以直接在测试环境页面上操作,流量直接打到本地IDEA进行debug请求链路较长:本地开发无需启动所有服务…...
C语言实现 操作系统 经典的进程同步问题(2)
哲学家进餐问题 哲学家进餐问题是一个经典的同步问题,涉及多个哲学家试图同时用餐,但每个哲学家左右两边只有一把叉子。为了避免死锁和饥饿,可以使用记录型信号量(也称为计数信号量)来管理叉子的使用。 1、利用记录型…...
有效的字母异位词【字符串哈希】
题目 题解: 1.排序: #include<algorithm>class Solution{public:bool isAnagram(string s,string t){sort(s.begin(),s.end());sort(t.begin(),t.end());return st;} } 时间复杂度O(nlogn) 2.哈希表 #include<algorithm>int hash1[100]; …...
如何选择与运用工具提升工作效率的秘密指南
一、引言 ---- 在当今这个信息爆炸的时代,编程工具的选择对于开发者的工作效率至关重要。从智能的代码编辑器到强大的版本控制工具,再到那些能让我们事半功倍的自动化脚本,每一款工具都有其独特的优势和价值。那么,哪款编程工具…...
Spring系列 AOP实现过程
文章目录 实现原理EnableAspectJAutoProxyAnnotationAwareAspectJAutoProxyCreator 代理创建过程wrapIfNecessarygetAdvicesAndAdvisorsForBeanfindCandidateAdvisorsfindAdvisorsThatCanApply createProxy AspectJ注解处理代理调用过程 实现原理 本文源码基于spring-aop-5.3.…...
C语言 getchar 函数完全解析:掌握字符输入的关键
前言 在C语言中,getchar 是一个非常实用的函数,用于从标准输入流(通常是键盘)读取单个字符。这对于处理文本输入非常有用,尤其是在需要逐个字符处理的情况下。本文将深入探讨 getchar 函数的用法和特点,并…...
Docker安装mysql8并配置主从复制
1. 安装mysql8 1.1 新增挂载文件 # 新增mysql挂载文件夹 mkdir -p /root/docker/mysql/m01/log mkdir -p /root/docker/mysql/m01/data mkdir -p /root/docker/mysql/m01/conf1.2 新增mysql配置文件 # 新增mysql配置文件 cd /root/docker/mysql/m01/conf vim my.cnf # 下面是…...
从‘不好用的CE’到‘好用的OD’:一次逆向实战中的工具选择与思路转换
逆向工程实战:从工具局限到思维跃迁的破解之道 当那个MFC程序弹出第一个窗口时,我习惯性地打开了Cheat Engine——这个在游戏修改领域堪称神器的工具。但十分钟后,面对毫无进展的扫描结果和不断跳出的错误提示,我突然意识到&#…...
高压隔离技术:原理、应用与AMC130x设计解析
1. 高压隔离技术的基础原理与行业需求在工业自动化、新能源发电和电力电子系统中,高压隔离技术如同电路系统的"安全气囊",它能在数千伏的电位差下确保信号和能量的无损传输,同时阻断危险电流的流通。德州仪器(TI&#x…...
思科EIGRP实战:从邻居建立到负载均衡的配置详解
1. EIGRP协议基础与核心机制 EIGRP(Enhanced Interior Gateway Routing Protocol)作为思科自主研发的动态路由协议,在企业级网络中有着广泛应用。我第一次接触EIGRP是在2013年帮某电商平台改造数据中心网络时,当时就被它独特的混合…...
AI加速器架构对比:从GPU到专用芯片的性能与能效分析
1. AI加速器架构全景解析:从通用GPU到专用芯片的演进在深度学习计算领域,硬件架构的创新正以前所未有的速度推进。传统GPU凭借其强大的并行计算能力长期占据主导地位,但随着模型规模的指数级增长和能效要求的不断提高,各类专用AI加…...
仅限前500名获取|Midjourney Blackberry印相专业级Prompt模板包(含EXIF元数据模拟指令)
更多请点击: https://intelliparadigm.com 第一章:Midjourney Blackberry印相的美学溯源与技术本质 Blackberry印相(Blackberry Photographic Process)并非真实存在的传统暗房工艺,而是Midjourney社区中对一类高对比、…...
别再只会用Matplotlib画基础热力图了!这5个高级定制技巧让你的图表更专业
别再只会用Matplotlib画基础热力图了!这5个高级定制技巧让你的图表更专业 热力图是数据可视化中最直观的展示方式之一,但大多数数据分析师止步于基础用法。当你的图表需要出现在学术论文、商业报告或投资人演示中时,默认参数生成的热力图往往…...
多模态表征与生成模型:AI驱动材料发现的核心技术与实战指南
1. 多模态材料表征:从单一描述到信息融合的范式演进在材料科学领域,如何让计算机“理解”一种材料,是驱动一切数据驱动研究的前提。传统上,我们习惯于用单一视角来描述材料:化学家用SMILES字符串描述分子,晶…...
360安全浏览器-很恶心,经常自己绑定安装,有没有什么方法可以阻止安装?
360安全浏览器-很恶心,经常自己绑定安装,有没有什么方法可以阻止安装? 可以阻止360安全浏览器的自动安装,主要通过关闭其推荐功能、彻底卸载关联组件、禁用后台服务及使用系统策略拦截来实现。 一、关闭360软件的推荐安装设置 若已安装360安全卫士或360极速浏览器,需先…...
用Claude Code+R零代码复现医学顶刊论文:零基础到掌握全流程医学SCI论文训练营
人工智能飞速发展,对于研究生、科研工作者而言,只需要聚焦研究问题创新,统计实操、图表制作、结果呈现等等SCI论文中涉及的工作都有工具可以帮你……我们团队最新开设:“零基础掌握SCI论文全流程:Claude CodeR零代码复…...
微服务架构:使用Docker+Kubernetes部署应用
微服务架构:使用DockerKubernetes部署应用 大家好,我是欧阳瑞(Rich Own)。今天想和大家聊聊微服务架构以及如何使用Docker和Kubernetes进行部署。作为一个全栈开发者,我经历过单体应用到微服务的转型,深刻体…...
