广告
广告
广告
element的dialog弹窗,默认不是垂直居中的,只是水平居中,但是他有一个很好的地方,就是当窗口的高度小于dialog的高度时,他会有滚动条,并且可以完整的显示dialog,算是一个非常不错的兼容方式。但是当我们对dialog进行css调整为垂直居中时,往往会使用下面两种样式:绝对定位:.el-dialog__wrapper { position: relative; .el-dialog { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -...
className方式我自己之前学es5的时候,老师教我们是用的是className属性,他是dom的一个属性,返回元素的class值,兼容性可以说是通杀吧,所有浏览器都是支持的,但是,他是一个string操作。document.getElementById('myid').className; 他会返回一个string的值(空的话返回empty string,empty string===“”,length为0),而class的设置,他是需要空格的:class="class1 class2",当我们添加一个新的class时就不得不考虑空格的问题:...
饿了么的侧边栏菜单,官方就是这样,当一个子菜单展开后,点击另一个无子菜单按钮,并不会收缩已展开的子菜单。然后被强迫修改,好嗨哟!效果图不废话,上教程!教程[hide]element给el-menu提供了一个手动关闭和打开菜单的方法,但是需要通过ref获取vue组件实例,通过该实例触发方法。但是首先我们要明白要处理的问题:点击无子菜单按钮折叠已展开菜单,那么如何判断哪个菜单是展开的,是我们首先要解决的问题。判断哪个菜单是展开的在for循环遍历出这个菜单时,其实是有区分有无子菜单的。所以我们可以直接给有子菜单的元素添加click事件<template> <el-menu...
通过api获取的数据,往往不一定是布尔值,在后端存放的数据中,大部分是都是0和1,但是饿了么的 Checkbox 多选框 组件,v-modal绑定的,虽然他文档上显示可以是string,number,但是实际上v-modal只能布尔值。他还有一个属性checked,checked可以使用三元判断<el-checkbox :checked="status===1"></el-checkbox>但是,他有一个致命的缺陷,如果数据源更新了数据,他不会动态变化,可能是因为我把他丢在的table组件里面的原因,如果想让他变化,只能手动点击,或者重新渲染。...
面包屑导航在网站的使用中是常常出现的,也是一个很常用的功能,最近在项目的需求里面,要求面包屑导航除了可以进行路由跳转,还在跳转时保留路由的参数,也就是说:路由a有参数1,a进入到b路由,再通过面包屑导航回到a,这个参数1要依旧存在才行。这就把我给弄蒙蔽了,这咋整?想了好久,只能这样做了:教程[hide]首先,面包屑导航必须要有规范要求,在这个规范内才能生成面包屑导航,正所谓无规矩不成方圆。路由必须存在name和title两个属性,才能生成面包屑面包屑有面包屑独有的属性配置,该配置权限高于普通属性基本上遵循这两点,我们可以配置一个路由了:export default [ { p...
本想着有木有人写好现成的组件,搜索了下,并没有,于是只能用better-scroll插件来做了。先看下效果图:教程具体的详细内容就不多说了,直接讲一下他的实现要求。最外围一个wrap容器,用于初始化的,他的宽度自己设置,然后overflow: hidden;必须设置,你也可以只设置x轴。wrap下面是一个宽度容器,content,他的宽度必须是他下面子元素宽度之和,比如有3个子元素,子元素的宽度是200,content就是3*200的宽度content容器下面就是具体的子元素了,尽量不用用margin做间隔,因为js获取margin不是很方便,可以多套个div元素,用padding来做分...
最近看群友搞了个灯笼效果,加上接近新年,所以我也来搞一个,在原来的基础上,我改用一个js文件搞定,省的总是粘贴html,css,太麻烦了。效果图文件说明源码文件夹里是源码,有修改需求可以改动这个文件es5里面是已经babel转换好的文件,其中有一个压缩和未压缩的,看自己需要引入任意一个文件即可。使用说明我们需要在的前面,添加这段代码<script id="denglong" type="text/javascript" src="https://cdn.jsdelivr.net/gh/mulingyuer/web-denglong/...
vue项目,如果要使用轮播,能做动画的只有vue-awesome-swiper了,除非牛人自己造轮子,但是vue-awesome-swiper是需要swiper的支持,而现在swiper已经出到6了,swiper的官网明确表示6只能支持vue3.0,而且官网没有旧版本的api文档,这就表示,目前主流的2.0项目,想用它真的就只能瞎子过河,摸不着边了。而且swiper的动画,是需要魔改代码的,因为动画的那个js文件需要改动,然后动画使用的animate.css也因为版本大改,导致使用起来越发的摸不着头脑,百度到的都是旧的教程,为此我特意研究了下,终于是“完美”使用了,为此出个教程。废话不多...
本来我是不怎么使用这个东西的,因为他报错实在是太烦了,但是当项目接手的人多了以后,代码可能会变得不稳定,每个人都有每个人的写法,也会有参差不齐的情况,有好有坏。有时候员工A创建了变量1,员工2修改后,变量1可能就不需要了,但是没有删除,因为代码不熟悉的缘故,往往会造成多余的代码出现,对后期维护非常不便,所以我想着能有一个基本的设定需求,在某些地方能有提供,甚至限制。所以我在初始化vue项目的时候选择的eslint的,初始化的时候有四个选项,我就选择的最后一项,也是试水。使用了eslint后遇到了几个问题:引入的第三方文件也被检测了,按道理那部分是不用检测处理的怎么配置规则这里就对应的说下...
经常遇到这种情况,不小心上传了某个文件,这个文件是不需要上传到远程仓库,很头疼。本地的又不想删除,想着直接删除远程,百度半天都没找到好用的,最后问了下群友,给了个教程链接,我研究了下,大概明白怎么回事。首先为了防止本地的再次被上传,需要配置本地白名单,白名单的话,以vue项目为例子,在项目根目录有一个.gitignore文件,没有就自己创建一个,然后里面直接填目录或者文件名就行了。/dist /xxx.js本地白名单之后,以后git上传都不会上传该文件。现在我们要处理远程仓库的文件首先我们需要删除git在缓存中的文件git rm --cached config.js // 删除con...
一开始被要求这个功能我是一脸蒙蔽的,因为写了这么多vue项目,没有哪个项目要求这么做,况且,作为一个无刷新的前端项目,突然来个刷新,让我有点措不及防。中午和同事吃饭的路由讨论了此事,他说了一个点,让我想到,说不定可以这么做,于是下午百度了一些文章,心里有了思路,顺着这个思路,成功搞定这个需求。思路相同的路由,是不允许重复跳转的,所以不会触发路由守卫,想通过路由守卫处理这条路走不通。有人说通过this.$router.go(0)可以实现页面刷新,我测试了下,确实是页面刷新了,但是我要的是路由页刷新,路由页可能是某个区域,而不是整个网页,所以该方案也行不通。最终只能选择v-if和router...
饿了么的input组件只是在v-modal绑定的时候有一个.number修饰符,使用这个修饰符确实可以只输入数字,但是输入的是整数,无法输入小数,而且字符串还是可以输入,还可以负数,很尴尬。如果只想让它输入数字,小数,甚至更复杂的判断,上面的方式是不行的。网上的处理方式<el-input-number v-model="num" oninput ="value=value.replace(/[^0-9.]/g,'')"></el-input> 大概就是给他添加一个老版本的事件,行内事件进行replace替...
属性的简写es6允许对属性进行简写,可以直接使用变量,变量名直接成为了属性名。var a = "hello"; var b = {a}; //等同于 var b = { a:a }属性里的方法也可以简写var a = { b(){...} } //等同于 var a = { b: function(){ ... } }在CommonJS模块输出变量时,也就是node模块导出时,这种简写就显得十分方便,我们直接导致一个对象,对象里面使用简写。var a = {}; var b = {}; module.exports = {a,b}而属性的赋...
扩展运算符console.log(...[1,2,3]); //1,2,3扩展运算符会将后面跟着的数组转换为参数序列,这种效果一般用于函数参数,数组操作里面。扩展运算符后面甚至可以接表达式,但是表达式一定要有数组抛出const arr = [...(x>0?[1]:[]),2];如果是一个空数组使用扩展运算符,则无任何效果const a = []; console.log([...a,1]); //[1]代替数组的apply方法首先要知道apply除了改变this的指向外,第二个参数是一个数组,apply会将这个数组转为序列参数。如:function test(x,y,z){ ...
最近有这么一个需求,就是后端api地址返回一个文件,这个文件是已经格式化好的,比如表格.xlsx,或者是其他文件zip这些。但是后端他加了鉴权,所以如果直接a链接访问这个接口,我们无法在头信息上添加token字段,于是这个请求被作为无效。然后我使用了axios的请求,结果返回的内容,转换为blob对象后,下载完文件就被破坏了,无法打开。这里我贴一下之前的代码。api().then(res=>{ let blob = new Blob([err]); let a = document.createElement("a"); a.href = URL.c...
修改协议最近发现axios的修改协议有个很方便的操作,就是通过create创建一个axios对象的时候,就可以直接设置上传协议了。const api = axios.create({ headers: { 'Content-Type': 'application/x-www-form-urlencoded', } }); 这样我们将协议改为了application/x-www-form-urlencoded这个协议可以上传formData对象,但是他不能上传文件,所以如果你要上传文件,需要改为这个协议:multipart/fo...
当我们给父元素设置flex布局的时候,子元素为了能够等分,常常flex-grow: 1;,但是你会发现,当里面有内容的时候,宽度就发生了变化,变得不是等分了。所以我们可以理解:flex-grow: 1其实他不是真正意义上的等分宽度,而是等分剩余宽度,而剩余宽度是总宽度减去内容宽度,再进行等分。而且这个等分甚至还是根据内容多少来等分,有的内容多,他等分还多一些。所以这就很尴尬。为此,如果想要真正的等分,就需要设置相同的width宽度。如:.value { width: 0; flex-grow: 1; }这样就行了。width的值0我感觉是最好的,如果你设置其他宽度也行,具体看自己...
最近发现没啥用,玄学,这个崩溃在项目内容很多的时候就会出现,更换了好几个版本的系统,vscdoe版本也换过,node版本也换过,找不出原因,用其他ide就不会出现这个问题,估计是锐龙cpu的问题吧,用g4560随便启用都不出问题,真是日了狗了,只能将就用,等以后版本修复了。一般这个问题有两种情况,一种是项目非常庞大,另一种就是内存泄漏,泄漏的话跟代码有关系。但是我们肯定不能直接大刀阔斧的去删代码,所以只能自己想办法了,唯一的办法就是增加node服务的内存限制。为此我们需要安装一个全局的插件:increase-memory-limityarn global add increase-mem...
不久之前,我写了一篇《element ui 侧边栏导航刷新自动展开并高亮》的文章,里面主要讲了怎么对侧边栏导航进行高亮,刷新并依旧保持高亮展开的方法。但是后来我发现我之前的那种思路有些窄了。不太适合更大型的站点开发使用。之前的方法主要讲的是:每个网页对应一个导航栏菜单,此时导航栏菜单和网页是一一对应的,所以我可以使用当前路由的name值来进行高亮。但是,如果有更复杂的情况呢?比如:我的导航菜单只显示两级,剩下的级数不显示,点击三级及以上时怎么办?虽然两个页面在路由配置里是同级路由,但是a路由点击按钮跳转到b路由,b路由有前缀条件,所以不能直接出现在导航菜单里,那么应该已经保持a路由菜单高...
最近评论