自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 解决element-ui对话框组件el-dialog遮罩层小问题

问题场景:在使用对话框组件时,点击弹出后,遮罩层始终显示在最前面,导致整个页面无法操作。出现原因出现这种情况是因为遮罩层的dom元素插入进了body标签底下,标签如下所示:解决办法在el-dialog标签里添加一个属性,:modal-append-to-body:false, 让遮罩层插入至dialog的父元素上就OK啦,官方文档如下...

2022-01-05 16:45:19 2064

原创 vue使用定时器重新渲染某个组件

强制vue组件重新渲染加载的方式:采用将key分配给组件的方式,如果想重新渲染组件,只需改变key值就可以。使用示例:<template> <div> // 需要重新渲染的组件,绑定一个key值 <childComponent :key="childKey" /> </div></template><script>export default{ data()

2021-05-12 17:35:45 627

原创 vue报错合集

npm run serve 运行vue项目时,报如下错误解决方案:将项目底下的node_models文件夹删掉,重新npm install,再运行

2020-12-05 09:32:17 245

原创 webpack基础教程(简单使用)

一 、webpack是什么?Webpack 是一个前端资源加载/打包工具。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。(本文以webpack4为准)二、 安装webpack首先确保本地环境支持node.js,再使用npm安装webpack,如果觉得npm安装速度慢,可使用淘宝镜像及其命令cnpm全局安装webpack命令行如下 npm install webpack -g 项目安装webpack命令行如下 npm install

2020-11-29 09:27:01 1251

原创 前端浏览器常见兼容性问题及解决方案

1. 最常见的:每个浏览器的默认margin,padding大小都不同,当设置定位时会有些许差异。解决方案:这也是最容易解决的, 在css样式文件中重置margin,padding*{ margin:0; padding:0;}2. 图片默认有间距:当几个img标签放到一起时,有些浏览器会有默认间距,加上第一条的设置的通配符样式也无用。解决方式:使用float属性让其浮动,消除间距3. min-height问题:由于min-height本身就是一个不...

2020-11-29 09:10:09 4156

原创 js简单实现观察者模式

1、什么是观察者模式?观察者模式(Observer),又叫发布-订阅模式(Publish/Subscribe),定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。2、代码具体实现首先定义一个主题,用于接收状态变化,并通知每个观察者// 主题,接收状态变化,并通知每个观察者 class Sub{ constructor(){ this.state = 0

2020-11-19 17:55:12 5205

原创 vue自定义指令使用详解

