【VUE3.0】动手做一套像素风的前端UI组件库---先导篇

目录

  • 引言
  • 准备素材
    • 字体
    • 鼠标手势图
  • 创建vue3项目
    • 构建项目
      • 1. 根据命令行提示选择如下:
      • 2. 进入项目根目录下载依赖并启动。
      • 3. 设置项目src路径别名,方便后期应用路径。
      • 4. 将素材按照自己的规则放置在assets文件夹下:
      • 5. 初始化全局css样式,在项目初始化之后,在src下会自动生成一个style.css文件,清空所有内容,设置我们自己的样式规则
      • 6. 初始化app.vue文件内容,测试字体及鼠标样式。
    • 测试效果
  • 总结

引言

闲暇时间逛github时发现了一个有趣的前端UI样式库 NES.css ,个人非常喜欢这种类型的东西,虽然可能无法在工作中实际应用,但是如果能仔细研究清楚如何去实现效果,倒也是对提升css技术能力有所帮助。
NES.css
我将在接下来的几篇文档中,完成以下几个内容:

  1. 参考NES.css研究各类组件样式如何编写。
  2. 基于vue3框架编写组件库。
  3. 将组件库发布npm仓库提供下载。

准备素材

一个像素风格的UI库除了组件样式之外,一些必要的图片、字体素材也会把整个像素风格提升一个等级。所以我先扒了一下NES.css官网提供的素材,比如鼠标样式图片、字体。

字体

  • NES.css官网首推的字体为Press Start 2P,由于这种字体只支持英文,因此还需要一款中文字体。英文字体地址:Press Start 2P
  • 官网同时推荐了中文、日文、韩文等字体,这里只说中文,例如:zpix-pixel-font。
  • 经过体验后我发现zpix-pixel-font这个字体不是很符合我对像素风的想象,所以我又搜寻了另一种中文字体目哉像素体,我已将中英两种字体均打包好了放在文章末尾提供下载。

鼠标手势图

  • 鼠标手势图片我觉得NES.css提供的素材就非常棒,他提供了普通模式和选中模式两种手势的png图片。
  • 我在之前的文章提到了一种新的图片格式AVIF,因为像素风对于画质要求极低,所以在不考虑画面细节的前提下,我更推荐大家使用AVIF格式的图片格式,转换的方法参考:【CSS Tricks】一种基于AV1视频格式的现代图像格式-AVIF,但是在我实际转换后发现我错了,无论是我将图片转为svg、webp、avif等格式,都会比现有png格式体积变大不少。有懂行的老兄帮忙解释下为啥?
  • 因为转换后反而图片体积变大了,所以就只将原图片打包好放在文章末尾提供下载。

创建vue3项目

本项目使用vite构建vue3项目,使用yarn包管理工具,使用JavaScript语法,(我觉得TS太麻烦了,虽然对于团队协作提供了不少的帮助,但是个人项目讲究灵活性),不使用css预处理,总之项目一切从简。

构建项目

yarn create vite

1. 根据命令行提示选择如下:

命令行

2. 进入项目根目录下载依赖并启动。

# 进入项目根目录
cd pixelUI
# 下载依赖
yarn install
# 启动项目
yarn dev

3. 设置项目src路径别名,方便后期应用路径。

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import path from "path";
// https://vitejs.dev/config/
export default defineConfig({plugins: [vue()],resolve: {alias: {"@": path.resolve(__dirname, "src"),},},
});

4. 将素材按照自己的规则放置在assets文件夹下:

assets

5. 初始化全局css样式,在项目初始化之后,在src下会自动生成一个style.css文件,清空所有内容,设置我们自己的样式规则

/* 全局样式变量 */
:root {/* 鼠标样式 */--cursor_normal: url("@/assets/images/cursor/cursor.png"), auto;--cursor_pointer: url("@/assets/images/cursor/cursor-click.png"), auto;
}
/* 字体 */
@font-face {font-family: "pixel_en";src: url("@/assets/fonts/pixel_en.ttf");
}
@font-face {font-family: "pixel_ch";src: url("@/assets/fonts/pixel_ch.ttf");
}
/* 根节点重置样式 */
html,
body,
#app {margin: 0;padding: 0;width: 100vw;height: 100vh;cursor: var(--cursor_normal);scroll-behavior: smooth;
}

6. 初始化app.vue文件内容,测试字体及鼠标样式。

