漆黑菌的博客

也许面向工资编程才是先进生产力的发展方向...

记录一波webstorm常用样式设置

webstorm常用样式设置 在插件商店下载material theme和atom-material-icons(新版icons插件被单独拆出)插件 在设置中搜索theme找到material theme选项,选择monokai pro主题,主题颜色为#80CBC4。contrast mode打开,high contrast关闭。 在设置中搜索font找到color schem...

单行文字超出隐藏配合图标

需求 描述标题文字在一个动态宽度的div中,文字后面要有一个提示用的图标。要求文字长度溢出后,显示省略号…,但是不要影响提示用图标的显示。 原理 利用了inline-block可以多个元素共存于一行,而且可以设置最大宽度的特性,并在文字和整行宽度之间留出图标所需的空余空间即可。 实现方式 CSS3实现:通过max-width使文字宽度动态且不超出,这样图标就可以自然跟在文字后面。利用ca...

迁移系统到固态硬盘踩坑

准备工具 一个用来准备装PE的U盘,如果要装镜像的话可能需要一个大点的,理论上这个是用不到的。知乎上推荐了一个U盘启动制作软件微PE工具箱下载地址:http://www.wepe.com.cn/download.html,之前U盘装系统有问题似乎就是因为用的第三方U盘启动制作软件自己加了私货。分区工具采用傲梅分区助手官方网站:https://www.disktool.cn/,这个软件在启动U...

jQuery源码阅读中学到的豆知识

用+号和!号来启动自执行函数 例: +function ($) { 'use strict'; var version = $.fn.jquery.split(' ')[0].split('.') if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == ...

事情不是你想象的那样

event事件的三种不同“阻止”方法

event事件对象的标准方法 在翻阅MDN研究怎么更改事件触发对象的时候,阅读了一下MDN中有关event事件对象的部分。发现这个对象有三个标准方法,分别是event.preventDefault、event.stopImmediatePropagation、event.stopPropagation。 event.preventDefault preventDefault方法比较熟悉,因...

一个移动端弹框组件滚动穿透的解决方案

业务场景描述 组内有一个自制的vue弹框组件,就是出一个弹框然后周围都是半透明黑色遮罩的那种。之前的业务场景中弹框中的内容都不需要滚动,因此滚动穿透问题并没有得到重视,然后这个坑我就掉进去了……前人挖坑后人跳坑(确信。组件中原本的解决方案是在组件外层添加一个事件监听,阻止默认的touchmove事件冒泡,这样弹框中需要滚动的部分也不能滚动了,而且好像在iOS上也对穿透到body滚动的问题没啥...

实用webpack插件记录

webpack-bundle-analyzer webpack-bundle-analyzer可以看到项目各模块的大小,可以按需优化。官方文档: https://www.npmjs.com/package/webpack-bundle-analyzer,中文简单介绍:https://segmentfault.com/a/1190000012220132 ip 可以直接生成通过本地IP地址访...

基于mocha的简单定时api测试

业务场景描述 新入职公司后,所在小组有个问题。后端api开发进度有时会和说好的不一样,所以前端会有人在后端说通了实际上没通的接口上浪费时间。于是老大就让我写个小工具,下次后端说接口好了的时候跑一下,看看是不是真的好了。 思路 这个需求主要可以分成两部分,一个是定时任务,一个是api测试。 定时任务 其实Linux和Windows都有完善的系统级定时任务功能,但是团队有用Mac os的也有...

一道有关闭包和变量提升的前端面试题

题目 var a = 10; (function () { console.log(a) a = 5 console.log(window.a) var a = 20; console.log(a) })() 答案 undefined,10,20 详解 本题中有两个作用域,...

JavaScript的节流与防抖函数

防抖 function debounce(fn) { var time = null return function () { window.clearTimeout(time) time = setTimeout(function () { fn.call(this,ar...