1、当需要对普通DOM元素进行底层操作的时候,可以使用自定义指令。2、使用规则:代码如下所示<div id="app"> <!--使用全局自定义指令--> <input v-focus /> <!--使用局部自定义指令--> <div v-dir1></div> <input type="text" v-focus2></div>Vue.directive('focus

2020-11-01 16:30:15 190

原创 vue组件间(父传子,子传父,兄弟组件)通信方式

*## 1、父传子:使用props使用规则:组件内部通过props接收传过来的值,props传递数据原则:单向数据流(只允许父组件向子组件传递数据,不允许子组件直接操作props中的数据)<!--父组件内容--><div id="app"> <div>{{pmsg}}</div> <!--父组件通过属性绑定将值传递给子组件--> <menu-con :me-con="hhh"></menu-con&g

2020-10-29 11:29:59 247

原创 JavaScript踩坑记录

1.数组排序问题,Array.sort(),直接使用sort排序时,会自动把元素转换为字符串再进行比较,所以排序出来的值可能会不准。 所以使用sort排序时,要使用如下写法:[5,3,4,1,2].sort(function(a,b){ return a - b})2、对函数进行bind绑定,会返回新对象,之前绑定的事件无法取消。this.node.on('test',this.onTouch.bind(this))// this.onTouch.bind(this)两次传递的是不同对象,内部

2020-10-25 17:45:11 155

原创 vue中ref和$refs用法详解

一、基本概念Vue中的ref用来给元素或子组件注册引用信息,而$refs可以用来获取ref注册过的元素或组件,并调用其方法。二、基本用法用法: 子组件上定义ref=“refName”, 父组件的方法中用 this.$refs.refName.method 去调用子组件方法三、几种情况当ref用在组件上时,用$refs获取到的的是组件实例。<template> <div id="app"> <Home ref="test" /> </div&

2020-10-18 10:58:20 2383 1

原创 leetcode q2 两数相加(考查链表)

q2题目描述:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807题解:首先创建一个节点,判断l1 和 l2 是否为空,

2020-09-27 17:27:17 116

原创 leetcode有关二分法题目(使用JavaScript题解)

q35. 搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。可以假设数组中无重复元素。题解:本题使用二分法,先设定左侧下标left,为0,和右侧下标right,为数组长度减一。根据left和right算出mid,然后判断目标值和数组最中间的值的大小,如果目标值大,则缩短查找区间为[mid+1,right],所以此时让left = mid+1,如果目标值小,则可缩短查找区间为[left,mid-1],此时让right =

2020-09-26 15:03:54 196

原创 前端实现路由的两种方式(hash和history)

前端实现路由主要有两种方式:第一种:通过location.hash实现前端路由hash是指url中#后面的部门,这部分在服务器会被自动忽略,但是在浏览器中可以通过location.hash来获取。此方式主要是用到了onhashchange事件,这个事件可以监听url中的hash值变化,以此来进行一些DOM的切换操作。onhashchange事件的触发条件有:a、改变url地址,在最后面增加或改变其hash值b、改变location.href或location.hashc、点击带有锚点的链接d、

2020-09-07 22:08:52 3009

原创 less基本语法笔记

1、less中的注释:以//开头的注释,不会被编译到css文件中以/**/包裹的注释会被编译到css文件中2、less中的变量:a、使用@来声明一个变量:例 @red:redb、作为普通属性值来使用:直接使用@redc、作为选择器和属性名使用:#@{selector}的形式d、作为url:@{url}e、变量是延迟加载的3、less中的嵌套规则:a、基本嵌套规则b、&的使用4、less中的混合:混合就是将一系列属性从一个规则集引入到另一个规则集的方式a、普通混合(编译到原

2020-08-25 21:40:27 329

原创 Promise学习笔记(使用详解)

一、promise是什么?总体来说:Promise就是JS中进行异步编程的新的解决方案。具体来说:从语法上看,Promise是一个构造函数;从功能上看,promise对象用来封装一个异步操作并可以获取结果。二、promise的状态(⭐⭐⭐⭐⭐)1、初始状态为pending(未决定),pending可变为fulfilled(履行)2、pending可变为rejected(拒绝)注意:一个promise对象只能改变一次,无论变为成功还是失败,都会有一个结果数据。成功的数据一般会称为value,失败的

2020-08-19 15:02:32 410

原创 Vue中keep-alive的使用详解

1、概念:keep-alive是Vue的内置组件,当它包裹动态组件时,会缓存不活动的组件实例,而不是销毁。2、作用:用来缓存组件,避免多次加载相同的组件,减少性能消耗,提高用户体验。3、使用方式:方式一:在App.vue中使用keep-alive标签,表示缓存所有页面 <div id="app"> <keep-alive> <tar-bar></tar-bar> <div class="container">

2020-08-16 09:12:05 22876

原创 JavaScript关于事件的兼容性问题及解决方法

1、事件对象本身:标准浏览器是发生时自动给方法传一个实参,IE是全局的window.event解决方法:e = e || window.event2、事件源:标准浏览器是e.target,IE下是e.srcElement,解决办法是:let target = e.target || e.srcElement3、DOM二级事件绑定:标准浏览器是element.addEventListener,IE下是element.attachEvent,解决办法是通过判断:if(ele.addEventListe

2020-08-14 17:41:36 1349

原创 防抖节流基本原理及实现

1、防抖:防抖是指在事件触发n秒后再执行回调,如果在n秒内再次被触发,则重新计算时间。(就是在触发某个事件后,在下一次触发之前,中间的间隔时间如果超过设置的时间才会发送请求,一直触发就不会发送请求)实现代码如下:// func代表一个函数,里面可能会频繁发生回调或ajax请求,delay表示隔多少秒触发才触发,immediate表示是否立即执行,可传true或false,默认falsefunction debounce(func,delay,immediate) { // result表示返回

2020-08-07 17:25:01 25251 1

原创 vuex中四个核心特性及基本使用

一、Vuex概述vuex是实现组件全局数据管理的一种机制,可以方便组件之间的数据共享。二、vuex的作用1、能够在vuex中集中管理共享的数据,便于开发和后期进行维护2、能够高效实现组件之间的数据共享3、存储在vuex中的数据是响应式的,当数据发生改变,页面中的数据也会同步更新三、Vuex中的核心特性1、State:用于提供唯一的公共数据源,所有共享的数据都要放到Store中的state中存储。在组件中访问state的方式有两种:a、使用this.$ store.state.全局数据名称,

2020-07-28 15:27:20 1294

原创 跨域三种常用解决方案

一、什么是跨域请求?所谓跨域请求,就是指当前发起请求的域与该请求指向的资源所在的域不一致。二、什么是同源策略?同源策略是浏览器的核心基础安全策略。如果少了同源策略,浏览器很容易受到XSS,CSFR等攻击。所谓同源是指协议,域名和端口号均相同,任何一个不同都是跨域。三、解决方案1.JSONP原理是Ajax存在跨域问题,但是script标签不存在这类问题,所以利用script标签可解决跨域问题。注意,JSONP只支持get方式,有一定的局限性和安全问题。实例代码如下:这是html页面,由于loca

2020-07-26 12:00:39 221

原创 有关闭包小结

由于js的作用域链规则,函数内部能够访问到函数外部的数据,但在函数外部,无法访问函数内部的数据。所以,为了能访问到函数内部的数据,闭包产生了。闭包的定义: 是指有权访问另一个函数作用域中的变量的函数。这么说有点晦涩,按我的理解,闭包就是一个能在外部访问其他函数的局部变量的函数。闭包的产生条件:1、嵌套函数2、内部函数引用外部函数的变量闭包实例: function fn() { var num=10; function fun() { va

2020-07-22 09:48:18 203

原创 js实现四种常见排序算法

1、插入排序:主要思想,将左侧序列看成一个有序序列,每次将一个数字插入该有序序列。插入时,从有序序列最右侧开始比较,若比较的数较大,后移一位。var insertSort = function(arr){ for(let i = 0;i<arr.length;i++){ // 将一个值看为最小值 let min =arr[i] let j // 将这个最小值循环与左侧的值进行比较,保证左侧数据是有序的 for(j= i - 1; j>=0; j--){ // 如果m

2020-07-18 16:21:38 1185

原创 flex布局有关属性整理

一、flex容器属性有:flex-direction:设置主轴方向,可设置的属性值有a. row:表示横向排列,从左至右b. row-reverse:表示横向排列,从右至左c. column:表示纵向排列,从上至下d. column-reverse:表示纵向排列,从下至上排列flex-wrap:设置一条轴线排不下如何换行,属性值有a.wrap:内容超过后换行b.nowrap:不换行,总是在一行显示c.wrap-reverse:换行后有两行,reverse就是把两行的排列顺序倒过来3.j

2020-07-17 22:43:07 261

原创 仿移动端bilibili项目总结

一、项目总体功能介绍二、关于各功能板块重点笔记1、登录功能页面如上图所示,使用flex+vw布局,可以下载Px to Rwd插件,使用快捷键快速将px转换为vw,快速实现屏幕适配。由于页面布局和注册页面基本一致,可将其抽离成一个组件,用于复用。首先将顶部信息抽离成组件,顶部文字信息可通过props父组件向子组件传值显示,顶部布局组件具体代码如下,登录信息也可抽离成组件,这里输入框使用vant框架实现,下载vant,在main.js中引入后,可在组件中使用。输入框组件在登录页面引入组件,

2020-07-16 23:47:15 1346 1

原创 随时记笔记:v-model实现原理

v-model仅仅是一个语法糖。<input type="text" v-model="msg" />上面一行代码是v-model非常常用的一种形式,它等同于下一行代码,就是下一行代码的语法糖。<input v-bind:value="msg" @input="msg=$event.target.value" />所以,实际上v-model的实现,第一步是通过v-bind绑定value值,第二步通过触发input事件,传递数据。v-model在组件中使用,如下图代码所示

2020-07-03 16:01:56 222

原创 随时记笔记:实现CSS垂直居中

方法一:子绝父相,子盒子top,left都给50%,再设置margin-top,margin-left为盒子宽高的一半(负).father{ position:relative;}.father .son{ position:absolute; top:50%; left:50%; width:100px; height:100px; margin-left:-50px; margin-top:-50px;}方法二:子绝父相,子盒子top、left都50%, 用transform

2020-06-23 17:30:33 74

原创 随时记笔记:对js执行机制Event Loop的理解

Event Loop是什么?Event Loop是一个执行模型,在不同的地方有不同的实现。宏任务和微任务是什么?宏任务:也叫macrotask,在JavaScript中,一些异步任务会进入macrotask队列中,等待被调用,常见的异步任务有:setTimeout,setInterval。微任务:也叫microtask,有Promise,process.nextTick 。了解JavaScript代码执行的具体流程:1、执行全局script同步代码2、全局script同步代码执行完之后,调用栈

2020-05-31 16:35:19 172

原创 随时记笔记:对JavaScript继承的理解

1、原型链继承:以下代码定义了两个类型,Father和Son,每个类型都有其属性和方法,Son通过创建Father实例,并将其赋值给Son.prototype继承了Father。使用原型链继承会共享所有引用类型值,因此很少单独使用原型链继承。 function Father(){ this.hobby = ['read','run'] this.property= true } Father.prototype.sho

2020-05-31 14:44:59 192

原创 记笔记:git在项目中的基本命令

1、创建并切换分支:git checkout -b 分支名字2、查看所有分支:git branch

2020-05-15 14:51:58 98 1

原创 深刻理解JavaScript闭包、原型、this指向

1、this指向问题a、普通函数,谁调用就指向谁。注意,严格模式下全局作用域的this是undefined。 function fn() { console.log('普通函数的this'+this); } fn(); //实际是window.fn() 所以这里指向windowb、对象的方法 var o ={ sayHi:function () { console.log('对象方法的this:'+this);

2020-05-10 21:59:25 221

原创 各浏览器获取滚动条高度

Firefox:document.documentElement.scrollTop或者$(window).scrollTop()chrome:document.body.scrollTopSafari:document.body.scrollTopIE9及以上:document.documentElement.scrollTop

2020-03-08 11:00:35 423

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除