Softhub軟件下載站實戰開發(十八):軟件分類展示

Softhub軟件下載站實戰開發(十八):軟件分類展示 🖥?

在之前文章中,我們實現了后臺管理相關部分,本篇文章開始我們來實現用戶端頁面,由于內網使用,不需要sso優化等特性,我們不采用nuxt,仍然是開發單頁應用。

用戶端項目概述

我們正在開發一個名為Softhub的現代化軟件下載站,采用Vue 3 + Vite技術棧:

  • 前端架構:基于Vue 3的Composition API
  • UI框架:Naive UI + 自定義樣式
  • 狀態管理:Pinia集中式狀態管理
  • 路由系統:Vue Router實現SPA導航
  • 圖標系統:FontAwesome全圖標支持

代碼實現

導航欄

image.png

為了不顯單調,我們為logo部分增加點特效

.logo {display: flex;align-items: center;margin-right: 40px;position: relative;cursor: pointer;transition: all 0.3s ease;
}.logo:hover {transform: scale(1.05) rotate(-2deg);
}.logo:hover .logo-main {text-shadow: 0 0 20px rgba(255, 255, 255, 0.8);transform: translateY(-2px) scale(1.1);font-size: 2rem;
}.logo:hover .logo-shadow {opacity: 0.8;transform: translateY(4px) scale(1.1);font-size: 2rem;
}.logo-text {position: relative;display: flex;flex-direction: column;align-items: center;
}.logo-main {font-size: 1.8rem;font-weight: 700;color: #fff;position: relative;z-index: 2;animation: float 3s ease-in-out infinite;transition: all 0.3s ease;text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
}.logo-shadow {font-size: 1.8rem;font-weight: 700;color: rgba(255, 255, 255, 0.2);position: absolute;top: 2px;left: 0;z-index: 1;animation: float-shadow 3s ease-in-out infinite;transition: all 0.3s ease;filter: blur(1px);
}@keyframes float {0%, 100% {transform: translateY(0px);}50% {transform: translateY(-3px);}
}@keyframes float-shadow {0%, 100% {transform: translateY(2px);opacity: 0.2;}50% {transform: translateY(5px);opacity: 0.3;}
}/* 添加背景光效 */
.logo::before {content: '';position: absolute;top: -20px;left: -20px;right: -20px;bottom: -20px;background: radial-gradient(circle, rgba(255, 255, 255, 0.1) 0%, transparent 70%);opacity: 0;transition: opacity 0.3s ease;pointer-events: none;
}.logo:hover::before {opacity: 1;
}

這樣,我們在移入移出logo的時候會有一個光暈傾斜效果,頁面正常顯示的時候會上下輕微浮動,增加兩動感。

導航欄主要布局

AppHeader.vue

<template><header><div class="header-container"><div class="logo"><div class="logo-text"><span class="logo-main">SoftHub</span><span class="logo-shadow">SoftHub</span></div></div><ul class="main-nav"><li><router-link to="/" :class="{ active: $route.path === '/' }">首頁</router-link></li><li><router-link to="/categories" :class="{ active: $route.path === '/categories' }">分類導航</router-link></li><li><router-link to="/resources" :class="{ active: $route.path === '/resources' }">資源集</router-link></li></ul><div class="search-box"><i class="fas fa-search"></i><inputtype="text"v-model="searchQuery"@keyup.enter="handleSearch"@input="handleInput"placeholder="搜索軟件、工具、資源..."/></div></div></header>
</template>

主要layout

<template><div><AppHeader /><div class="main-container"><router-view /></div><!-- 軟件詳情彈窗 --><SoftwareDetailModalv-model:isVisible="isModalVisible":detail="selectedSoftware"@close="closeModal"/></div>
</template>

分類

分類請求邏輯

ComponentStoreAPI請求分類數據返回緩存數據發起網絡請求返回分類數據返回新鮮數據alt[已有緩存][無緩存]ComponentStoreAPI

為減少復雜度,只支持二級分類

第一層為大分類,第二級為該領域細分分類

效果
image.png

