从零开发基于chatGPT的社区交友系统 (前后端分离)丨主页框架 03

03 主页框架

  • 前言
  • 开工
    • 引用iconfont字体图标
    • template代码
    • style代码
    • 页面展示
  • 路由局部跳转
    • script代码
  • 总结

前言

  • 上一章我们实现了基础的主题切换功能,这一章我们开始搭建主页主要框架,并测试一下我们的切换主题功能。

开工

引用iconfont字体图标

  • 这里我们使用font-class方法引用iconfont字体图标。
  • 在项目目录的src\assets\icons中创建iconfont.css文件。
  • 首先我们将选中的图标放入项目,点击标红部分,如下图:
    在这里插入图片描述
  • 在弹出的页面中将代码复制进刚刚创建的iconfont.css文件中,代码如下:
@font-face {font-family: "iconfont"; /* Project id 3990496 */src: url('//at.alicdn.com/t/c/font_3990496_c7efy0697zw.woff2?t=1684920260831') format('woff2'),url('//at.alicdn.com/t/c/font_3990496_c7efy0697zw.woff?t=1684920260831') format('woff'),url('//at.alicdn.com/t/c/font_3990496_c7efy0697zw.ttf?t=1684920260831') format('truetype');
}.iconfont {font-family: "iconfont" !important;font-size: 16px;font-style: normal;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;
}.icon-wode:before {content: "\e74d";
}.icon-zhuye:before {content: "\e63b";
}.icon-xiaoxi1:before {content: "\e741";
}.icon-sousou:before {content: "\e63a";
}.icon-qq:before {content: "\e600";
}.icon-weixin:before {content: "\e665";
}.icon-guanbi:before {content: "\e6c1";
}
  • main.js文件中引用,这样就可以全局使用啦。
import '@/assets/icons/iconfont.css'
  • 使用方法如下:
<i class="iconfont icon-sousou"></i>

template代码

  • 这里我的思路是主框架分为上下两部分。
  • 上为头部,使用绝对定位置于最上层。
  • 下为主要内容,分为左右两部分,左边为导航栏,右边为路由页面展示部分。
  • 主框架思路:
  <div class="container"><div class="header"></div><div class="main"><div class="nav"></div><div class="content"></div></div></div>
  • 头部为左中右布局,左边logo,中间搜索框,右边留几个按钮,如下:
	<div class="header"><img class="logo" src="@/assets/icons/logo.png"><div class="search-box"><input placeholder="搜索"><div class="search-icon"><i class="iconfont icon-guanbi"></i><i class="iconfont icon-sousou"></i></div></div><div class="right"><button @click="switchTheme('default')">极简白</button><button @click="switchTheme('dark')">暗夜黑</button><button>打赏</button><button>关于我们</button></div></div>
  • 导航栏部分如下:
      <div class="nav"><div class="nav-item" :class="communityState" @click="routerPush('community')"><i class="iconfont icon-zhuye"></i><div>社区</div></div><div class="nav-item" :class="chatState" @click="routerPush('chat')"><i class="iconfont icon-xiaoxi1"></i><div>聊天</div></div><div class="nav-item" :class="userState" @click="routerPush('user')"><i class="iconfont icon-wode"></i><div>我的</div></div></div>
  • 主内容即路由内容部分使用<router-view>左右路由页面占位。
  • 主内容部分如下:
      <div class="content"><router-view></router-view></div>

style代码

.container {height: 100%;width: 86%;margin: 0 auto;
}.header {padding-top: 1rem;display: flex;align-items: center;justify-content: space-between;position: fixed;width: 86%;margin: 0 auto;background-color: @backgroundColor;.logo {height: 3rem;}.search-box {background-color: @boxBackgroundColor;width: 30rem;border-radius: 2rem;position: fixed;left: 50%;transform: translate(-50%);padding: 0 1rem;display: flex;align-items: center;justify-content: space-between;input {background-color: @boxBackgroundColor;flex: 1;border: none;outline: none;font-size: @textSize2;color: @primaryText;width: auto;line-height: 2.4rem;}.search-icon{display: flex;i {color: @secondary;padding: 0 0.6rem;cursor: pointer;}}}.right {display: flex;button {padding: 0.5rem 1.2rem;border: none;border-radius: 2rem;background-color: transparent;font-size: @textSize2;color: @primaryText;cursor: pointer;}button:hover{background-color: @boxBackgroundColor;}}
}.main {padding-top: 5.6rem;display: flex;height: 100%;box-sizing: border-box;
}.nav {flex: 1;.nav-item {display: flex;align-items: center;font-size: @textSize2;color: @primaryText;font-weight: 600;padding: 0.8rem 1rem;margin-bottom: 0.5rem;border-radius: 2rem;cursor: pointer;i{font-size: 1.5rem;}div {margin-left: 0.8rem;}}.selected{background-color: @boxBackgroundColor;}.nav-item:hover{background-color: @boxBackgroundColor;}
}.content {flex: 5;padding-left: 2rem;overflow-y: scroll;scrollbar-width: none;-ms-overflow-style: none;
}
.content::-webkit-scrollbar{display: none;
}
.content::-moz-scrollbar{display: none;
}

