自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

高先生的猫

求知若渴,虚心若愚。QQ:53365381 WX:i-misu

  • 博客(1145)
  • 收藏
  • 关注

原创 60+Git常用命令行

「备忘录」60+Git常用命令行Git 的命令实在是太多了,有的小伙伴就说了,我可以用客户端(Source Tree、Gitkraken、tortoiseGit)它们不香吗?通常情况下,一些简单操作是香的。但是建议你不要越过命令行这座山而直接去使用 GUI。(而且强烈建议学习一下 Git 的原理)先不论 GUI 是否支持复杂的操作,当你在实际工作中遇到问题的时候,可能你无法找到 GUI...

2020-05-07 10:18:34 94

原创 深入讲解vue插槽slot与slot-scope

写在前面vue中关于插槽的文档说明很短,语言又写的很凝练,再加上其和methods,data,computed等常用选项使用频率、使用先后上的差别,这就有可能造成初次接触插槽的开发者容易产生“算了吧,回头再学,反正已经可以写基础组件了”,于是就关闭了vue说明文档。实际上,插槽的概念很简单,下面通过分三部分来讲。这个部分也是按照vue说明文档的顺序来写的。进入三部分之前,先让还没接触过...

2020-04-30 10:12:32 175

原创 dayjs 入门及常用方法

dayjs是一个轻量的处理时间和日期的 JavaScript 库官方githubhttps://github.com/iamkun/dayjs中文使用文档https://github.com/iamkun/dayjs/blob/master/docs/zh-cn/API-reference.mddayjs好处???? 和Moment.js有着相同的API和模式 ???? 不可变、持久...

2020-02-21 14:12:51 695

原创 前端如何实现黑夜模式

深色模式为目前网络发展的一大趋势,可以看到大量的网站为了提高网站的体验都添加了深色模式。深色模式在光线不足的情况下看起来不会那么刺眼,能够很好的保护我们的眼睛。在这边文章中主要讲如何使用CSS和JS实现深色模式和浅色模式的任意切换分析需求假设有这么一个页面,我们需要自由切换深色模式和浅色模式。那么就需要在不同模式使用不同的css,这里可以通过两种方式一种是直接引入不同的css文件,另外一种通过更改css变量值的方式进行更改样式,下面是浅色模式的截图具体实现首先定义浅色模式的变量名和变量值

2020-11-20 10:46:44 25

原创 js解码用 base-64 编码的字符串数据。

根据给定的 base-64 编码的字符串创建一个 Buffer,并且使用 Buffer.toString('binary') 来返回解码后的字符串。const atob = str => Buffer.from(str, 'base64').toString('binary');复制代码atob('Zm9vYmFy'); // 'foobar'...

2020-11-20 10:37:48 15

原创 Vue中用的比较多的几个AP

1.数据:vue.set 和vue.delete在Vue2.x中,当一个Vue实例创建好了以后,如果想要后续给该实例的某一个data添加属性,该属性是不会触发视图更新的,解决方法是使用Vue.set或者vm.$set方法添加指定属性。例如<template> <div> <p>foo.a is {{foo.a}}</p> <p>foo.b is {{foo.b}}</p> &lt..

2020-11-20 10:34:53 16

原创 检查数组中的所有元素是否相等。

使用 Array.prototype.every() 来检查数组中的所有元素是否都和第一个元素一样。 使用严格的比较运算符来比较数组中的元素,这不会考虑 NaN 的自不相等。const allEqual = arr => arr.every(val => val === arr[0]);allEqual([1, 2, 3, 4, 5, 6]); // falseallEqual([1, 1, 1, 1]); // true...

2020-11-20 10:32:49 16

原创 js将华氏度转为摄氏度

遵循C = (F - 32) * 5/9的转换公式。const fahrenheitToCelsius = degrees => (degrees - 32) * 5 / 9;fahrenheitToCelsius(32); // 0

2020-11-20 10:31:16 10

