czx前端
一、盒模型
标准盒模型:box-sizing: content-box。
外边距+边框+内边距+内容区。
IE盒模型,怪异盒模型:box-sizing: border-box。
外边距+内容区(边框+内边距+内容区)。
二、CSS特性
继承性: 父元素的字体大小,字体颜色,行高,display:none...也会出现在子元素上。
优先级: 谁的权重高就显示谁的样式。
!important 内联 ID class 属性 伪类 元素 继承 通配 (vue中有深度选择器 deep)
层叠性: 多个CSS声明应用在同一个元素时,权重相加,决定最终样式
预处理器 sass less 预处理器 变量 函数 混入,全局颜色,css原子化
1、变量的声明
声明变量的时候,变量名前面要加两根连词线 --。使用变量用var()函数。<style>
body{--foo:red;
}p{color: var(foo);
}
</style>2、变量的继承
<style>
body{--foo: red;
}p{--foo: initial;
}
</style>3、js控制css变量
通过js的dom节点对象,可以获取和修改当前节点的css变量值。获取css变量:getPropertyValue('--name')
设置css变量:setProperty('--name', value)<div id="header">hello world</div><style>
#header {--bgColor: #ffffff;
}
</style><script>let dom = document.getElementById("header");// 获取css变量let color = dom.getPropertyValue("--bgColor").trim();// 设置css变量dom.setProperty("--bgColor", '#f34e25');
</script>
css函数1、var变量函数,作用:引用自定义的变量值。
第一个参数:引用的变量名称,第二个参数:回退值,表示如果第一个参数未定义,
使用回退值代替。body {// 定义变量bgColor--bgColor: #ffffff;// 背景色取变量--bgColor的值,如果未定义,则取redbackground-color: var(--bgColor, red);
}2、calc 主要通过简单的数学计算,进行一些单位的计算,表达式支持加、减、乘、除。3、min(val1... valN):接受任意数量的参数,每个参数也可以是表达式。取出参数中最小的值。
max(val1...valN):同上,取最大的值。4、:where伪类选择器函数
作用::where()函数实际是一个高级的伪类选择器,他的作用是将一系列的选择器列表,
都应用相同的样式,简化多个选择器样式编码的流程。
:where(class1,...classN) { css样式 }- 接受n个参数,参数值为选择器(任意的css选择器)// 传统方式
.main span {font-size: 12px;
}
.line span {font-size: 12px;
}// 如果有大量样式相同,选择:where函数选择器(终极版)
:where(.main, .line) span {font-size: 12px;
}5、:is伪类选择器函数
作用:与:where()函数选择器用法一致。
优先级不同。:where()函数选择器的优先级总是为0(即使他的样式代码在最下面)
而:is()函数选择器的优先级取决于他的参数选择器列表中最高的选择器
.main span {font-size: 12px;
}:is(.main) span {font-size: 13px;
}span {font-size: 14px;
}:where(.main) span {font-size: 15px;
}
:where()优先级最低;其次是span选择器;第一个选择器和:is()函数选择器的优先级都是.main span,
因此他们优先级一致,但是因为is()函数在下面,因此font-size为13px。
sass1、使用变量 $
$aaa: 16px;
.fontSize {font-size: $aaa;
}2、@extend 继承
.success{color:green;
}
.msg{@extend .success;color: #555555;
}3、@if
当 @if 的表达式返回值不是 false 或者 null 时,条件成立,输出 {} 内的代码:
p{$num : 3;@if $num == 1 {color:red;}@else{border:red;}
}4、@for
指令可以在限制的范围内重复输出格式,每次按要求(变量的值)对输出结果做出变动。
@for $i from 1 through 3 {.item-#{$i} {width: 2em * $i;}
}
上面等于
.item-1 { width: 2em; }
.item-2 { width: 4em; }
.item-3 { width: 6em; }
三、隐藏元素的方法
display:none;元素在页面上消失,不占据空间
visibility:hidden; 让元素消失,占据空间位置,一种不可见的状态
opacity:0; 设置了元素的透明度为0,元素不可见,占据空间位置
position:absolute; 使用定位,让元素移到页面之外
四、px、rpx、vw、vh、em、rem
px:绝对长度、固定单位,无法根据页面的大小而改变
rpx: 小程序独自有的
vw:viewpoint width,视窗宽度,1vw等于视窗宽度的1%。
vh:viewpoint height,视窗高度,1vh等于视窗高度的1%。
em和rem:相对长度,适用于响应式布局(em的大小相对于父元素大小而改变,rem的大小相对于根元素的大小而改变)
据不同屏幕的宽度,以相同的比例动态修改html的font-size适配,并将px替换成rem,它可以很好的根据根元素的字体大小来进行变化,从而达到各种屏幕基本一直的效果体验
配置rem
window.onload = () => { document.documentElement.style.fontSize = window.innerWidth / 375 * 100 + 'px'; }
window.onresize = () => { document.documentElement.style.fontSize = window.innerWidth / 375 * 100 + 'px'; }
五、重排重绘
重排(回流):布局引擎会根据所有的样式计算出盒模型在页面上的位置和大小,对DOM的大小、位置进行修改后,浏览器需要重新计算元素的这些几何属性,就叫重排。减少重排可以增强浏览器效率。
重绘:计算好盒模型的位置、大小和其他一些属性之后,浏览器就会根据每个盒模型的特性进行绘制,对DOM的样式进行修改,比如color和background-color,浏览器不需要重新计算几何属性的时候,直接绘制了该元素的新样式,那么这里就只触发了重绘
六、元素水平垂直居中
1、定位 + margin
2、定位 + transform
3、flex布局
4、gird布局
5、table布局
七、响应式开发(移动端适配)
1、使用rem、em、vw、vh、百分比、flex、@media媒体查询等布局
2、监听是手机端打开还是PC端打开,配置两套路由或样式
3、监听页面窗口大小,配置多套样式
八、JS三部分
1、ECMAScript:JS的核心内容,描述了语言的基础语法。
2、文档对象模型(DOM):DOM把整个HTML页面规划为元素构成的文档。DOM 文档对象模型,就是一个API,可以通过操作这些API在页面上进行绘制节点,设置节点的属性和内容。
例如:document.getElementById('app');document.createElement('hr');app.appendChild(hr);app.setAttribute('class', 'aaa');
3、浏览器对象模型(BOM):对浏览器窗口进行访问和操作。BOM 浏览器对象模型,可以用来操作浏览器的打开、关闭、重加载等。
例如:location 当前页面的地址;history 浏览器浏览过的历史;navigator 浏览器当前的用户设备信息;window 浏览器的高度、宽度。浏览器的滚动和打印功能......
九、JS部分内置对象
String、Boolean、Number、Array、Object、Function、Math、Date、RegExp...
Math:abs() 函数返回绝对值 sqrt() 接受一个非负正数,返回平方根 max() 最大值 min() 最小值......
Data:new Data() 获取当前时间戳 getYear() 获取年份 ......
十、数组方法
1、改变原数组:push 最后面加一个、pop 最后面删一个、unshift 最前面加一个、shift 最前面删一个、sort 排序、splice 可以删除替换增加元素
2、不改变原数组:reverse 反转顺序、concat 合并数组、join 将元素拼接成字符串、isArray 判断一个值是否为数组、findIndex 返回满足指定条件的第一个元素的索引,如果没有找到则返回 -1。
map:创建一个新数组,其元素是原数组经过指定函数处理后的结果。
const numbers = [1, 2, 3, 4, 5];
const squares = numbers.map(num => num * num);
console.log(squares); // 输出: [1, 4, 9, 16, 25]
filter:创建一个新数组,其中包含原数组中满足指定条件的所有元素。
let arr = [1, 2, 3, 4, 5];
let evenNumbers = arr.filter(item => item % 2 === 0);
console.log(evenNumbers); // 输出 [2, 4]
every:判断数组中所有元素是否都满足指定条件,如果是则返回 true,否则返回 false。
let arr = [2, 4, 6, 8, 10];
let allEven = arr.every(item => item % 2 === 0);
console.log(allEven); // 输出 true
some:判断数组中是否存在满足指定条件的元素,如果有则返回 true,否则返回 false。
let arr = [1, 3, 5, 7, 8];
let hasEven = arr.some(item => item % 2 === 0);
console.log(hasEven); // 输出 true
reduce:将数组中的元素通过指定函数进行累积计算,返回一个最终的结果。
let arr = [1, 2, 3, 4, 5];
let sum = arr.reduce((acc, curr) => acc + curr, 0);
console.log(sum); // 输出 15
为什么调用接口时,用 push 而不用 concat?
因为 push 是改变原数组,而 concat 是生成新数组。
for 数组、forEach 数组、for of 数组、for in 数组和对象都能遍历
let arr = [ "a", "b", "c", "d", "e" ];
let obj = { a: 1, b: 2, c: 3 }
for(let i = 0; i < arr.length; i++){ console.log(i, arr[i]) // 下标 值
}
arr.forEach((item, index) => { console.log(item, index) // 值 下标
})
for(let i of arr){ console.log(i) //值
}
for(let i in arr){ console.log(i, arr[i]) // 下标 值
}
for(let i in obj){ console.log(i, obj[i]) // 键 值
}
for、forEach差别:forEach 无法使用 break、return、continue 进行中断操作或跳出循环。只能使用 try、catch 中断,抛出异常。for循环能控制起点,forEach 不能(必须从第一个开始)。运行速度:for > forEach
try {arr.forEach((item, index) => {if (item == 1) {throw new Error("打断施法")}})
} catch (e) {if (e.message !== "打断施法") {throw e}
}
forEach 和 map 的区别
1、forEach()方法没有返回值,会更改原数组。
2、map() 有返回值,返回一个新数组,不会改变原数组,map() 不会对空数组进行检测。
3、map 的速度大于 forEach()
find:用于找出第一个符合条件的数组成员,并且返回该数组元素,如果没有满足条件的数组元素该方法返回undefined。
let arr1 = [1, 2, 3, 4, 5]
let num1 = arr1.find(function(item) {return item > 1;
});
console.log(num1); //2
findIndex:用于找出第一个符合条件的数组成员的索引值,并且返回该数组元素的索引值。如果没有满足条件的数组元素该方法返回-1。
let arr2 = [1, 7, 9, 4, 5]
let num1 = arr2.findIndex(item => item > 9);
console.log(num1); //-1
let num2 = arr2.findIndex(item => item > 3);
console.log(num2); //2
includes:判断数组是否包含指定值—是全等判断,第一个值是包含的指定值,第二个值是指定值的索引。
let arr4 = [2, 3, 4, 7, 5]
let flag = arr4.includes(2);
console.log(flag); //true
let flag1 = arr4.includes(3, 1);
console.log(flag1); //true
VUE项目每次打包的版本号是可以配置不同编码的。这样的话不用线上强制刷新。
相关文章:

czx前端
一、盒模型 标准盒模型:box-sizing: content-box。 外边距边框内边距内容区。 IE盒模型,怪异盒模型:box-sizing: border-box。 外边距内容区(边框内边距内容区)。 二、CSS特性 继承性: 父元素的字体大小…...

Perforce演讲回顾(上):从UE项目Project Titan,看Helix Core在大型游戏开发中的版本控制与集成使用策略
日前,Perforce携手合作伙伴龙智一同亮相Unreal Fest 2024上海站,分享Helix Core版本控制系统及其协作套件的强大功能与最新动态,助力游戏创意产业加速前行。 Perforce解决方案工程师Kory Luo在活动主会场,带来《Perforce Helix C…...

【含文档】基于Springboot+Andriod的成人教育APP(含源码+数据库+lw)
1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…...

CentOS7系统配置Yum环境
新安装完系统的服务器往往缺少我们常用的依赖包,故需要设置好yum源,方便软件安装,以下是CentOS7为例,系统安装后yum默认安装。 //备份之前的配置文件 mv /etc/yum.repos.d /etc/yum.repos.d.bak mkdir -p /etc/yum.repos.d 1…...

pyqt打包成exe相关流程
1、首先是安装pyinstaller, 在cmd中输入以下安装命令: pip3 install pyinstaller -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/ 2、安装完毕之后,下一步就是找到你要打包的工程,打包的logo放置如下位置: 3、将log…...