<template><div class="cursor">测试鼠标选中状态</div><div class="font_ch"># 测试中文</div><div class="font_en"># Test English Error</div>
</template>
<script setup></script>
<style scoped>
.cursor {cursor: var(--cursor_pointer);margin-top: 20px;margin-left: 20px;
}
.font_ch {font-family: pixel_ch;font-size: 18px;font-weight: bold;margin-top: 20px;margin-left: 20px;
}
.font_en {font-family: pixel_en;font-size: 18px;margin-top: 20px;margin-left: 20px;
}
</style>

测试效果

测试

总结

  1. 至此完成了项目构建的前期准备工作,后续的组件库样式研究将分批次整,欢迎各位指导交流分享。
  2. 素材分享地址:
    • 夸克链接
    • 提取码:8pGe
  3. 另外我也上传了素材内容到csdn的资源分享,位于文章顶部位置,也欢迎各位帮我点点下载关注。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

列表、数组排序总结:Collections.sort()、list.sort()、list.stream().sorted()、Arrays.sort()

列表类型 一.Collections.sort() Collections.sort()用于List类型的排序&#xff0c;其提供了两个重载方法&#xff1a; 1.sort(List<T> list) &#xff08;1&#xff09;List指定泛型时只能指定引用数据类型&#xff0c;也就是说无法用于基本数据类型的排序。 &am…

leetcode:3232. 判断是否可以赢得数字游戏(python3解法)

难度&#xff1a;简单 给你一个 正整数 数组 nums。 Alice 和 Bob 正在玩游戏。在游戏中&#xff0c;Alice 可以从 nums 中选择所有个位数 或 所有两位数&#xff0c;剩余的数字归 Bob 所有。如果 Alice 所选数字之和 严格大于 Bob 的数字之和&#xff0c;则 Alice 获胜。 如果…

web自动化学习笔记

目录 一、web自动化测试环境搭建二、web自动化测试第一个脚本三、selenium 8种定位方式3.1、通过id定位3.2、通过name定位3.3、通过tag_name&#xff08;标签名&#xff09;定位3.4、通过class值进行定位3.5、通过链接文本定位3.6、通过部分链接文本定位3.7、通过xpath定位3.8、…

Java自定义集合-基于文件的泛型列表 LocalFileArrayList

Java实现基于文件的泛型列表 LocalFileArrayList 简介核心概念泛型文件操作实现细节构造函数读取和写入文件类型转换List 接口方法实现总结调用示例完整代码简介 LocalFileArrayList我自己随便起的,没怎么思考,不一定是最适合的名字。搞这东西主要是有些需求用到的数据量太大…

漏洞挖掘 | Selenium Grid 中的 SSRF

Selenium 网格框架上的基本服务器端请求伪造 最近&#xff0c;我正在阅读漏洞文章看到Peter Jaric写的一篇 Selenium Grid 文章&#xff1b;他解释了 Selenium Grid 框架上缺乏身份验证和安全措施强化的问题。 在网上进行了更多搜索&#xff0c;我发现 Selenium Grid 开箱即用…

【人工智能学习】8_人工智能其他通用技术

知识图谱 在看影视剧或小说时&#xff0c;若其中的人物很多、人物关系复杂&#xff0c;我们一般会用画人物关系图谱来辅助理解人物关系。那什么是知识图谱呢&#xff1f; 知识是人类对信息进行处理之后的认识和理解&#xff1b;对数据和信息的凝练、总结后的成果。 将信息转…

TaskRes: Task Residual for Tuning Vision-Language Models

