UI组件库基础
UI组件库

全局组件*
全局注册组件 & 并且使用了require.context

模块化编程 & webpack打包
const install=(Vue)=>{const context=require.context('.',true,/\.vue$/)
context.keys().forEach(fileName=>{const module=context(fileName)
Vue.component(module.default.name,module.default)})
}export default {
install
} button*




SCSS:在@each中使用动态变量-腾讯云开发者社区-腾讯云
@each:循环语句
<template>
<button class="zh-button" :class="buttonClass">
<span v-if="$slots.default"><slot></slot></span>
</button>
</template><script>
const types=['primary','info','success','warning','danger']
export default {
name:'zh-button',
props:{
type:{
type:String,
default:'',
validator(val){
if(val && !types.includes(val)){
console.error('类型不合法')
}
return true;
}
}
},
computed:{
buttonClass(){
let classes=[]
if(this.type){
classes.push(`zh-button--${this.type}`)
}
return classes;
}
}
}
</script><style scoped lang="scss">
$primary-color:#409eff;
$success-color:#67c23a;
.zh-button{
padding: 12px 20px;
border: none;
color: #fff;
&:hover{
}
&:focus,&:active{ } @each $type,$color in (
primary:$primary-color,
success:$success-color,
){
&--#{$type}{
background:$primary-color;
}
}}
</style> icon*
iconfont的symbol方式引入项目不显示_svg use symbol 不显示-CSDN博客
order:1
<template>
<button class="zh-button" :class="buttonClass" v-on="$listeners">
<zh-icon :icon="icon" v-if="icon"></zh-icon>
<zh-icon icon="loading" v-if="loading" color="#fff"></zh-icon>
<span v-if="$slots.default"><slot></slot></span>
</button>
</template><script>
const types=['primary','info','success','warning','danger']
export default {
name:'zh-button',
props:{
type:{
type:String,
default:'',
validator(val){
if(val && !types.includes(val)){
console.error('类型不合法')
}
return true;
}
},
icon:{
type:String,
},
iconPosition:{
type:String,
default:'left'
},
loading:{
type:Boolean,
default:false,
}
},
computed:{
buttonClass(){
let classes=[]
if(this.type){
classes.push(`zh-button--${this.type}`)
}
if(this.iconPosition){
classes.push(`zh-button--icon-${this.iconPosition}`)
}
return classes;
}
}
}
</script><style scoped lang="scss">
$primary-color:#409eff;
$success-color:#67c23a;
.zh-button{
padding: 12px 20px;
border: none;
color: #fff;
display: inline-flex;
vertical-align: middle;
align-items: center;
cursor: pointer;
&:hover{
}
&:focus,&:active{ } @each $type,$color in (
primary:$primary-color,
success:$success-color,
){
&--#{$type}{
background:$primary-color;
}
} &--icon-left{
> .icon{
order: 1;
}
> span{
order: 2;
}
}
&--icon-right{
> .icon{
order: 2;
}
> span{
order: 1;
}
}}
</style> 绑定事件

单元测试(略)

CSS*


三角形*
宽高 padding都不写,只设置border的话,border会自动根据对角线/三角形来划分。


<div class="triangle"></div>
<div class="triangle-2"></div>
.triangle{
width: 0;
height: 0;
border: 10px solid transparent;
border-right: 10px solid red;
}
.triangle-2{
width: 0;
height: 0;
border: 10px solid transparent;
border-right-color: red;
border-top-color: red;
}
垂直居中
盒子定位


定位:相对/绝对
已知宽高:margin-left/calc
未知宽高:transform
flex布局
让盒子实现固定宽高比

绘制<1px的线*
- 用::after创建虚拟元素
- transform scale缩放

.thin{
width: 200px;
height: 100px;
background: blue;
}
.thin::before{
content: "";
display: block;
height: 1px;
background: red;
transform-origin: 0 0;
transform: scale(1, 0.5);
}
圣杯布局*
左中右:左右固定,中间伸缩
flex布局
通过flex值来设置
flex: 伸 缩 basis