原创 js检查是否给定的元素是聚焦的

使用 Document.activeElement 来决定是否给定的元素是聚焦的。const elementIsFocused = el => (el === document.activeElement);elementIsFocused(el); // true if the element is focused

2020-11-20 10:30:39 6

原创 js将角度从度转为弧

使用Math.PI和度转为弧度的公式来将角度从度转为弧。const degreesToRads = deg => (deg * Math.PI) / 180.0;degreesToRads(90.0); // ~1.5708

2020-11-20 10:28:56 9

原创 js 获取当前的url

返回当前的 URL。使用 Window.location.href 获取当前的 URL。const currentURL = () => window.location.href;复制代码currentURL(); // 'https://www.google.com/'

2020-11-20 10:28:01 7

原创 js将摄氏温度转为华氏度

将摄氏温度转为华氏度。遵循转换方程 F = 1.8 * C + 32。const celsiusToFahrenheit = degrees => 1.8 * degrees + 32;复制代码celsiusToFahrenheit(33); // 91.4

2020-11-20 10:26:39 6

原创 Nginx禁止html等缓存

在本地开发的时候,经常会碰到缓存引起的莫名其妙的问题,最暴力的方式就是清掉浏览器的缓存,或者使用Ctrl + F5,Shift + F5强制刷新页面。 有时候按了好几下,缓存还是清不掉,只能暂时禁用浏览器静态资源缓存了。Nginx禁止缓存配置如下:location ~.*\.(js|css|html|png|jpg)${ add_header Cache-Control no-cache;} ...

2020-11-19 15:47:05 25

原创 图片加载失败后CSS样式处理最佳实践

一、传统的图片异常处理<img>如果因为网络或者跨域限制等原因无法正常加载,在默认情况下会显示浏览器默认的“裂开”的图片效果,如果设置了alt属性值,则alt属性对应的内容也会一并显示。例如:<img src="//www.zhangxinxu.com/zxx.ico" alt="鑫空间鑫生活">例如Chrome浏览器下的效果截图如下所示:可以看到图片加载异常之后的视觉效果实在是太粗糙了,程序员可忍设计师不可忍,因此,为了更好的视觉效果,实际项目开发中...

2020-11-19 15:46:21 21 1

原创 css设置margin-top失效及解决办法

在web网站开发中,有时候我们给html元素设置的margin-top或margin-bottom属性,但是无效,并没有取到任何作用,这是什么原因呢?常出现两种情况:一、兄弟元素之间margin-top失效先看下面代码:<div> <div class="box1"> float: left </div> <div class="box2"> clear:both; margin-top:20px; </div...

2020-11-19 15:45:21 22

原创 css强制换行

强制换行用white-space的normal,pre-wrap,pre-line换行,即使有overflow:hidden;text-overflow:ellipsis;也不影响换行。值 描述 normal 默认。空白会被浏览器忽略。 pre 空白会被浏览器保留。其行为方式类似html中的 <pre> 标签。 nowrap 文本不会换行,文本会在在同一行上继续,直到遇到 <br> 标签为止。 pre-wrap 保留空白符序...

2020-11-19 15:44:36 8

原创 Js替换字符串的几种方法

替换字符串中的文本是JavaScript中的常见任务。本文研究几种用 replace 和正则表达式替换文本的方法。替换单个字串通常JavaScript的 String replace()函数只会替换它在字符串中找到的第一个匹配的子符:const myMessage = 'this is the sentence to end all sentences';const newMessage = myMessage.replace('sentence', 'message');...

2020-11-19 15:43:35 13

原创 前端PDF文件转图片方法

第一步:先下载pdfjs,网址:PDF下载地址,再引入到项目中,我是标签直接引用的<script src="pdfjs/build/pdf.js"></script><script src="pdfjs/build/pdf.worker.js"></script>第二步:html代码添加两行代码,一个是canvas用来绘图,一个是img用来最后展示转换后的pdf图片<body> <img :src="im..