<template><n-card title="分類"><n-space vertical size="large"><div><n-tag v-for="c in firstCategories" :key="c.id" :type="activeCategory === c.id ? 'primary' : 'default'" @click="selectCategory(c)" class="category-tag" style="cursor:pointer; margin-right: 8px;"><font-awesome-icon v-if="c.icon && getIconObject(c.icon)" :icon="getIconObject(c.icon)" class="category-icon"/><font-awesome-icon v-else :icon="['fas', 'folder']" class="category-icon"/>{{ c.categoryName }}</n-tag></div><div v-if="secondCategories.length"><n-tag v-for="sc in secondCategories" :key="sc.id" :type="activeSubCategory === sc.id ? 'primary' : 'default'" @click="selectSubCategory(sc)" class="subcategory-tag" style="margin-right: 8px;">{{ sc.categoryName }}</n-tag></div><transition-grouptag="div"class="software-grid"@before-enter="beforeEnter"@enter="enter":css="false"><div v-for="(item, index) in softwareList" :key="item.id" :data-index="index"><SoftwareCard :software="item" @download="onDownload" @show-detail="showSoftwareDetail" /></div></transition-group><n-paginationv-if="total > pageSize"v-model:page="page":page-size="pageSize":page-count="Math.ceil(total / pageSize)"style="margin-top: 24px; text-align: center;"@update:page="handlePageChange"/></n-space></n-card>
</template>

在懸浮上tag分類時,分類也需要有一個明顯的效果示意
image.png
我們需要為標簽設計點樣式,增強動畫效果

.software-grid {display: grid;grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));gap: 16px;margin-top: 24px;
}.category-tag {cursor: pointer;margin-right: 8px;transition: transform 0.2s cubic-bezier(0.4,0,0.2,1), box-shadow 0.2s cubic-bezier(0.4,0,0.2,1), background-color 0.2s;font-size: 1.1rem;padding: 0 18px;border-radius: 20px;margin-bottom: 8px;display: inline-flex;align-items: center;gap: 8px;
}.category-tag:hover {transform: translateY(-4px) scale(1.08) rotate(-2deg);box-shadow: 0 4px 16px rgba(58, 123, 213, 0.15);
}.category-tag:not(.n-tag--primary-type):hover {background-color: #3a7bd5;color: #fff;
}.category-icon {margin-right: 4px;font-size: 1rem;
}.subcategory-tag {cursor: pointer;margin-right: 8px;transition: transform 0.18s cubic-bezier(0.4,0,0.2,1), box-shadow 0.18s cubic-bezier(0.4,0,0.2,1), background-color 0.18s;font-size: 1rem;padding: 0 14px;border-radius: 16px;margin-bottom: 6px;
}.subcategory-tag:hover {transform: translateY(-2px) scale(1.05);box-shadow: 0 2px 8px rgba(58, 123, 213, 0.1);
}.subcategory-tag:not(.n-tag--primary-type):hover {background-color: #3a7bd5;color: #fff;
}

關鍵動畫效果

元素動畫效果實現方式
Logo懸浮放大+陰影transform + text-shadow
導航菜單下劃線滑入::after偽元素 + scaleX動畫
搜索框聚焦放大transform: scale(1.05)

softhub系列往期文章

  1. Softhub軟件下載站實戰開發(一):項目總覽
  2. Softhub軟件下載站實戰開發(二):項目基礎框架搭建
  3. Softhub軟件下載站實戰開發(三):平臺管理模塊實戰
  4. Softhub軟件下載站實戰開發(四):代碼生成器設計與實現
  5. Softhub軟件下載站實戰開發(五):分類模塊實現
  6. Softhub軟件下載站實戰開發(六):軟件配置面板實現
  7. Softhub軟件下載站實戰開發(七):集成MinIO實現文件存儲功能
  8. Softhub軟件下載站實戰開發(八):編寫軟件后臺管理
  9. Softhub軟件下載站實戰開發(九):編寫軟件配置管理界面
  10. Softhub軟件下載站實戰開發(十):實現圖片視頻上傳下載接口
  11. Softhub軟件下載站實戰開發(十一):軟件分片上傳接口實現
  12. Softhub軟件下載站實戰開發(十二):軟件管理編輯頁面實現
  13. Softhub軟件下載站實戰開發(十三):軟件管理前端分片上傳實現
  14. Softhub軟件下載站實戰開發(十四):軟件收藏集設計
  15. Softhub軟件下載站實戰開發(十五):儀表盤API設計
  16. Softhub軟件下載站實戰開發(十六):儀表盤前端設計與實現
  17. Softhub軟件下載站實戰開發(十七):用戶端API設計

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/89606.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/89606.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/89606.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux--------------------BlockQueue的生產者消費模型

