From 09ae74868269c1361e89a027ee2136060d114aa8 Mon Sep 17 00:00:00 2001 From: Li1304553726 <1304553726@qq.com> Date: Fri, 21 Nov 2025 11:37:29 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=96=87=E7=AB=A0=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=BB=9A=E8=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/components/news/body/FireNews/FireNewsList.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/components/news/body/FireNews/FireNewsList.tsx b/app/components/news/body/FireNews/FireNewsList.tsx index 71d5d46..dadf8e6 100644 --- a/app/components/news/body/FireNews/FireNewsList.tsx +++ b/app/components/news/body/FireNews/FireNewsList.tsx @@ -69,7 +69,7 @@ export function FireNewsList() { {/* 文章列表 */} -
+
{articles.map((article, index) => (
{/* 左侧竖线和日期 */} From df23847507ee0b37b7b9e00316e6c7036ddb7919 Mon Sep 17 00:00:00 2001 From: qiuchenfan <2035024011@qq.com> Date: Fri, 21 Nov 2025 11:39:58 +0800 Subject: [PATCH 2/2] 11211139 --- app/components/AutoCarousel.tsx | 38 +++--- app/components/Carousel.tsx | 6 +- app/components/news/body/ImageGridSection.tsx | 116 +++++++++-------- app/components/news/body/Train.tsx | 123 ++++++++++++++++++ app/routes/news.tsx | 3 +- package.json | 3 +- pnpm-lock.yaml | 3 + public/{ => logo}/culture.png | Bin public/logo/logo1.png | Bin 0 -> 4986 bytes public/logo/logo2.png | Bin 0 -> 4828 bytes 10 files changed, 214 insertions(+), 78 deletions(-) create mode 100644 app/components/news/body/Train.tsx rename public/{ => logo}/culture.png (100%) create mode 100644 public/logo/logo1.png create mode 100644 public/logo/logo2.png diff --git a/app/components/AutoCarousel.tsx b/app/components/AutoCarousel.tsx index f05bd47..e1fa593 100644 --- a/app/components/AutoCarousel.tsx +++ b/app/components/AutoCarousel.tsx @@ -1,19 +1,15 @@ -// 引入 React 核心库,用于构建组件 -import * as React from "react"; - -// 引入 Embla Carousel 的自动播放插件,实现轮播图自动切换 +// 引入 Embla Carousel 的自动播放插件 import Autoplay from "embla-carousel-autoplay"; - -// 引入自定义 UI 组件:Card 和 CardContent(通常用于内容容器封装) +// 引入自定义 UI 组件:Card 和 CardContent(通常用于内容容器) import { Card, CardContent } from "@/ui/card"; - -// 引入自定义轮播组件及其核心子组件 -// 注意:这里没有使用 CarouselNext/Previous,说明该轮播为纯自动播放、无手动导航按钮 +// 引入自定义轮播组件及其子组件和类型定义 import { Carousel, CarouselContent, CarouselItem, + type CarouselApi, // Embla 轮播实例的类型定义 } from "@/ui/carousel"; +import * as React from "react"; // 定义轮播图中要展示的图片资源路径数组 // 包含轮播主图(carousel-*.jpg)以及额外的静态资源(如 book1.png、header.png 等) @@ -31,6 +27,16 @@ const imageUrls = [ // 导出名为 AutoCarouselDemo 的函数式组件 export function AutoCarouselDemo() { + const [api, setApi] = React.useState(); + const [selectedIndex, setSelectedIndex] = React.useState(0); + const [current, setCurrent] = React.useState(0); + React.useEffect(() => { + if (!api) return; + setCurrent(api.selectedScrollSnap()); + api.on("select", () => { + setCurrent(api.selectedScrollSnap()); + }); + }, [api]); return ( // 外层容器:相对定位,水平居中,上下留有足够间距(mt-30 ≈ 120px, mb-20 ≈ 80px)
@@ -51,28 +57,28 @@ export function AutoCarouselDemo() { className="w-full" // 轮播容器占满父级宽度 > {/* 轮播内容区域:添加 gap-4 实现卡片间 1rem(16px)间距 */} - + {/* 遍历所有图片 URL,为每张图生成一个轮播项 */} {imageUrls.map((src, index) => ( {/* 卡片外层:添加内边距、悬停缩放动效、鼠标指针样式 */} -
+
{/* 图片容器:固定高度 h-120(即 30rem = 480px),隐藏溢出内容 */}
{/* 使用 CardContent 包裹图片,确保与 UI 系统一致 */} - {/* p-0 移除默认内边距 */} + {/* p-0 移除默认内边距 */} {/* 实际图片元素 */} {`Slide @@ -82,8 +88,6 @@ export function AutoCarouselDemo() { ))} - {/* 注:此处未渲染 CarouselPrevious / CarouselNext,说明不提供手动左右箭头 */} - {/* 如需添加,可在此处插入: */}
diff --git a/app/components/Carousel.tsx b/app/components/Carousel.tsx index 870ff86..334b57c 100755 --- a/app/components/Carousel.tsx +++ b/app/components/Carousel.tsx @@ -12,8 +12,6 @@ import { Carousel, CarouselContent, CarouselItem, - CarouselNext, - CarouselPrevious, type CarouselApi, // Embla 轮播实例的类型定义 } from "@/ui/carousel"; @@ -41,7 +39,7 @@ export function CarouselDemo({ paginationPosition = 'right', // 默认右下角 paginationStyle = 'dot', // 默认圆形指示器 }: CarouselDemoProps) { - // 存储 Embla 轮播实例的引用 当前激活的幻灯片索引 总共的幻灯片数量 图片总数 + // 轮播实例的引用 当前激活的幻灯片索引 总共的幻灯片数量 图片总数 const [api, setApi] = React.useState(); const [current, setCurrent] = React.useState(0); const [count, setCount] = React.useState(0); @@ -89,7 +87,7 @@ export function CarouselDemo({ {/* 内部包裹层:无内边距,占满 移除默认间距 自动填充容器,保持比例裁剪*/} -
+
{ // 新闻列表数据,用于显示在右侧新闻列表区 - const newsList:NewsItem[] = [ + const newsList: NewsItem[] = [ { - id:'1', - content:'中华人民共和国监察法', - url:'https://www.baidu.com', + id: '1', + content: '中华人民共和国监察法', + url: 'https://www.baidu.com', }, { - id:'2', - content:'2024年国办印发意见部门工作人员党听全国两...', - url:'https://www.baidu.com', + id: '2', + content: '2024年国办印发意见部门工作人员党听全国两...', + url: 'https://www.baidu.com', }, { - id:'3', - content:'十四届全国人大二次会议闭幕贺词', - url:'https://www.baidu.com', + id: '3', + content: '十四届全国人大二次会议闭幕贺词', + url: 'https://www.baidu.com', }, { - id:'4', - content:'7天人代会:"小片段"折射民主"大全景"', - url:'https://www.baidu.com', + id: '4', + content: '7天人代会:"小片段"折射民主"大全景"', + url: 'https://www.baidu.com', }, { - id:'5', - content:'全国政协十四届二次会议共收到提案5800多件', - url:'https://www.baidu.com', + id: '5', + content: '全国政协十四届二次会议共收到提案5800多件', + url: 'https://www.baidu.com', }, { - id:'6', - content:'两会观察丨从两会八个高频词看中国', - url:'https://www.baidu.com', + id: '6', + content: '两会观察丨从两会八个高频词看中国', + url: 'https://www.baidu.com', }, { - id:'7', - content:'两会"清单"上新这些民生发展温度', - url:'https://www.baidu.com', + id: '7', + content: '两会"清单"上新这些民生发展温度', + url: 'https://www.baidu.com', }, { - id:'8', - content:'"选择中国"——世界从中国两会读出心动机号', - url:'https://www.baidu.com', + id: '8', + content: '"选择中国"——世界从中国两会读出心动机号', + url: 'https://www.baidu.com', }, { - id:'9', - content:'中国经济信心说丨新玛合信心从哪里来', - url:'https://www.baidu.com', + id: '9', + content: '中国经济信心说丨新玛合信心从哪里来', + url: 'https://www.baidu.com', }, ]; - {/* 弹性 默认纵向 大屏横向 */} + const booksList: NewsItem[] = [ + { + id: 'book1', + content: '习近平新时代中国特色社会主义思想专题数据库', + url: 'https://www.baidu.com', + }, + { + id: 'book2', + content: '习近平著作选读', + url: 'https://www.baidu.com', + }, + ]; + {/* 水平居中 + 使用背景图片方式展示logo 覆盖 只显示1 外边距 + 弹性 默认纵向 大屏子元素横向 */ } return (
- {/* 页面主容器,宽度为页面的5/6,并且水平居中 */}
- {/* 顶部Logo区:使用背景图片方式展示logo,宽70高20 */}
-
- {/* 左侧图片区:占据屏幕3/5的宽度 */}
{/* 使用grid布局来安排图片的位置 */}
@@ -89,13 +99,16 @@ const LearnPage = () => {
- {/* 右侧新闻列表:占据屏幕剩余2/5的宽度 */} + {/* 右侧新闻列表:灰色边框 小阴影 内边距 + 垂直方向上相邻子元素间距 + 组的概念*/} +
    {newsList.map((item) => (
  • - window.open(item.url, '_blank')}>{item.content} + window.open(item.url, '_blank')}>{item.content}
  • ))}
@@ -103,14 +116,17 @@ const LearnPage = () => {
{/* 底部两个特色区域,分别展示书籍信息 */} -
+
{/* 左边书籍区域 */} -
+
{/* 左边容器内的文本内容 */} -
-

- 习近平新时代中国特色社会主义思想专题数据库 +

+

+ window.open('https://www.12371.cn/2025/01/10/ARTI1736473568068938.shtml', '_blank')}> + 习近平新时代中国特色社会主义 +
思想专题数据库 +

@@ -120,23 +136,13 @@ const LearnPage = () => {
{/* 右边容器内的文本内容 */}
-

习近平著作选读

+

window.open('https://www.12371.cn/special/zzxd/', '_blank')}>习近平著作选读

- - - -
-
-
-
烽火动态
-
-
); }; diff --git a/app/components/news/body/Train.tsx b/app/components/news/body/Train.tsx new file mode 100644 index 0000000..0f5c629 --- /dev/null +++ b/app/components/news/body/Train.tsx @@ -0,0 +1,123 @@ +import { CarouselDemo } from '@/components/Carousel'; // 导入轮播图组件 +import React from 'react'; + +interface NewsItem { + id: string; + content: string; + url: string; +} + +// LearnPage 组件定义 +const Train = () => { + // 新闻列表数据,用于显示在右侧新闻列表区 + const newsList: NewsItem[] = [ + { + id: '1', + content: '中华人民共和国监察法', + url: 'https://www.baidu.com', + }, + { + id: '2', + content: '2024年国办印发意见部门工作人员党听全国两...', + url: 'https://www.baidu.com', + }, + { + id: '3', + content: '十四届全国人大二次会议闭幕贺词', + url: 'https://www.baidu.com', + }, + { + id: '4', + content: '7天人代会:"小片段"折射民主"大全景"', + url: 'https://www.baidu.com', + }, + { + id: '5', + content: '全国政协十四届二次会议共收到提案5800多件', + url: 'https://www.baidu.com', + }, + { + id: '6', + content: '两会观察丨从两会八个高频词看中国', + url: 'https://www.baidu.com', + }, + { + id: '7', + content: '两会"清单"上新这些民生发展温度', + url: 'https://www.baidu.com', + }, + ]; + const gridItems = [ + { src: '/logo/logo1.png', colSpan: 1, link: '' }, + { src: '/images/carousel-3.jpg', colSpan: 2, link: 'https://www.baidu.com' }, + { src: '/images/carousel-4.jpg', colSpan: 2, link: 'https://www.baidu.com' }, + { src: '/logo/logo2.png', colSpan: 1, link: '' }, + { src: '/images/carousel-5.jpg', colSpan: 2, link: 'https://www.baidu.com' }, + { src: '/images/carousel-7.jpg', colSpan: 2, link: 'https://www.baidu.com' }, + ]; + {/* 弹性 默认纵向 大屏横向 */ } + return ( +
+ {/* 页面主容器,宽度为页面的5/6,并且水平居中 */} +
+ {/* 顶部Logo区:使用背景图片方式展示logo,宽70高20 */} +
+
+ {/* 使用grid布局来安排图片的位置 */} +
+ {/* 上左轮播图 */} +
+ +
+ {/* 上中轮播图 */} +
+ +
+ {/* 上右侧新闻列表*/} +
+
    + {newsList.map((item) => ( +
  • + + window.open(item.url, '_blank')}>{item.content} +
  • + ))} +
+
+ + {/* 下四图:动态渲染 */} + {gridItems.map((item, index) => ( +
+ {`Image + {/* 如果 colSpan 大于 1 并且存在 link,则显示链接 */} + {item.colSpan > 1 && item.link && ( + { + e.preventDefault(); + window.open(item.link, '_blank'); + }} + > + 了解更多 + + )} +
+ ))} +
+
+
+ + + + +
+ ); +}; + +export default Train; \ No newline at end of file diff --git a/app/routes/news.tsx b/app/routes/news.tsx index d7032a4..c630a5f 100755 --- a/app/routes/news.tsx +++ b/app/routes/news.tsx @@ -13,7 +13,7 @@ import { MicroVision } from "@/components/news/body/FireNews/MicroVision"; import { Hotline } from "@/components/news/body/FireNews/Hotline"; import { AutoCarouselDemo } from "@/components/AutoCarousel"; import Footer from "@/components/news/footer/footer"; -import { CarouselDemo } from "@/components/Carousel"; +import Train from "@/components/news/body/Train"; export function meta( ) { return [ @@ -43,6 +43,7 @@ export default function Home() {
+
); } diff --git a/package.json b/package.json index bfd31e6..aac4a68 100755 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "dayjs": "^1.11.19", + "embla-carousel": "^8.6.0", "embla-carousel-autoplay": "^8.6.0", "embla-carousel-react": "^8.6.0", "immer": "^10.2.0", @@ -27,8 +28,8 @@ "lucide-react": "^0.553.0", "next-themes": "^0.4.6", "react": "^19.1.1", - "react-icons": "^5.5.0", "react-dom": "^19.1.1", + "react-icons": "^5.5.0", "react-router": "^7.9.2", "shadcn": "^3.5.0", "sonner": "^2.0.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d8d961f..e515520 100755 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -41,6 +41,9 @@ importers: dayjs: specifier: ^1.11.19 version: 1.11.19 + embla-carousel: + specifier: ^8.6.0 + version: 8.6.0 embla-carousel-autoplay: specifier: ^8.6.0 version: 8.6.0(embla-carousel@8.6.0) diff --git a/public/culture.png b/public/logo/culture.png similarity index 100% rename from public/culture.png rename to public/logo/culture.png diff --git a/public/logo/logo1.png b/public/logo/logo1.png new file mode 100644 index 0000000000000000000000000000000000000000..5371c1add64f166650d438d2b0ca979d85c36eb4 GIT binary patch literal 4986 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 S#xV7>%9a2H|GxX%2>37O1H$A0 literal 0 HcmV?d00001 diff --git a/public/logo/logo2.png b/public/logo/logo2.png new file mode 100644 index 0000000000000000000000000000000000000000..efa54b43d9decc9052d45cbf13228bcb1a9d9cb0 GIT binary patch literal 4828 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 Xl9ITAnWH(JX&QSgz~ARzz@AyU literal 0 HcmV?d00001