2020-11-19 15:42:40 32

原创 npm、cnpm与yarn

npm是目前最火的包资源管理工具之一。为什么我们需要一个包管理工具?因为我们在Node.js上开发时,会用到很多别人写的JavaScript代码。如果我们要使用别人写的某个包,每次都根据名称搜索一下官方网站,下载代码,解压,再使用,非常繁琐。于是一个集中管理的工具应运而生:大家都把自己开发的模块打包后放到npm官网上,如果要使用,直接通过npm安装就可以直接用,不用管代码存在哪,应该从哪下载。更重要的是,如果我们要使用模块A,而模块A又依赖于模块B,模块B又依赖于模块X和模块Y,npm可以根.

2020-11-19 15:40:22 9

原创 Js如何截取字符串最后一位

方法一:运用String对象下的charAt方法charAt() 方法可返回指定位置的字符。str.charAt(str.length – 1)请注意,JavaScript并没有一种有别于字符串类型的字符数据类型,所以返回的字符是长度为 1 的字符串方法二:运用String对象下的substr方法substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。str.substr(str.length-1,1)重要事项:ECMAscript 没有对该方..

2020-11-19 15:39:28 30

原创 移动端1px解决办法

最近在写移动端 H5 应用,遇到一个值得记录下来的点。现在从它的由来到实现,我们来聊一下移动端 1px,说 1px 不够准确,应该说成 1物理像素。在讲原理之前,先跟大家说一个概念,就是设备像素比DPR(devicePixelRatio)是什么DPR = 设备像素 /css像素(某一方向上)这句话看起来很难理解,可以结合下面这张图(1px在各个DPR上面的展示),一般我们h5拿到的设计稿都是750px的,但是如果在DPR为2的屏幕上,手机的最小像素却是要用2 * 2px来进行绘制,这也就导...

2020-11-19 15:38:33 8

原创 高阶ts内置泛型帮助类型

extends可以用来继承一个class,interface,还可以用来判断有条件类型(很多时候在ts看到extends,并不是继承的意识)示例:T extends U ? X : Y;上面的类型意思是,若 T 能够赋值给 U,那么类型是 X,否则为 Y。原理是令 T' 和 U' 分别为 T 和 U 的实例,并将所有类型参数替换为 any,如果 T' 能赋值给 U',则将有条件的类型解析成 X,否则为Y。 上面的官方解释有点绕,下面举个栗子:type Words = 'a'|'

2020-11-19 15:37:03 21

原创 前端媒体查询 常见电脑屏幕分辨率

1024*600 (常见8.9寸电脑使用)1024*768(常用10.4、12.1、14.1、15寸电脑使用)4:31280*1024(常用14.1、15寸电脑使用)5:41600 * 900 16:9 (非主流)1440*1050(常用15、16.1寸电脑使用)4:31600*1200(常用15、16.1寸电脑使用)4:31280*800(常见10.8、12.1、15.4寸电脑使用)16:101366*768(常见15.2寸电脑使用)15:10 (主流)1280*854(不常见)16:9

2020-11-04 09:00:53 67

原创 echarts x轴最后一项显示不全的解决办法

xAxis: { axisLabel: { showMaxLabel: true } }

2020-11-03 11:30:07 104

原创 Vue3.0中的 proxy详解

Proxy 简介Proxy 可以理解为,在操作对象时要先经过一层“拦截器”。访问对象时,都必须先经过这一层拦截。这就意味着你可以在拦截里做各种骚操作。 比如,整一个 Proxy 的对象用来对后端返回的数据类型进行类型校验,不通过直接 throw new Error('大兄弟,说好的对象,你给我返回一个数组?!'),记得搭配 try catch 食用,风味更佳!让我们先看看怎么使用 Proxy.const p = new Proxy(target, handler);target: 要代理的

2020-11-03 10:34:18 139

原创 Js替换字符串的几种方法

