小兔鲜02

elementplus自动按需引入

在这里插入图片描述

elementplus主题色定制

安装sass

npm install sass -D

要替换的主题色内容:

/* 只需要重写你需要的即可 */
@forward 'element-plus/theme-chalk/src/common/var.scss' with ($colors: ('primary': (// 主色'base': #27ba9b,),'success': (// 成功色'base': #1dc779,),'warning': (// 警告色'base': #ffb302,),'danger': (// 危险色'base': #e26237,),'error': (// 错误色'base': #cf4444,),)
);

vite配置:

  1. 告知elementplus引入的文件是 sass文件
    在这里插入图片描述

  2. 自动导入这个sass文件
    在这里插入图片描述

import { fileURLToPath, URL } from 'node:url'import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'// elementplus 按需导入
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'// https://vitejs.dev/config/
export default defineConfig({// plugins是vite的插件配置位置plugins: [vue(),AutoImport({resolvers: [ElementPlusResolver()],}),Components({// 将elementplus配置采用sass格式resolvers: [ElementPlusResolver({importStyle:"sass"})],}),],resolve: {alias: {// 实际的路径转换'@': fileURLToPath(new URL('./src', import.meta.url))}},css:{preprocessorOptions:{scss:{additionalData:// 自动导入 定制好的scss`@use "@/styles/element/index.scss" as *;`}}}
})
重置样式
// 重置样式
* {box-sizing: border-box;
}html {height: 100%;font-size: 14px;
}
body {height: 100%;color: #333;min-width: 1240px;font: 1em/1.4 'Microsoft Yahei', 'PingFang SC', 'Avenir', 'Segoe UI','Hiragino Sans GB', 'STHeiti', 'Microsoft Sans Serif', 'WenQuanYi Micro Hei',sans-serif;
}
body,
ul,
h1,
h3,
h4,
p,
dl,
dd {padding: 0;margin: 0;
}
a {text-decoration: none;color: #333;outline: none;
}
i {font-style: normal;
}
input[type='text'],
input[type='search'],
input[type='password'],
input[type='checkbox'] {padding: 0;outline: none;border: none;-webkit-appearance: none;&::placeholder {color: #ccc;}
}
img {max-width: 100%;max-height: 100%;vertical-align: middle;background: #ebebeb url('@/assets/images/200.png') no-repeat center / contain;
}
ul {list-style: none;
}#app {background: #f5f5f5;user-select: none;
}.container {width: 1240px;margin: 0 auto;position: relative;
}
.ellipsis {white-space: nowrap;text-overflow: ellipsis;overflow: hidden;
}.ellipsis-2 {word-break: break-all;text-overflow: ellipsis;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;overflow: hidden;
}.fl {float: left;
}.fr {float: right;
}.clearfix:after {content: '.';display: block;visibility: hidden;height: 0;line-height: 0;clear: both;
}// reset element
.el-breadcrumb__inner.is-link {font-weight: 400 !important;
}
sass文件自动导入公共变量,避免手动导入

sass文件可能会存一些共享颜色,等

$xtxColor: #27ba9b;
$helpColor: #e26237;
$sucColor: #1dc779;
$warnColor: #ffb302;
$priceColor: #cf4444;

在这里插入图片描述

字体图标引入

在这里插入图片描述

监听滚动距离,显示吸顶

定义好一个写好的nav,,,作为吸顶nav,,,当滚动条滚动到一定位置,,显示这个吸顶nav,,并一直吸顶,,当滚动条小于某个高度,,隐藏这个吸顶nav

const y = ref(0)
const handleScroll = ()=>{console.log(window.scrollY)y.value = window.scrollY
}
onMounted(()=>{window.addEventListener("scroll",handleScroll)
})
pinia共享导航数据
axios

axios-http.com

props 和 slot 写模板
自定义指令实现懒加载图片
app.direactive("lazy-img",(el,binding)=>{// el :绑定这个指令的 dom// binding :  这个指令绑定的值
})

懒加载图片,就是等图片进入可视区域之后再去加载图片,,
预先不设置src属性,,等图片进入可视区域之后,在设置src属性,去请求图片。。
js中可以使用Intersection Observer API 监测元素是否在视口区域,,,

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<style>.content {height: 1500px;background-color: lightgrey;width: 1000px;}.target {margin: 1000px 0;padding: 20px;background-color: lightcoral;text-align: center;}.in-view {background-color: lightgreen;}
</style>
<div class="content"><div id="target" class="target">监测的目标元素</div>
</div>
<script>const observer= new IntersectionObserver((entries)=>{entries.forEach(entry=>{if (entry.isIntersecting){console.log("进入")}else{console.log("leave")}})})var element = document.querySelector("#target");observer.observe(element)
</script>
</body>
</html>

定义指令的时候,监测视口:

// 定义全局指令
app.directive("img-lazy",{mounted(el,binding){// el :指令绑定的那个元素// binding : 指令的等于号后面 的表达式值console.log(el,binding.value)const observer =  new IntersectionObserver((entries)=>{for (const entry of entries) {if (entry.isIntersecting){// 进入了console.log("进入了")el.src = binding.value}}})observer.observe(el)}
})

图片加载完成后,存在重复监听,需要将监听移除掉

observer.unobserve(entry.target)
vue3插件

js代码不应该直接写在入口函数中,,可以使用插件形式,去执行这些js代码,,
定义一个插件:

export const lazyPlugin = {install(app){app.directive("img-lazy",(el,binding)=>{console.log(el,binding.value)const observer =   new IntersectionObserver((entries)=>{for (const entry of entries) {if (entry.isIntersecting){// 进去了console.log("enter")el.src = binding.value// 监听完一次后,取消监听,,图片只需要加载一次observer.unobserve(entry.target)}}})observer.observe(el)})}
}

在main.js中导入插件:

import {lazyPlugin} from "@/directives/index.js";
app.use(lazyPlugin)
vue3使用路由参数
import {useRoute} from "vue-router"
const route = useRoute()console.log(route.params.id)
router-link激活时设置样式名
          <RouterLink :to="`/category/${item.id}`" active-class="active">{{item.name}}</RouterLink> </li>
路由缓存问题

一个路由跳转到另一个路由的时候,如果是相同的组件会被复用,,,
解决:

  1. 不让组件复用,强制销毁重建,在路由出口添加一个key,破坏复用机制
<!--  二级路由出口--><RouterView :key="$route.fullPath"/>

销毁重建会导致所有的请求都重新发送,,如果是复用的数据,就会存在资源浪费
2. 监听路由变化
onBeforeRouteUpdate((to,from)=>{}),router里面的钩子函数,,监测路由变化,,to是到哪个页面

import {onBeforeRouteUpdate} from "vue-router";
// 路由变化onBeforeRouteUpdate((to, from, next)=>{console.log("路由变化了",to)getCategory(to.params.id)
})
业务代码拆分

在这里插入图片描述

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

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

相关文章

【前端项目笔记】4 权限管理

权限管理 效果展示&#xff1a; &#xff08;1&#xff09;权限列表 &#xff08;2&#xff09;角色列表 其中的分配权限功能 权限列表功能开发 新功能模块&#xff0c;需要创建新分支 git branch 查看所有分支&#xff08;*表示当前分支&#xff09; git checkout -b ri…

审稿人:拜托,请把模型时间序列去趋势!!

大侠幸会&#xff0c;在下全网同名「算法金」 0 基础转 AI 上岸&#xff0c;多个算法赛 Top 「日更万日&#xff0c;让更多人享受智能乐趣」 时间序列分析是数据科学中一个重要的领域。通过对时间序列数据的分析&#xff0c;我们可以从数据中发现规律、预测未来趋势以及做出决策…

web中间件漏洞-Resin漏洞-密码爆破、上传war

web中间件漏洞-Resin漏洞-密码爆破、上传webshell 使用爆破结果resin/resin进入后台&#xff0c;选择deploy。想部署webshell,得使用SSL方式请求&#xff0c;访问https://192.168.1.2:8443/resin-admin/index.php?qdeploy&s0(注&#xff1a;如果使用最新的火狐浏览器或者谷…

[论文笔记]Are Large Language Models All You Need for Task-Oriented Dialogue?

引言 今天带来论文Are Large Language Models All You Need for Task-Oriented Dialogue?的笔记。 主要评估了LLM在完成多轮对话任务以及同外部数据库进行交互的能力。在明确的信念状态跟踪方面&#xff0c;LLMs的表现不及专门的任务特定模型。然而&#xff0c;如果为它们提…

C语言中字符串处理函数

目录 前言 1. strlen 测字符串长度函数 2.字符串拷贝函数 2.1strcpy 2.2 strncpy 3.strcat字符串追加函数 4. strcmp/strncmp 比较函数 5.字符查找函数 5.1 strchr 5.2 strrchr 6.atoi/atol/atof字符串转换数值 总结 前言 从0开始记录我的学习历程&#xff0c;我会尽…

一小时搞定JavaScript(1)——JS基础

前言,本篇文章是依据bilibili博主(波波酱老师)的学习笔记,波波酱老师讲的很好,很适合速成!!! 本篇文章会与java进行对比学习,因为JS中很多语法和java是相同的,所以大家最好熟悉Java语言后再来进行学习,效果更佳,见效更快. 文章目录 1.基本语法1.1 JS语言的特点1.2 创建一个JS文…

开发一个软件自动运行工具不可缺少的源代码分享!

在软件开发领域&#xff0c;自动运行工具扮演着至关重要的角色&#xff0c;它们能够简化软件部署、提升运行效率&#xff0c;并在很大程度上降低人为操作失误的可能性。 而一个高效的自动运行工具的背后&#xff0c;往往是经过精心设计与实现的源代码在默默支撑&#xff0c;本…

如何解决资源管理器被结束任务后的问题,怎么重启或新建资源管理器任务?

服务器上运行的东西太多&#xff0c;修改个文件夹的名字导致卡死。结束任务后导致系统页面空白。&#xff08;关闭了windows资源管理器&#xff09; 按CtrlShiftDelete没有反应。 按CtrlShiftEsc没有反应。 按CtrlShiftEnd没有反应。 按CtrlALTEnd有反应。 (win2012) 输入…

贝锐蒲公英异地组网方案:实现制药设备远程监控、远程运维

公司业务涉及放射性药品的生产与销售&#xff0c;在全国各地拥有20多个分公司。由于药品的特殊性&#xff0c;在日常生产过程中&#xff0c;需要符合药品监管规范要求&#xff0c;对各个分部的气相、液相设备及打印机等进行监管&#xff0c;了解其运行数据及工作情况。 为满足这…

QT截图程序三-截取自定义多边形

上一篇文章QT截图程序&#xff0c;可多屏幕截图二&#xff0c;增加调整截图区域功能-CSDN博客描述了如何截取&#xff0c;具备调整边缘功能后已经方便使用了&#xff0c;但是与系统自带的程序相比&#xff0c;似乎没有什么特别&#xff0c;只能截取矩形区域。 如果可以按照自己…

conda创建虚拟环境报错解决

1.报错截图 2.解决办法 查看当前所有虚拟环境 conda env list 解决办法 解决方法 bash conda config --add channels conda-forge conda config --set channel_priority strict conda config --set channel_priority flexible

GitLab项目组相关操作(创建项目组Group、创建项目组的项目、为项目添加成员并赋予权限)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。 君不见,黄河之水天上来,奔流到海不复回。 君不见,高堂明镜悲白发,朝如青丝暮成雪。 ——《将…

视频监控平台功能:国外的硬盘录像机NVR通过ISUP协议(原ehome协议)接入AS-V1000视频平台

目录 一、背景说明 二、ISUP协议介绍 1、海康ISUP协议概述 2、ISUP协议支持主码流和子码流切换 &#xff08;1&#xff09;灵活配置和个性化 &#xff08;2&#xff09;适应不同网络带宽&#xff0c;提高使用体验 3、海康ehome相关文章 三、ISUP协议接入说明 1、平台侧…

【Day01】0基础微信小程序入门-学习笔记

文章目录 今日学习目标小程序简介1. 小程序和普通网页开发的区别2. 体验小程序 第一个小程序1.第一个小程序-注册2.第一个小程序-安装开发者工具3.第一个小程序-创建小程序项目 小程序代码构成1.小程序代码构成-项目结构2. 小程序代码构成-JSON文件3. 小程序代码构成-WXML模板4…

【DKN: Deep Knowledge-Aware Network for News Recommendation】

DKN: Deep Knowledge-Aware Network for News Recommendation 摘要 在线新闻推荐系统旨在解决新闻信息爆炸的问题&#xff0c;为用户进行个性化推荐。 总体而言&#xff0c;新闻语言高度凝练&#xff0c;充满知识实体和常识。 然而&#xff0c;现有的方法并没有意识到这些外部…

Javase.String 类

String 类 【本节目标】1. String类的重要性2. 常用方法2.1 字符串构造2.2 String对象的比较2.3 字符串查找2.4 转化2.5 字符串替换2.7 字符串截取2.8 其他操作方法2.9 字符串的不可变性2.10 字符串修改 3. StringBuilder和StringBuffer3.2 面试题&#xff1a; 4. String类oj4.…

软件开发为什么写日志,怎样写日志,什么时候写日志?

目录 一、为什么需要写日志 二、什么时候写日志 三、日志是写给谁看的 四、日志里都要写什么 五、日志的组织形式应该怎样 六、综上所述 在软件系统中&#xff0c;记录日志是基本且必要的操作&#xff0c;这一点几乎是所有开发者的共识。各种编程语言中都有众多的日志框架…

基于MATLAB的误码率与信噪比(附完整代码与分析)

目录 一. 写在前面 二. 如何计算误码率 三. 带噪声的误码率分析 3.1 代码思路 3.2 MATLAB源代码及分析 四. 总结 4.1 输入参数 4.2 规定比特长度 4.3 特殊形式比较 一. 写在前面 &#xff08;1&#xff09;本文章主要讨论如何仿真误码率随着信噪比变化的图像 &#…

112、路径总和

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 叶子节点 是指没有子节点…

Java基础16(集合框架 List ArrayList容器类 ArrayList底层源码解析及扩容机制)

目录 一、什么是集合&#xff1f; 二、集合接口 三、List集合 四、ArrayList容器类 1. 常用方法 1.1 增加 1.2 查找 int size() E get(int index) int indexOf(Object c) boolean contains(Object c) boolean isEmpty() List SubList(int fromindex,int …