- 博客(50)
- 收藏
- 关注
原创 实现卡片的展开缩放动画
原理,外层包裹一个元素,子元素分别是展开和收起的元素,然后对展开的元素添加动画,动画内容是随时间变化,将卡片的transform:rotateX属性进行调整,因为改变的是子元素的旋转,父元素高度并没变,不会影响列表大体布局。
2024-06-12 21:13:52 429
原创 FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory 解决办法
powershell。
2024-04-18 21:26:59 433
原创 解决git upstream refname ambiguous
git update-ref -d 删除重复的。git checkout -b 可以切换分支。git show-ref 找到重复的源头。git branch 可以添加本地分支。最后解决重复之后,本地和远程建立联系。
2024-04-09 09:51:42 159
原创 前端 基于响应式数据 实现拖拽排序和移动
其中,start是drag起始元素,over会在经过的每个元素时触发,enter会在初次进入时触发,drag会在左键拖拽后直到拖拽事件完成前高频率触发,drop会在左键松开后放置元素触发。坑2:禁止图标如何去掉:e.dataTransfer.dropEffect 和e.dataTransfer.effectAllowed两个属性在start的时候设置一下。坑1:drop事件触发不了:元素默认不允许其他元素drop到自身,这个会在over事件默认设置,所以我们需要在这事件preventDefault一下。
2024-04-05 12:48:02 321
原创 实现一个可自适应高度,带有左上角图标,右侧按钮自适应位置的输入框
样式分开写,会造成两次回流,所以如果是增加高度,没问题。删除文字导致的高度减少,由于auto的原因,scrollTop也会减少。3. 将输入框和按钮分别设置float:left和right。父元素设置BFC即可达到右侧按钮位置自适应。1.高度自适应:监听input事件,将输入框的高度设置为auto再设置为acrollHeight即可。3.右侧的按钮位置,当最开始的一行没有挤占到时,位于右侧。当一行挤占到了,按钮换行到下方。要点:1.高度自适应,当换行时,高度增加,当删减一定也会高度减少。
2024-02-20 13:54:37 390
原创 css字体渐变
background: linear-gradient(99.65deg, #ff5959 -3.13%, #9069ff 35.06%);margin-right: 12px;-webkit-background-clip: text;-webkit-text-fill-color: transparent;
2023-11-16 17:15:12 109
原创 React Native 学习 之 环境搭建(andoid)
安装安装包->设置下载需求,包括sdk,这一步比较重要,需要按照官网确定勾选住需要的的资源->为下载的sdk配置环境变量,这一步必须按照官网的要求去配置,因为编译过程用到的指令都和这个有关‘andiod开发底层需要java需要jdk,同时react native要求jdk 11,jdk下载教程网上很多,主要是要配置好环境变量,可以javac -version查看当前jdk版本。,会打开好几个窗口,其中一个metro窗口是提供对 js 代码进行实时打包处理服务的,输入r可以重新加载,a可以重新编译打包执行。
2023-10-16 16:02:25 560
原创 业务中关于响应式的闹剧
业务情景是往一个数组里面添加元素,每个元素都是一个对象,如果按照vue3的proxy去实现响应式,那肯定得对这个数组代理进行修改才能触发响应式系统的监听,但是,修改了原始传入的对象的属性,居然页面也可以更新!如果是vue2那就解释通了,因为vue仅仅是通过defineProperty来给原始对象加上get和set进行拦截,也就是我通过数组去访问添加的元素,还是直接访问元素,都是同一个对象的引用,vue2内部的深层递归嵌套保证了我改变对象的某个值,还是会能够监听到这个变化去渲染界面。舒服了,终于搞清楚了。
2023-09-14 15:35:32 94
原创 8/23背包
0-1背包:一维的话,dp[j]代表j的容量所能装的最大价值;上面两题,都是从数组中挑选数来求和,区别在于第一个需要求所有的方法,第二个只需要有就可以,外层循环是挑选物品。内层遍历所有容量的可能性;倒序是因为从前到后的话,对于某个物品会重复计算,从后到前不会(计算就是依赖前面的,所以肯定是从往前才不会有影响),每次计算都会考虑带不带之前的物品。确定dp数组以及下标的含义01背包中,dp[j] 表示: 容量为j的背包,所背的物品价值最大可以为dp[j]。本题中每一个元素的数值既是重量,也是价值。
2023-08-23 16:19:43 64
原创 8/14 动态规划
二维数组初始化,理清楚转移函数,准备初始值和存储table,注意边界,就可以写出答案了。l两种写法,迭代和递归。递归写法vs迭代写法。
2023-08-14 16:03:22 46
原创 8/11 符号串处理
遇到左括号,需要的右括号加2,如果右括号是奇数,右括号加一,need–;遇到括号,先判断need是否有剩余,有的话就–,没有的话,左括号需要加一个,need = 1。
2023-08-11 17:25:05 49
原创 react知识复习
一开始,两个组被渲染出来,然后,这两个组件的内置功能是累加器,点击组件会将内部的count+1,我们尝试将点击二个组件,它的值被渲染为1,然后再点击单选框,将showB置为false,这样第二个组件变成了{false},此时这个大组件返回的JSX将被转换为虚拟Dom传入fiber树并和第一次作比较,经过比较发现树上的某个App节点的第二个子节点发生了变化,不再是原来的组件了,于是回收它的state,这样,当再次点击单选框,渲染出来的第二个内的state不再是原来的1了,而是初始化为0;
2023-08-11 09:54:09 116
原创 8/9 二分查找
优化思路:还是全部用左右闭合写法吧,不容易错,然后两个函数可以合并成一个,或者这道题直接找到一个,往左右在搜索边界即可。思路有两种:找到左右上下界,判断长度;或者随便找到一个值,往两边扩展。踩坑:做除法运算要用Number.flow或者parseInt。主要逻辑不复杂·,主要是边界问题。
2023-08-09 18:23:31 47
原创 7/31双指针之滑动窗口
滑动窗口思路: 维护一个窗口的左右边界,新元素不断进入窗口,更新窗口信息,当窗口内元素满足条件,就代表找到了一个可行解,剩下的就是在可行解基础上找到一个最优解,每次收缩窗口的左边界,更新窗口信息。直到窗口右边界到达临界,所有的结果就出来了。:使用了js的map,因为没用过,不过感觉直接用对象写很多判断条件会简便很多,踩坑的话,一个是value,应该直接用need.size ,然后收缩窗口的条件是left<right,另外start和length的更新一定要判断是否是更优解。
2023-07-31 23:27:16 58
原创 前端 异步请求数据 时机 以及 如何初始化
当用全局状态管理渲染用到的数据时,一开始数据还没有请求回来,此时具体组件里用到数据的某些属性就是会报错的,在数据未返回时,设置状态为loading,然后把dom结构替换成骨架屏,以免访问到不存在的数据;数据请求·返回之后,更改状态为finished,同时在组件内部监听这个状态变化(因为数据初始化一般是在setup函数内,也就是create函数内,所以最开始loading状态的时候不应该赋值给data,而是应该监听这个状态的变化,一旦发送变化,即代表数据以及返回,可以访问数据,此时再将数据赋值给data)。
2023-07-17 21:39:19 158 1
原创 vue3 中的组合式写法改为选项式写法
同时,父组件通过ref访问子组件时的option写法和vue2一样,在data中声明ref的值比如children,在子组件参数中通过ref=“children” 将子组件的引用绑定到父组件实例下,在mounted函数中赋值(mounted函数中的this指向组件实例,此时才会有子组件的引用)this.children =this.$ref.children,将子组件引用赋值给data中的变量,最后通过变量去在模板中使用子组件expose出来的内容。
2023-06-30 20:08:19 523
原创 编译原理 期末复习 第一章 引言
含义一:将源程序转换为目标程序的各个步骤对于具体的语言,比如C,会有预处理和链接。c语言提供的编译预处理功能主要有三种:宏定义、文件包含和条件编译。对源程序正式编译前由预处理程序完成的。预处理之后的文件.i结尾。连接过程将多个目标文以及所需的库文件(.so等)链接成最终的可执行文件(executable file)。具体的c语言编译过程可以看这篇文章含义二:将源程序转换为目标程序各阶段从左至右扫描字符流的源程序、分解构成源程序的字符串,识别出(拼)一个个的单词(Token/word)。两个字:分词。Tok
2023-06-15 15:57:19 300
原创 react 函数组件和类组件的简单区别
函数组件的根基是 FP(函数式编程),与数学中的函数思想类似,所以假定输入和输出存在某种关联的话,那么相同输入必定会有相同的输出,所谓纯粹。函数组件内能使用hook函数,逻辑可复用性强,没有继承能力;类组件能在生命周期不同阶段调用不同的函数,去实现特定的要求,有继承能力;从最新react18官方文档里面已经看不到类组件的介绍了,函数组件会成为一种趋势。类组件的根基是 OOP(面向对象编程),所以它会有继承,有内部状态管理等;react 函数组件和类组件简单区别。函数组件无生命周期,类组件有生命周期。
2023-06-14 16:19:27 71
原创 react 使用create-react-app搭建
对于入门来说,不太需要太多的工具链,所以用cra脚手架便可以快速搭建一个简单的react页面。生产级的react框架:Next.js,Gaysby.js,Remix.js等。cra脚手架,全称是create-react-app。
2023-06-14 16:03:36 490
原创 js中的this
总结来说,也就一句话,函数中的this都是在函数执行的时候才会有确切的值,这个值由调用函数的对象决定,如果往上层找到最后,那this指向的就是window对象。call和apply是函数对象的两个成员函数,可以指定函数的执行环境,两个参数分别是调用函数的对象和函数的参数,区别在于参数的写法,apply传入一个参数数组,call则把参数按顺序传入。这个指向会随着执行环境的变化而变化。js中的this永远指向一个对象。
2023-06-02 11:38:00 50
原创 变量提升以及函数提升
函数提升和变量提升其实差别不多,但是与变量提升不同的是,变量提升是只把声明语句提升到作用域最前面,函数提升则是把整个函数都提升到前面,相当于剪切过去,用类似的话就是函数的声明和定义都被提升了。针对var声明的变量而言,在其声明时会把变量的声明语句提升到作用域最前面,所以用var声明的变量可以在声明之前访问和使用且不报错。在作用域中,不管是变量还是函数,都会提升到作用域最开始的位置,不同的是,函数的提升后的位置是在变量提升后的位置之后的,没有变化,函数相当于对变量b赋值,这样,输出的结果就是函数本身。
2023-06-01 10:20:39 88
原创 let和var以及const
很多情况下,我们也希望类似这种块内的变量有自己的作用域,就像其他c++,java那样有自己的块级作用域,于是es6引进了let和const关键字,这两个关键字也和var类似用于变量和常量的声明定义,其中let用于变量的声明,const用于常量的声明。可能很多人会误以为结果是2,3,4,1,但是答案其实是2,3,4,5,因为对于for循环而言,用var声明的变量并不存在块级作用域,无论是在for{}块内还是在for()内声明的变量,其声明都会被提升到外部,所以上面的例子相当于。
2023-06-01 09:46:14 47
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人