替换字符串中的文本是JavaScript中的常见任务。本文研究几种用 replace 和正则表达式替换文本的方法。替换单个字串通常JavaScript的 String replace()函数只会替换它在字符串中找到的第一个匹配的子符:const myMessage = 'this is the sentence to end all sentences';const newMessage = myMessage.replace('sentence', 'message');...

2020-11-03 10:30:32 42

原创 ECMAScript 2020新特性_了解ES11新增9个新特性

ECMAScript 2020 是 ECMAScript 语言规范的第11版。自1997年出版第一版以来,ECMAScript 已发展成为世界上使用最广泛的通用编程语言之一。ES2020(ES11) 引入了以下新特性:String 的 matchAll 方法 动态导入语句 import() import.meta export * as ns from 'module' Promise.allSettled 一种新的数据类型:BigInt GlobalThis Nullish coal

2020-10-26 14:39:54 24 1

原创 css设置margin-top失效及解决办法

在web网站开发中,有时候我们给html元素设置的margin-top或margin-bottom属性,但是无效,并没有取到任何作用,这是什么原因呢?常出现两种情况:一、兄弟元素之间margin-top失效先看下面代码:<div> <div class="box1"> float: left </div> <div class="box2"> clear:both; margin-top:20px; </div> &lt

2020-10-26 14:35:53 102 1

原创 npm、cnpm与yarn

npm是目前最火的包资源管理工具之一。为什么我们需要一个包管理工具?因为我们在Node.js上开发时,会用到很多别人写的JavaScript代码。如果我们要使用别人写的某个包,每次都根据名称搜索一下官方网站,下载代码,解压,再使用,非常繁琐。于是一个集中管理的工具应运而生:大家都把自己开发的模块打包后放到npm官网上,如果要使用,直接通过npm安装就可以直接用,不用管代码存在哪,应该从哪下载。更重要的是,如果我们要使用模块A,而模块A又依赖于模块B,模块B又依赖于模块X和模块Y,npm可以根.

2020-10-26 14:34:44 16 1

原创 原生JS找出所有的水仙花数

水仙花数:一个三位的整数,个、十、百的立方和等于该整数(例:153=1*1*1+5*5*5+3*3*3)步骤构思:1、依次循环遍历输出所有三位数,取整2、设置条件判断3、往数组存储输出方法一:直接数字 var arr = [] //所有的水仙花数就是个集合数组 for (var i = 100; i < 1000; i++) { var a = i % 10; //取出个位数字 var b = parseInt(i % 10.

2020-10-09 10:50:11 60

原创 微信小程序生命周期、页面生命周期、组件生命周期