页面展示

在这里插入图片描述

路由局部跳转

  • 在项目目录的src\components目录中新建如下三个vue文件:
//community.vue
<template><div>社区</div>
</template>//chat.vue
<template><div>聊天</div>
</template>//user.vue
<template><div>我的</div>
</template>
  • 路由配置,在router/index.js添加如下配置:
  • 其中,主路由页面是index.vue,该路由有三个子路由。
{path: '/',name: 'Index',component: () => import('../views/index'),children: [{path: '/user',name: 'User',component: () => import('../components/user')},{path: '/community',name: 'Community',component: () => import('../components/community')},{path: '/chat',name: 'Chat',component: () => import('../components/chat')}]},

script代码

  • js代码这里主要实现了头部的两个皮肤切换,以及导航栏的路由局部刷新功能,如下:
<script setup>
import { setTheme } from '@/theme/theme'
import { useRouter } from 'vue-router'
import { ref, onMounted } from 'vue'
const router = useRouter()
const userState = ref('noSelected')
const communityState = ref('noSelected')
const chatState = ref('noSelected')
onMounted(() => {routerPush('community')
})
const switchTheme = (theme) => {setTheme(theme)
}
const routerPush = (path) => {router.push(path)communityState.value = 'noSelected'chatState.value = 'noSelected'userState.value = 'noSelected'switch (path) {case 'community':communityState.value = 'selected'breakcase 'chat':chatState.value = 'selected'breakcase 'user':userState.value = 'selected'breakdefault:communityState.value = 'selected'}
}
</script>

总结

  • 至此,主页框架就基本完成了,上述的一些功能也可以正常使用,录制gif有点麻烦这里就没有展示,后面会不断完善细节。小伙伴们可以将自己的意见反馈发表到评论区,有合作想法的铁子欢迎私聊。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/42325.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

制造焦虑的一边去! AI 不会让我们失业,还会带来大量新机遇!

点击上方“编程技术进阶”&#xff0c;加"星标" 重磅干货&#xff0c;第一时间送达 大家好&#xff0c;我是编哥。先送上涛哥用 AI 画的美女&#xff0c;目测这个是涛哥最近的梦中情人 声明&#xff1a;本文引用图片来自涛哥&#xff08;公众号&#xff1a;涛哥聊Pyt…

AI崛起,我们应该保持自我意识!

目录 前言西部世界剧情&#xff1f;辅助还是威胁&#xff1f;如何自我保护?总结 前言 人工智能技术发展迅速&#xff0c;为我们的生活带来了很多便利。但就个人来说这些技术都是可控的&#xff0c;我并不怎么担心。直到ChatGPT的到来&#xff0c;把我惊呆了。一边感叹AI技术的…

GPT帮你写简历:求职日企篇

正文共 927 字&#xff0c;阅读大约需要 3 分钟 求职者必备技巧&#xff0c;您将在3分钟后获得以下超能力&#xff1a; 快速生成日文简历 Beezy评级 &#xff1a;B级 *经过简单的寻找&#xff0c; 大部分人能立刻掌握。主要节省时间。 推荐人 | nanako 编辑者 | Linda 在应聘…

chatgpt赋能Python-python如何构造矩阵

Intro Python是一门强大的编程语言&#xff0c;拥有广泛的应用领域&#xff0c;其中矩阵运算是其中一个重要的方向。在本文中&#xff0c;我们将介绍如何使用Python构造矩阵&#xff0c;并介绍常见的矩阵运算。 什么是矩阵&#xff1f; 矩阵是由一组有序数排列成的矩形阵列&…

chatgpt赋能python:Python怎么手动输入矩阵

Python怎么手动输入矩阵 若想在使用Python进行科学计算或机器学习时&#xff0c;我们经常会使用矩阵。要能够利用Python处理这些矩阵&#xff0c;我们需要了解如何输入一个矩阵。本文将介绍如何通过代码手动输入矩阵。 什么是矩阵 矩阵是一个二维数组&#xff0c;它包含了行…

新知实验室 TRTC在线上教育场景中的一种应用实践

一、参赛说明 很荣幸参与此次征文活动&#xff0c;我是从2年多以前&#xff0c;接触腾讯云TRTC相关产品&#xff0c;正逢疫情肆虐&#xff0c;很多业务迫切需要从线下转移到线上。 经过2年的实践&#xff0c;TRTC本身也经历了多次的迭代&#xff0c;功能更强大&#xff0c;也…

Auto_GPT:如何使用Auto-GPT、安装、开发