文章汇总 当前VLMs微调中存在的问题 提示微调的问题 在提示调优中缺乏对先验知识保存的保证(me&#xff1a;即提示微调有可能会丢失预训练模型中的通用知识)。虽然预先训练的文本分支模块(如文本编码器和投影)的权重在提示调优范式中被冻结&#xff0c;但原始的良好学习的分类…

Linux 信号的产生

1. 概念 在Linux系统中&#xff0c;信号是一种进程间通信的机制&#xff0c;它允许操作系统或其他进程向特定进程发送异步通知。我们可以通过命令 kill -l来查看信号的种类&#xff1a; Linux系统中的信号可以分为两大类&#xff1a;传统信号和实时信号。从上图可以看出它们分…

AI助力智慧农田作物病虫害监测,基于YOLOv8全系列【n/s/m/l/x】参数模型开发构建花田作物种植场景下棉花作物常见病虫害检测识别系统

智慧农业是一个很大的应用市场&#xff0c;将当下如火如荼的AI模型技术与现实的农业生产场景相结合能够有效提升生产效率&#xff0c;农作物在整个种植周期中有很多工作需要进行&#xff0c;如&#xff1a;浇水、施肥、除草除虫等等&#xff0c;传统的农业作物种植生产管理周期…

Vivado FIR IP 详解 (一)

FIR滤波器是数字信号处理中常用的滤波器&#xff0c;除了通过Verilog代码自己实现外&#xff0c;Vivado提供了一个FIR滤波器 IP&#xff0c;可以直接调用。 一、什么是 Vivado FIR IP 核 FIR&#xff08;Finite Impulse Response&#xff09;滤波器即有限长单位冲激响应滤波器…

通信工程学习:什么是ODN光分配网络

ODN&#xff1a;光分配网络 ODN&#xff08;Optical Distribution Network&#xff0c;光分配网络&#xff09;是光接入网中的重要组成部分&#xff0c;它位于光线路终端&#xff08;OLT&#xff09;和光网络单元&#xff08;ONU&#xff09;/光网络终端&#xff08;ONT&#x…

【我的 PWN 学习手札】Tcache Poisoning

目录 前言 一、Tcachebin 的组织形式 二、Tcache Poisoning 三、测试与模板 前言 早期对于 Tcachebin 的引入&#xff0c;在提高分配释放效率的同时&#xff0c;也因毫无保护而变得尤为好攻击和利用。自 glibc-2.32 以后添加了 key 等保护机制&#xff0c;现在的 tcachebi…

必知的PDF转换软件:看2024大学生如何选择

你翻翻你文件的下载记录&#xff0c;是不是PDF文件占了大多数&#xff1f;很多是为了保证页面版式直接收到打印手填再扫描或者直接提交。但是如果能够直接在电脑上编辑之后直接转发或者打印是不是方便了很多&#xff1f;这次我就介绍几款可以进行PDF转换操作的工具&#xff0c;…

使用集成学习对不同的机器学习方法进行集成

数据入口&#xff1a;数据人才的现场调研 - Heywhale.com 本数据集中有 43 行&#xff0c;19 列&#xff0c;数据集包含如下字段&#xff1a; 首先读取数据&#xff1a; import pandas as pd# 读取Excel文件 data pd.read_excel(数据人才的现场调研.xls)可以输出每一列含有…

电脑维修的基本原则

要识别电脑故障&#xff0c;一定要遵循“先易后难”、“先外后内”及“先软后硬”原则&#xff0c;使维修更有效的进行。 一、先易后难 “先易后难”是指处理电脑故障时需要从最简单的事情做起&#xff0c;通过认真的观察后&#xff0c;再进行判断与维修&#xff0c;这样有利于…

104.游戏安全项目-基址的技术原理-基址的本质

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;易道云信息技术研究院 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要盲目相信…

react之jsx基础(2)高频使用场景

文章目录 1. **组件定义**2. **条件渲染**3. **列表渲染**4. **事件处理**5. **嵌套组件**6. **表单处理**7. **样式应用**8. **处理子组件** 在 React 中&#xff0c;JSX 的使用是非常广泛和高频的。以下是一些常见的高频使用场景及其示例&#xff0c;帮助你更好地理解 JSX 的…

工厂ERP采购管理,销售管理,仓库管理,财务管理,生产加工管理建设方案和源码实现(JAVA)

工厂进销存管理系统是一个集采购管理、仓库管理、生产管理和销售管理于一体的综合解决方案。该系统旨在帮助企业优化流程、提高效率、降低成本&#xff0c;并实时掌握各环节的运营状况。 在采购管理方面&#xff0c;系统能够处理采购订单、供应商管理和采购入库等流程&#xff…

大型语言模型 (LLM) 劫持攻击不断升级,导致每天损失超过 100,000 美元

Sysdig 威胁研究团队 (TRT) 报告称&#xff0c;LLMjacking&#xff08;大型语言模型劫持&#xff09;事件急剧增加&#xff0c;攻击者通过窃取的云凭证非法访问大型语言模型 (LLM)。 这一趋势反映了 LLM 访问黑市的不断增长&#xff0c;攻击者的动机包括个人使用和规避禁令和制…

网络工程师学习笔记——网络互连与互联网(二)

IP地址 是电脑在互联网上进行进行通信的“身份证” 是网络号主机号 网络号代表所处的网段&#xff0c;而主机号则代表电脑 ipv4有232个ip地址大约43亿 其中又分为A、B、C、D、E类地址 A&#xff1a;1.0.0.0~127.255.255.255&#xff08;首位0&#xff09; B&#xff1a;1…