1. 生命周期 App(全局)位置:项目根目录app.js文件App({ onLaunch (options) { // console.log('小程序初始化') }, onShow(options) { console.log('监听小程序启动或切前台') }, onHide() { console.log('监听小程序切后台') }, onError(msg) { console.log('错误监听函数') },

2020-09-30 15:06:20 73 1

原创 小程序的版本识别 正式版、体验版、开发版

let miniVersion = __wxConfig.envVersion;let miniVersion_zw = '';console.log('小程序版本' + miniVersion)if (miniVersion == 'develop') { miniVersion_zw = '开发版';} else if (miniVersion == 'trial') { miniVersion_zw = '体验版';} else if (miniVersion == 'releas.

2020-09-30 14:58:03 94

原创 VUE slot插槽的使用和使用场景

1.插槽是啥啊??我先简单的说一个场景吧,来理解一下插槽和它的使用场景,比如哈!有一个模块,除了一个小地方显示的东西不同,其他的内容都是一样的!如下图,你此时此刻想怎么写这个需求呢?1.有几个状态写几个组件???2.直接写在页面中??(如果模块复杂,相当不好维护)3.?复制代码思考完了哈?好,不知道你的想法是啥!!不重要,我们来用插槽! 只写一个子组件和多个父组件,练习写一个父组件就好!多用几次子组件就好!(这里我直接用新的写法,什么废弃的东西都不说了,没意义!...

2020-09-30 13:56:32 206

原创 16个非常有用的CSS伪选择器

这篇文章鼓励构造 UI 时使用更多纯css和更少的js。熟悉所有的css是实现这个目标的一种方法 —— 另一种是实施最佳实践和尽可能的减少代码。1、::first-line | 选择首行文本这个伪元素选择器选择换行之前文本的首行。p:first-line { color: lightcoral;}2、::first-letter | 选择首字母这个伪元素选择器应用于元素中文本的首字母。.innerdiv p:first-letter { c...

2020-09-29 14:38:13 44 1

原创 Js移动端自适应代码_rem布局

rem 是css的长度单位,它是相对于 <html> 元素的 font-size 的相对值。假设html{ font-size: 20px; },那么 1rem 就等于 20px。js代码rem布局非常简单,首页你只需在页面引入这段原生js代码就可以了(function(doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationchange' in window ?...

2020-09-29 14:33:49 41

原创 10个快速优化Web性能的手段

优化网站的性能需要花费大量的时间,并且如果要根据自己的需求进行优化则花费的时间可能更多。在本文中,我将向你展示 10 个快速优化 Web 性能的手段,能在 5 分钟内用于你自己的网站。这些捷径对你的代码库或服务器配置几乎没有什么影响。它们简单且容易实现,无需详细了解它们的原理,并且能够对你的性能产生重大影响。1. 使用文本压缩使用文本压缩,可以最大程度地减少通过网络传输的字节数。有几种压缩算法。 gzip 是最受欢迎的,但 Brotli 是一种更新甚至更好的压缩算法。如果要检查服务器是否支.

2020-09-29 14:33:08 63

原创 ES6尾调用优化

ES6包含了一个性能领域的特殊要求。这与一个涉及函数调用的特定优化形式相关:即尾调用优化(Tail Call Optimization,TCO)。简单地说,尾调用就是一个出现在另一个函数“结尾”处的函数调用。这个调用结束之后就没有其余事情要做了(除了可能要返回结果值)什么尾调用举个例子,下面是一个非递归的尾调用:function foo(x) { return x}// 尾调用function bar(y) { return foo(y + 1)}// 非尾调用f.

2020-09-29 14:31:34 25

原创 uni-app开发经验分享: 多页面传值的三种解决方法

开发了一年的uni-app,在这里总结一些uni-app开发中的问题,提供几个解决方法,分享给大家:问题描述:一个主页面,需要联通一到两个子页面,子页面传值到主页面,主页面更新问题难点:首先我们需要一个逻辑模型(这里随便画了一个)通过这个模型,我们可以看到一个问题,子页面的内容怎么传回主页面,怎么让这个传回的方式更安全有效,这也是这个问题的难点,我总结了三种解决方法,在这里分享给大家:第一种:url传值顾名思义,就是利用页面的url方法来传值,具体操作逻辑如下:主页面:用o.

2020-09-29 14:30:41 125

原创 解决-webkit-box-orient: vertical在webpack打包后丢失问题

问题描述在项目中需要使用多行文本溢出显示省略号(…)的时候,首先想到的css如下:overflow : hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;该方式比较合适WebKit浏览器或移动端(绝大部分是WebKit内核的)浏览器。但是在现在一些框架中如(vue,react项目中使用),会发现本地正常,打包线上后,该属性丢失。因为

2020-09-29 14:29:37 29

原创 Js实现canvas截取视频第一屏为预加载图片

首先需要新建video标签,用于放置需要截取的视频文件,然后js获取video标签并监听它的 loadeddata 事件,这里简单说下video的事件有哪些?为什么使用loadeddata来获取第一帧。video的事件video.addEventListener('loadeddata', consoleString.bind(video, 'loadeddata')) // 当前帧加载完毕video.addEventListener('loadedmetadata', consoleSt.

2020-09-29 14:27:58 60

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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