1.基礎BlockingQueue的生產者消費模型 1.1 BlockQueue 在多線程編程中阻塞隊列是一種常用于實現生產者和消費者模型的數據結構&#xff0c;它與普通的隊列區別在于&#xff0c;當隊列為空時&#xff0c;從隊列獲取元素的操作將被阻塞&#xff0c;直到隊列中放入了新的數據。當…

堆排序算法詳解:原理、實現與C語言代碼

堆排序&#xff08;Heap Sort&#xff09;是一種高效的排序算法&#xff0c;利用二叉堆數據結構實現。其核心思想是將待排序序列構造成一個大頂堆&#xff08;或小頂堆&#xff09;&#xff0c;通過反復調整堆結構完成排序。下面從原理到實現進行詳細解析。一、核心概念&#x…

SSM框架——注入類型

引用類型的注入&#xff1a;Setter方法簡單類型的注入&#xff1a;定義簡單實例和方法在配置文件中對bean進行配置&#xff0c;使用porperty屬性 值用value&#xff08;ref是用來獲取bean的&#xff09;構造器方法&#xff1a;構造器方法中需要寫name&#xff0c;這樣程序就會耦…

信息學奧賽一本通 1552:【例 1】點的距離

【題目鏈接】 ybt 1552&#xff1a;【例 1】點的距離 【題目考點】 1. 最近公共祖先&#xff08;LCA&#xff09;&#xff1a;倍增求LCA 知識點講解見&#xff1a;洛谷 P3379 【模板】最近公共祖先&#xff08;LCA&#xff09; 【解題思路】 首先用鄰接表保存輸入的無權圖…

1Panel中的OpenResty使用alias

問題 在服務器上使用了1Panel的OpenResty來管理網站服務&#xff0c;當作是一個Nginx用&#xff0c;想做一個alias來直接管理某個文件夾的文件&#xff0c;于是直接在其中一個網站中使用了alias配置。 location /upload {alias /root/upload;autoindex on;charset utf-8;charse…

小明記賬簿煥新記:從單色到多彩的主題進化之路

【從冷靜藍到多彩世界&#xff0c;這一次我們重新定義記賬美學】 曾經&#xff0c;打開“小明記賬簿”是一片沉穩的藍色海洋&#xff0c;它像一位理性的財務管家&#xff0c;默默守護著你的每一筆收支。但總有人悄悄問&#xff1a;“能不能多一些顏色&#xff1f;”今天&#x…

Apache IoTDB(1):時序數據庫介紹與單機版安裝部署指南

目錄一、Apache IoTDB 是什么&#xff1f;1.1 產品介紹1.2 產品體系1.3 產品架構二、IoTDB 環境配置2.1 Linux系統需準備環境2.2 Windows系統需準備環境2.3 網絡配置2.3.1 關閉防火墻2.3.2 查看端口是否占用2.3.3 避雷經驗三、IoTDB 單機版系統部署安裝指南3.1 產品下載3.2 注意…

Python 圖片爬取入門:從手動下載到自動批量獲取

前言 想批量下載網頁圖片卻嫌手動保存太麻煩&#xff1f;本文用 Python 帶你實現自動爬取&#xff0c;從分析網站到代碼運行&#xff0c;步驟清晰&#xff0c;新手也能快速上手&#xff0c;輕松搞定圖片批量獲取。 1.安裝模塊 在開始爬取圖片前&#xff0c;我們需要準備好工具…

aspect-ratio: 1 / 1樣式在部分手機瀏覽器中失效的問題怎么解決?

最近在uniapp開發時又遇到了安卓手機不兼容問題&#xff0c;ios系統無影響。開發背景&#xff1a;小編想通過網格布局來實現答題卡的布局&#xff0c;實現五列多行的形式。代碼片段&#xff1a;<view class"question-grid"><viewv-for"(question, inde…

RecyclerView與ListView深度對比分析

1. 使用流程對比ListView: 布局XML&#xff1a; 在布局文件中放置 <ListView> 控件&#xff0c;指定 id (如 android:id"id/listView")。數據適配器 (Adapter)&#xff1a; 繼承 BaseAdapter 或 ArrayAdapter / CursorAdapter / SimpleAdapter。 重寫 getCount…