设计模式、系统设计 record part02
软件设计模式: 1.应对重复发生的问题 2.解决方案 3.可以反复使用 1.本质是面向对象 2.优点很多 1.创建型-创建和使用分离 2.结构型-组合 3.行为型-协作 571123种模式 UML-统一建模语言-Unified Modeling Language 1.可视化,图形化 2.各种图(9…...

github双重验证(2FA)启用方法
一、双重验证-2FA 在去年看到过说github启用双重验证的通知,觉得做为一个普通开发者,可能没有这么快会要求启用。结果,今天早晨一来就收到了邮件,要求说在11月底完成2FA的认证,否则权限受限。真是无了语。所谓2FA好理…...

《Linux从小白到高手》理论篇:Linux的系统服务管理
值此国庆佳节,深宅家中,闲来无事,就多写几篇博文。本篇详细深入介绍Linux的系统服务管理。 系统服务通常在系统启动时自动启动,并在后台持续运行,为系统和用户提供特定的功能。例如,网络服务、打印服务、数…...

SQL中如何进行 ‘’撤销‘’ 操作-详解
在 SQL 中,撤销已经执行的操作通常涉及两个主要的概念:事务控制和回滚操作。 ### 1. 事务控制 在支持事务的数据库管理系统(如 MySQL 的 InnoDB 引擎)中,您可以使用事务来确保数据的完整性。事务可以确保一系列的操作…...

Hadoop之WordCount测试
1、Hadoop简介: Hadoop是Apache旗下的一个用Java语言实现的开源软件框架,是一个开发和运行处理大规模数据的软件平台。 Hadoop的核心组件包括Hadoop分布式文件系统(HDFS)和MapReduce编程模型。HDFS是一个高度容错的系统…...

Vue和axios零基础学习
Vue的配置与项目创建 在这之前要先安装nodejs 安装脚手架 官网 Home | Vue CLI (vuejs.org) 先运行,切换成淘宝镜像源,安装速度更快 npm config set registry http://registry.npm.taobao.org 创建项目 用编译器打开一个空文件,在终端输入…...

STM32新建工程-基于库函数
目录 一、创建一个新工程 二、为工程添加文件和路径 三、创建一个main.c文件,并调试 四、修改一些配置 五、用库函数进行写程序 1、首先加入一些库函数和头文件 2、编写库函数程序 一、创建一个新工程 我这里选择STM32F103C8的型号,然后点击OK。 …...

matlab入门学习(二)矩阵、字符串、基本语句、函数
一、矩阵 1、矩阵生成 %矩阵生成%直接法 A[1,2,3; 4,5,6; 7,8,9]%冒号一维矩阵:开始,步长,结束(步长为1时可以省略) B1:1:10 B1:10 %函数法%linspace(开始,结束,元素个数),等差生成…...

PC端微信小程序如何调试?
向往常一样运行开微信小程序开发者工具 如果只弹出pc端小程序,没有出现调试的界面:点击胶囊按钮的三个…选择重新进入小程序 即可依次展开相应的功能调试,改完代码没反应再刷新看看,再没反应就再次重新点击编译并自动调试。...

点击按钮提示气泡信息(Toast)
演示效果: 目录结构: activity_main.xml(布局文件)代码: <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http:…...

【易社保-注册安全分析报告】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…...

155. 最小栈
思路 按栈的特点:顶部即列表尾部 class MinStack(object):def __init__(self):self.stack[]def push(self, val):""":type val: int:rtype: None"""self.stack.append(val)def pop(self):""":rtype: None"&quo…...

用Manim实现高尔顿板(Galton Board)
高尔顿板的介绍 高尔顿板(Galton Board),有时也称为贝尔图(Bean Machine),是由英国统计学家弗朗西斯高尔顿(Francis Galton)于19世纪末发明的一种物理装置,用于演示随机分…...

OpenCV视频I/O(7)视频采集类VideoCapture之初始化视频捕获设备或打开一个视频文件函数open()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 为视频捕获打开一个视频文件、捕获设备或 IP 视频流。 这是一个重载成员函数,提供给用户方便使用。它与上述函数的不同之处仅在于它所…...

vue3+vite@4+ts+elementplus创建项目详解
1、第一步创建项目cnpm init vite4 2、设置vue3.2局域网可访问配置: 找到项目路径下的package.json目录下找到script对象下面添加一下代码: "serve": "vite --host 0.0.0.0" 启动项目命令不在是dev而是:cnpm run serve 3…...

Python 从入门到实战34(实例2:绘制蟒蛇)
我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。 上篇文章我们讨论了数据库MySQL操作的相关知识。今天学习一个使用…...

Visual Studio C# 处理和修复 WinRiver II 测量项目 MMT 文件错误
Visual Studio C# 处理和修复 WinRiver II 测量项目 MMT 文件错误 前言一、WinRiver II 测量项目 MMT 文件的结构二、WinRiver II 无法打开或操作测量项目 MMT 文件2.1 无法载入船测多线法测量文件2.2 可以载入测验项目 MMT 文件,但 ADCP 后处理软件无法写入信息2.3…...

JAVA实现大写金额转小写金额
在金融行业中经常需要把大写金额转成小写金额,之前在一次开发中有个类似的需求,翻阅了好多博文,都没找到合适的,故没办法,就花了点时间研究并实现! 实现代码如下: private static final Character ZERO 零;private s…...

如何使用ssm实现基于SSM的宠物服务平台的设计与实现+vue
TOC ssm779基于SSM的宠物服务平台的设计与实现vue 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进行科学化&#x…...

【C++学习笔记 21】C++中的动态数组 vertor
静态数组 首先来创建一个静态数组 #include <iostream> #include <string>struct Vertex {float x, y, z; };std::ostream& operator<<(std::ostream& stream, const Vertex& vertex) {stream << vertex.x << "," <&…...

MongoDB 快速入门+单机部署(附带脚本)
目录 介绍 体系结构 数据模型 BSON BSON 数据类型 特点 高性能 高可用 高扩展 丰富的查询支持 其他特点 部署 单机部署 普通安装 脚本安装 Docker Compose 安装 卸载 停止 MongoDB 删除包 删除数据目录 参考: https://docs.mongoing.com/ 介绍…...

组合数求法汇总
一:递推求解 对于组合数,有此式: C n m C n − 1 m − 1 C n − 1 m C_{n}^{m}C_{n-1}^{m-1}C_{n-1}^{m} CnmCn−1m−1Cn−1m。 C n m C_{n}^{m} Cnm 可理解为 n n n 个数中选 m m m 个,不同的方案。对于第 n n n 个…...

Python知识点:在Python编程中,如何使用Joblib进行并行计算
开篇,先说一个好消息,截止到2025年1月1日前,翻到文末找到我,赠送定制版的开题报告和任务书,先到先得!过期不候! Joblib是一个Python库,它被设计用来提供轻便的并行计算解决方案&…...

matlab-对比两张图片的CIElab分量的差值并形成直方图
%对比两张图片的CIElab分量的差值并形成直方图,改个路径就能用,图片分辨率要一致 close all; clear all; clc; I1imread(E:\test\resources\image\1.jpg); I2imread(E:\test\resources\image\2.jpg); lab1 rgb2lab(I1); lab2 rgb2lab(I2); % 提取色度…...

(十七)、Mac 安装k8s
文章目录 1、Enable Kubernetes2、查看k8s运行状态3、启用 kubernetes-dashboard3.1、如果启动成功,可以在浏览器访问3.2、如果没有跳转,需要单独安装 kubernetes-dashboard3.2.1、方式一:一步到位3.2.2、方式二:逐步进行 1、Enab…...