<div class="box">
<div class="left"></div>
<div class="middle"></div>
<div class="right"></div>
</div>
.box{
width: 100vw;
height: 100px;
display: flex;
}
.box .left,.box .right{
flex: 0 0 100px;
background: red;
}
.box .middle{
flex: 1;
background: blue;
}
定位
- 盒子左右padding
- 中间子盒子width:100%,左右盒子定位
<div class="box">
<div class="left"></div>
<div class="middle"></div>
<div class="right"></div>
</div>*{
box-sizing: border-box;
margin: 0;
padding: 0;
}
.box{
position: relative;
width: 100%;
padding: 0 100px;
height: 100px;
position: relative;
}
.box .left,.box .right{
width: 100px;
height: 100px;
position: absolute;
left: 0;
top: 0;
background: red;}
.box .right{
left: auto;
right: 0;
}
.box .middle{
width: 100%;
height: 200px;
background: blue;
}
响应式的方案*
PC不同像素:
vw/vh:百分比布局。

@media:媒体查询。微调,指定大小基于它微调。
移动&PC:共用一套页面。比如官网。
@media:基于设备尺寸写多套样式
移动端:
rem:等比缩放。相对于页面根元素大小设置rem值

相关文章:
UI组件库基础
UI组件库 全局组件* 全局注册组件 & 并且使用了require.context 模块化编程 & webpack打包 const install(Vue)>{const contextrequire.context(.,true,/\.vue$/)context.keys().forEach(fileName>{const modulecontext(fileName)Vue.component(module.default.n…...
数据结构与算法之矩阵: Leetcode 48. 旋转矩阵 (Typescript版)
旋转图像 https://leetcode.cn/problems/rotate-image/ 描述 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1 输入&…...
大厂面试题-JVM中的三色标记法是什么?
目录 问题分析 问题答案 问题分析 三色标记法是Java虚拟机(JVM)中垃圾回收算法的一种,主要用来标记内存中存活和需要回收的对象。 它的好处是,可以让JVM不发生或仅短时间发生STW(Stop The World),从而达到清除JVM内存垃圾的目的ÿ…...
Leetcode—121.买卖股票的最佳时机【简单】
2023每日刷题(十一) Leetcode—17.电话号码的字母组合 枚举法题解 参考自灵茶山艾府 枚举法实现代码 int maxProfit(int* prices, int pricesSize){int i;int max 0;int minPrice prices[0];for(i 1; i < pricesSize; i) {int tmp prices[i] -…...
【云原生】portainer管理多个独立docker服务器
目录 一、portainer简介 二、安装Portainer 1.1 内网环境下: 1.1.1 方式1:命令行运行 1.1.2 方式2:通过compose-file来启动 2.1 配置本地主机(node-1) 3.1 配置其他主机(被node-1管理的节点服务器&…...
Command集合
Command集合 mysql相关命令 查看mysql的状态 sudo netstat -tap | grep mysql 启动mysql sudo service mysql start 停止mysql sudo service mysql stop 重启mysql sudo service mysql restart 指定端口号,客户端连接mysql sudo mysql -h127.0.0.1 -uroot -p red…...
【QT开发(17)】2023-QT 5.14.2实现Android开发
1、简介 搭建Qt For Android开发环境需要安装的软件有: JAVA SDK (jdk 有apt install 安装) Android SDK Android NDKQT官网的介绍: Different Qt versions depend on different NDK versions, as listed below: Qt versionNDK…...
JVM相关面试题(每日一练)
1. 什么是垃圾回收机制? 垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了。 jvm 中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭&a…...
OpenCV 相机相关函数
一、变换参数矩阵的求解 1. 计算三个二维点对之间的仿射变换矩阵:getAffineTransform() 2. 计算多个二维点对之间的最优放射变换矩阵(误差最小准则):estimateRigidTransform();或者findHomography(); 3. 计算四个二维点对之间的…...
微信小程序之投票管理
前言 对于会议管理模块,必不可少的当然就是我们的投票管理,实现真正意义上的无纸化办公,本期博客为大家介绍会议管理模块,包括发布投票及查看各类投票的状态 所用技术点 MyBatis、SpringMVC、VentUI MyBatis和SpringMVC在博客主…...
23种设计模式【创建型模式】详细介绍之【建造者模式】
建造者模式:构建复杂对象的精妙设计 设计模式的分类和应用场景总结建造者模式:构建复杂对象的精妙设计建造者模式的核心思想建造者模式的参与者Java示例:建造者模式 设计模式的分类和应用场景总结 可以查看专栏设计模式:设计模式 …...
[量化投资-学习笔记002]Python+TDengine从零开始搭建量化分析平台-MA均线的多种实现方式
MA 均线时最基本的技术指标,也是最简单,最不常用的(通常使用EMA、SMA)。 以下用两种不同的计算方法和两种不同的画图方法进行展示和说明。 MA 均线指标公式 MA (N)(C1 C2 C3 …C N )/N目录 方式一1.SQL 直接查询均值2.使用 pyp…...
c语言 判断两个文件是否相同
使用strcmp比较: #include <stdio.h> #include <string.h>int Compare(const char * file1, const char* file2) {FILE* f1, * f2;int size1, size2;unsigned char buffer1[1024], buffer2[1024];f1 fopen(file1, "rb");f2 fopen(file2, &…...
【2021集创赛】Arm杯三等奖:基于FPGA的人脸检测SoC设计
本作品参与极术社区组织的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~活动。 团队介绍 参赛单位:合肥工业大学 队伍名称:芯创之家 指导老师:邓红辉、尹勇生 参赛杯赛:Arm杯 参赛人员:王亮 李嘉燊 金京 获奖情…...
Java电商平台 - API 接口设计之 token、timestamp、sign 具体架构与实现|电商API接口接入
一:token 简介 Token:访问令牌access token, 用于接口中, 用于标识接口调用者的身份、凭证,减少用户名和密码的传输次数。一般情况下客户端(接口调用方)需要先向服务器端申请一个接口调用的账号,服务器会给出一个appId和一个key, …...
【带头学C++】----- 1.基础知识 ---- 1.23 运算符概述
1.23 运算符概述 运算符,在数学中常见的加减乘除之类的符号,那么在C在编程语言中呢,将使用特定的符号或标记对操作数进行操作以生成结果。用算术运算符将运算对象(也称操作数)连接起来的、符合C 语法规则的式子,称为C 算术表达式运…...
python爬虫分析基于python图书馆书目推荐数据分析与可视化
收藏关注不迷路 文章目录 前言一、项目介绍二、开发环境三、功能介绍四、核心代码五、效果图六、文章目录 前言 随着电子技术的普及和快速发展,线上管理系统被广泛的使用,有很多商业机构都在实现电子信息化管理,图书推荐也不例外,…...
Java零基础入门-关系运算符
前言 Java作为一门广受欢迎的开发语言,其在企业级应用和移动应用开发中有着广泛的应用。如果你是一个Java零基础的初学者,那么你来到了一个正确的地方。在本篇文章中,我们会详细介绍Java中的关系运算符,帮助你快速入门。 摘要 …...
1200*A. Trust Nobody(贪心)
Problem - 1826A - Codeforces 解析: 从大到小枚举说谎人的个数x,然后查看是否有 x个人说谎即可。 #include<bits/stdc.h> using namespace std; #define int long long const int N2e55; int t,n,a[N]; signed main(){scanf("%lld",&a…...
二维码智慧门牌管理系统升级解决方案:采集项目的建立与运用
文章目录 前言一、采集项目的建立二、采集项目的运用三、采集项目的意义 前言 在二维码智慧门牌管理系统的升级过程中,一个至关重要的环节是采集项目的建立与运用。采集项目是新建采集任务的前提,同时也是整个系统升级的关键步骤。其意义近似于现实中的…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
Android写一个捕获全局异常的工具类
项目开发和实际运行过程中难免会遇到异常发生,系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler,它是Thread的子类(就是package java.lang;里线程的Thread)。本文将利用它将设备信息、报错信息以及错误的发生时间都…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...
文件上传漏洞防御全攻略
要全面防范文件上传漏洞,需构建多层防御体系,结合技术验证、存储隔离与权限控制: 🔒 一、基础防护层 前端校验(仅辅助) 通过JavaScript限制文件后缀名(白名单)和大小,提…...
STM32标准库-ADC数模转换器
文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”:输入模块(GPIO、温度、V_REFINT)1.4.2 信号 “调度站”:多路开关1.4.3 信号 “加工厂”:ADC 转换器(规则组 注入…...