deepseekAI對接大模型的網頁PHP源碼帶管理后臺(可實現上傳分析文件)

前端后端都已進行優化&#xff0c;新增可上傳文件功能&#xff08;拖拽進去也可以&#xff09;&#xff0c;后端進行風格主題設置&#xff0c;優化數據結構&#xff01;依舊測試網站&#xff1a;iEPMS我的工具箱&#xff0c;你的智慧助手&#xff01;還是那句話兄弟們輕點搞我的…

NJU 凸優化導論(9) 對偶(II)KKT條件+變形重構

https://www.lamda.nju.edu.cn/chengq/optfall24/slides/Lecture_9.pdf 目錄 關于對偶的一些解釋 1. Max-min characterization 最大最小準則 2. Saddle-point Interpretation 鞍點解釋 3. Game interpretation 博弈論里的對偶 Optimality Conditions 最優條件 1. Certi…

Vue Swiper組件

Vue 漸進式JavaScript 框架 基于Vue2的學習筆記 - Vue Swiper組件實現筆記 目錄 Swiper組件 下載swiper 創建swiper組件 保存時修復 編寫swiper內容 引入swiper 使用swiper Swiper子組件 創建Swiper列表組件 使用子組件 增加生命周期 增加圖片顯示 加載數據 渲染…

Linux:lvs集群技術

一.集群和分布式1.1 集群集群是為了解決某個特定問題將多臺計算機組合起來形成的單個系統。即當單獨一臺主機無法承載現有的用戶請求量&#xff1b;或者一臺主機因為單一故障導致業務中斷的時候&#xff0c;就可以增加服務主機數&#xff0c;這些主機在一起提供服務&#xff0c…

【管理】持續交付2.0:業務引領的DevOps-精要增訂本,讀書筆記(理論模型,技術架構,業務價值)

【管理】持續交付2.0&#xff1a;業務引領的DevOps-精要增訂本&#xff0c;讀書筆記&#xff08;理論模型&#xff0c;技術架構&#xff0c;業務價值&#xff09; 文章目錄1、持續交付的理論模型&#xff08;第1-3章&#xff09;1.1 結構圖1.2 持續交付的演進1.3 雙環模型理論體…

Wilcox檢驗的星星怎么規定的?

在 R 里&#xff0c;常見的把 p 值映射為“星號”標記&#xff08;顯著性水平&#xff09;的規則通常是&#xff1a;p 值范圍標記p ≤ 0.0001“****”0.0001 < p ≤ 0.001“***”0.001 < p ≤ 0.01“**”0.01 < p ≤ 0.05“*”0.05 < p ≤ 0.1“.”p > 0.1…

https與DNS的運行流程

HTTPS流程&#xff1a;HTTPS核心:加了TLS層&#xff0c;加密傳輸身份認證TLS:信息加密、校驗機制、身份證書TLS&#xff08;Transport Layer Security&#xff09;握手是建立安全通信通道的關鍵過程&#xff0c;發生在客戶端&#xff08;如瀏覽器&#xff09;和服務器之間。其主…

板子 5.29--7.19

板子 5.29–7.19 目錄 1. 樹狀數組 2. KMP 3. 矩陣快速冪 4. 數位DP 5. 狀壓枚舉子集 6. 快速冪&#xff08;新版 7. priority_queue 8. dijkstra 9. 單調棧 10. debug內容 1. 樹狀數組 // 樹狀數組 快速求前綴和 / 前綴最大值 // 維護位置數量(離散化)...// (區間加 區間求和…

min-max容斥學習筆記

最近報了航電的春季賽&#xff0c;在一道題目里面遇到了做法&#xff0c;感覺挺有意思。 考慮一個&#xff08;多重&#xff09;集合S{ai}S\{a_i\}S{ai?}&#xff0c;有如下的等式成立 min?ai∈S(ai)∑T?S,T≠?(?1)∣T∣?1max?ai∈T(ai)\min_{a_i\in S}(a_i)\sum_{T\sub…

使用帆軟制作項目

https://zhuanlan.zhihu.com/p/23429318335 項目背景 為加快大數據體系建設&#xff0c;穩步推進數字化轉型戰略&#xff0c;規范數據架構體系和數據治理體系&#xff0c;運用大數據推進全行數字化轉型建設&#xff0c;為業務發展提供創新動力&#xff0c;目標是利用金融科技和…