文章目录 前言一、使用前提二、如何在您的 PC 上安装 Auto-GPT第 1 步&#xff1a;安装 Python第 2 步&#xff1a;获取 Auto-GPT 源代码和 OpenAI API 密钥第 3 步&#xff1a;在 Windows、MacOS和 Linux上安装 Auto-GPT 三、如何在你的 PC 上运行Auto-GPT总结 前言 Auto-GPT…

【霸指拓客】抖音自动引流脚本源码终端开发

<<抖音自动引流脚本源码.>> auto(); //等待广告加载 launchApp("抖音极速版"); sleep(Math.random()*10010000); click("我知道了"); sleep(3000); back(); sleep(2000); var w device.width; var h device.height; while(true){ var i…

Autojs抖音小助手抢红包福袋脚本实战分享

此代码由日赚3万网autojs开发交流群整理提供&#xff0c;欢迎大家一起技术交流&#xff0c;查看更多脚本和源码&#xff1a; 一键加群。如有侵权,请联系我删除&#xff01; // 最新抖音小助手抢福袋脚本已更新至V5.18&#xff0c;可自动换号批量多开操作&#xff0c;单机日入15…

不要再用 C/C++ 的这种说法了!

我们对“C/C”这种写法或说法似乎在无形之中早已习以为常&#xff0c;然而&#xff0c;这种做法真的是对的吗&#xff1f; 在今天这篇文章中&#xff0c;有开发者呼吁应该立即停止使用“C/C”这种说法&#xff0c;因为这属于两种完全不同的编程语言&#xff0c;以下是他解释的原…

真正的Python多线程来了!

【CSDN 编者按】IBM工程师Martin Heinz发文表示&#xff0c;Python即将迎来了真正的多线程时刻&#xff01; 原文&#xff1a;https://martinheinz.dev/blog/97 未经授权&#xff0c;禁止转载&#xff01; 作者 | Martin Heinz 责编 | 梦依丹 翻译工具 | ChatGPT 32岁的Python…

Circular lollipop | 哇咔咔!!!环形棒棒糖图好吃又好玩!~

1写在前面 今天不想废话了&#xff0c;直接看图吧。&#x1f447; 复现代码step by step&#xff0c;自己看吧。&#x1f92a; 2用到的包 rm(list ls())library(tidyverse)library(ggtext)library(patchwork) 3示例数据 df_pw <- read.csv("./passwords.csv",row…

最新突破!天然产物首次实现全合成,轰动整个化学界

01 科研背景 生物医学是综合医学、生命科学和生物学的理论和方法而发展起来的前沿交叉学科,基本任务是运用生物学及工程技术手段研究和解决生命科学&#xff0c;特别是医学中的有关问题。机器学习技术能利用复杂的算法在大规模、异质性数据集中进行运行,在生物医学方面、人类…

基于人工智能与机器学习等多种方法的研究内容

导语 生物医学是综合医学、生命科学和生物学的理论和方法而发展起来的前沿交叉学科,基本任务是运用生物学及工程技术手段研究和解决生命科学&#xff0c;特别是医学中的有关问题。机器学习技术能利用复杂的算法在大规模、异质性数据集中进行运行,在生物医学方面、人类基因组项…

《简说基因》公众号编辑招募公告

【简说基因】免费交流群&#xff0c;资料领取/学习交流 生物信息学是什么&#xff1f;看一看 ChatGPT 的回答&#xff1a; 生物信息学是一个跨学科领域&#xff0c;结合了生物学和计算机科学的原理和技术&#xff0c;旨在研究和解释生物学数据。它利用计算机算法和统计方法来分…

挖呀挖!AutoDock 分子对接极简实践方法

挖呀挖&#xff01;AutoDock 分子对接极简实践方法&#x1f44b; 哈哈哈 开心&#x1f606; 在小小的花园里面挖呀挖呀挖 &#x1f331; 种下一颗小小的种子&#x1fad8; 开出一朵小小的花&#x1f338; 在大大的花园里面挖呀挖呀挖&#x1f331; 种下一颗大大的种子&#x1f…

【TOP生物信息】CNS图表复现,单细胞marker基因展示的另一种方式——蜂巢图

扫码关注下方公粽号&#xff0c;回复推文合集&#xff0c;获取400页单细胞学习资源&#xff01; 本文共计1359字&#xff0c;阅读大约需要4分钟。 Sten Linnarsson大神的单细胞绘图堪称极致美学&#xff0c;在这里&#xff0c;小编选择了发表在nature上展示marker基因的绘图进…

【Vue2从入门到精通】深入浅出,带你彻底搞懂Vue2组件通信的9种方式

文章目录 人工智能福利文章Vue组件间通信分类1.props / $emit1.1 父组件向子组件传值1.2 子组件向父组件传值 2.$parent / $children3.ref / $refs3.1 ref作用于组件3.2 ref作用于Html标签3.3 $nextTick() 4.EventBus &#xff08;$emit / $on&#xff09;4.1 初始化4.2 发送事…